<?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>78596</bug_id>
          
          <creation_ts>2012-02-14 03:09:21 -0800</creation_ts>
          <short_desc>&lt;shadow&gt; should be rendered correctly</short_desc>
          <delta_ts>2012-03-08 03:25:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78771</dependson>
    
    <dependson>78778</dependson>
    
    <dependson>79901</dependson>
    
    <dependson>79902</dependson>
    
    <dependson>80373</dependson>
    
    <dependson>80501</dependson>
          <blocked>77503</blocked>
    
    <blocked>79197</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>gustavo</cc>
    
    <cc>hayato</cc>
    
    <cc>morrita</cc>
    
    <cc>pnormand</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>556175</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-14 03:09:21 -0800</bug_when>
    <thetext>&lt;shadow&gt; should render an older shadow subtree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558989</commentid>
    <comment_count>1</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-17 00:16:54 -0800</bug_when>
    <thetext>This will be easily done if my InsertionPoint refactoring.
In that case, &lt;shadow&gt; should be derived from InsertionPoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561821</commentid>
    <comment_count>2</comment_count>
      <attachid>128173</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-22 03:50:40 -0800</bug_when>
    <thetext>Created attachment 128173
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563954</commentid>
    <comment_count>3</comment_count>
      <attachid>128657</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-23 22:57:03 -0800</bug_when>
    <thetext>Created attachment 128657
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563992</commentid>
    <comment_count>4</comment_count>
      <attachid>128657</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 23:34:16 -0800</bug_when>
    <thetext>Comment on attachment 128657
WIP

Attachment 128657 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11603713</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564000</commentid>
    <comment_count>5</comment_count>
      <attachid>128657</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-23 23:42:51 -0800</bug_when>
    <thetext>Comment on attachment 128657
WIP

Attachment 128657 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11576739</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564003</commentid>
    <comment_count>6</comment_count>
      <attachid>128657</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-23 23:49:07 -0800</bug_when>
    <thetext>Comment on attachment 128657
WIP

Attachment 128657 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11608723</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564024</commentid>
    <comment_count>7</comment_count>
      <attachid>128657</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 00:16:53 -0800</bug_when>
    <thetext>Comment on attachment 128657
WIP

Attachment 128657 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11574752</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564050</commentid>
    <comment_count>8</comment_count>
      <attachid>128657</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-24 00:40:31 -0800</bug_when>
    <thetext>Comment on attachment 128657
WIP

Attachment 128657 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11599720</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567401</commentid>
    <comment_count>9</comment_count>
      <attachid>129394</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-28 22:56:17 -0800</bug_when>
    <thetext>Created attachment 129394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567410</commentid>
    <comment_count>10</comment_count>
      <attachid>129394</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-28 23:14:01 -0800</bug_when>
    <thetext>Comment on attachment 129394
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +

Please split this up to these three changes if possible.
This patch is simply to big.
You can use this bug as a metabug.

&gt; Source/WebCore/html/shadow/HTMLShadowElement.h:56
&gt; +    ShadowRoot* distributedShadowRoot;

Please follow the naming guideline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567491</commentid>
    <comment_count>11</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-29 01:12:28 -0800</bug_when>
    <thetext>Let me try to split the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568438</commentid>
    <comment_count>12</comment_count>
      <attachid>129654</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-01 00:43:57 -0800</bug_when>
    <thetext>Created attachment 129654
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568453</commentid>
    <comment_count>13</comment_count>
      <attachid>129658</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-01 01:02:54 -0800</bug_when>
    <thetext>Created attachment 129658
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568460</commentid>
    <comment_count>14</comment_count>
      <attachid>129661</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-01 01:15:51 -0800</bug_when>
    <thetext>Created attachment 129661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568468</commentid>
    <comment_count>15</comment_count>
      <attachid>129661</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-01 01:25:46 -0800</bug_when>
    <thetext>Comment on attachment 129661
Patch

- I don&apos;t think we need to hide HTMLShadowElement behind the flag it can be like as HTMLContentElement.
- Pelase split  firstRendererOf() and lastRendererOf() refactoring in separate patch.
   Having it in the same change makes it really hard to see  the actual change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568711</commentid>
    <comment_count>16</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-03-01 09:26:10 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 129661 [details])
&gt; - I don&apos;t think we need to hide HTMLShadowElement behind the flag it can be like as HTMLContentElement.

I think we do need this behind flag. Otherwise, there are visible effects of the Shadow DOM implementation even when the flag is enabled. See bug 79935 for details.

&gt; - Pelase split  firstRendererOf() and lastRendererOf() refactoring in separate patch.
&gt;    Having it in the same change makes it really hard to see  the actual change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569307</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-01 22:56:59 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (From update of attachment 129661 [details] [details])
&gt; &gt; - I don&apos;t think we need to hide HTMLShadowElement behind the flag it can be like as HTMLContentElement.
&gt; 
&gt; I think we do need this behind flag. Otherwise, there are visible effects of the Shadow DOM implementation even when the flag is enabled. See bug 79935 for details.
&gt; 
&gt; &gt; - Pelase split  firstRendererOf() and lastRendererOf() refactoring in separate patch.
&gt; &gt;    Having it in the same change makes it really hard to see  the actual change.

Let me clarify, I think:
- It&apos;s OK to have HTMLShadowElement.cpp/h files for  regardless of ENABLE(SHADOW_DOM).
- It&apos;s NOT ok to have HTMLShadowElement.idl compiled in unless we ENABLE(SHADOW_DOM).
- For tag name, I think we need to fix Bug 79935 WITHOUT hiding HTMLContentElement.h/cpp behind ENABLE(SHADOW_DOM).
   It should be hidden by runtime flag, not compilation flag. I guess we need parser support here. Let me investigate this.

If we can pull up most of the code from HTMLContentElement to InsertionPoint, and can implement built-in shadows 
using only InsertionPoint without using HTMLContentElement. That would be best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570473</commentid>
    <comment_count>18</comment_count>
      <attachid>130067</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-05 00:44:41 -0800</bug_when>
    <thetext>Created attachment 130067
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570488</commentid>
    <comment_count>19</comment_count>
      <attachid>130067</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-05 01:00:33 -0800</bug_when>
    <thetext>Comment on attachment 130067
WIP

Attachment 130067 did not pass win-ews (win):
Output: http://queues.webkit.org/results/11803879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570489</commentid>
    <comment_count>20</comment_count>
      <attachid>130067</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-03-05 01:02:17 -0800</bug_when>
    <thetext>Comment on attachment 130067
WIP

Attachment 130067 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/11801839</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570497</commentid>
    <comment_count>21</comment_count>
      <attachid>130067</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-03-05 01:08:52 -0800</bug_when>
    <thetext>Comment on attachment 130067
WIP

Attachment 130067 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11802866</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570500</commentid>
    <comment_count>22</comment_count>
      <attachid>130067</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-05 01:17:21 -0800</bug_when>
    <thetext>Comment on attachment 130067
WIP

Attachment 130067 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11801847</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570518</commentid>
    <comment_count>23</comment_count>
      <attachid>130067</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-03-05 01:34:21 -0800</bug_when>
    <thetext>Comment on attachment 130067
WIP

Attachment 130067 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11802879</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570539</commentid>
    <comment_count>24</comment_count>
      <attachid>130067</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-05 02:33:13 -0800</bug_when>
    <thetext>Comment on attachment 130067
WIP

Attachment 130067 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11809291</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572570</commentid>
    <comment_count>25</comment_count>
      <attachid>130550</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-06 23:11:54 -0800</bug_when>
    <thetext>Created attachment 130550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572582</commentid>
    <comment_count>26</comment_count>
      <attachid>130553</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-06 23:23:14 -0800</bug_when>
    <thetext>Created attachment 130553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572610</commentid>
    <comment_count>27</comment_count>
      <attachid>130553</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-06 23:58:36 -0800</bug_when>
    <thetext>Comment on attachment 130553
Patch

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

&gt; Source/WebCore/html/shadow/HTMLShadowElement.cpp:64
&gt; +    if (ShadowRoot* root = toShadowRoot(shadowTreeRootNode()))

Why not treeScope()? shadowTreeRootNode() traverses down the tree and better be avoided if possible.

&gt; Source/WebCore/html/shadow/InsertionPoint.cpp:52
&gt;      if (ShadowRoot* root = toShadowRoot(shadowTreeRootNode())) {

Ditto.

&gt; Source/WebCore/html/shadow/InsertionPoint.h:71
&gt; +    ShadowRoot* shadowRootAssignedFrom;

I don&apos;t think we need this.

&gt; Source/WebCore/html/shadow/InsertionPoint.h:76
&gt;      if (!node || node-&gt;isContentElement())

It looks Node::isContentElement() is no longer need and can be morphed to isInsertionPoint().
It also even don&apos;t need to stay in Node. can be pulled down to HTMLElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572658</commentid>
    <comment_count>28</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-07 00:46:27 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:76
&gt; &gt;      if (!node || node-&gt;isContentElement())
&gt; 
&gt; It looks Node::isContentElement() is no longer need and can be morphed to isInsertionPoint().
&gt; It also even don&apos;t need to stay in Node. can be pulled down to HTMLElement.

Let&apos;s do this in another bug?
I don&apos;t think it&apos;s good idea to merge this refactoring into this patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572664</commentid>
    <comment_count>29</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-07 00:52:11 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; &gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:76
&gt; &gt; &gt;      if (!node || node-&gt;isContentElement())
&gt; &gt; 
&gt; &gt; It looks Node::isContentElement() is no longer need and can be morphed to isInsertionPoint().
&gt; &gt; It also even don&apos;t need to stay in Node. can be pulled down to HTMLElement.
&gt; 
&gt; Let&apos;s do this in another bug?
&gt; I don&apos;t think it&apos;s good idea to merge this refactoring into this patch...

And I want to remove isShadowElement from Node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572666</commentid>
    <comment_count>30</comment_count>
      <attachid>130561</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-07 00:55:53 -0800</bug_when>
    <thetext>Created attachment 130561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573696</commentid>
    <comment_count>31</comment_count>
      <attachid>130791</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-08 00:53:15 -0800</bug_when>
    <thetext>Created attachment 130791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573698</commentid>
    <comment_count>32</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-08 00:55:16 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 130553 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130553&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/shadow/HTMLShadowElement.cpp:64
&gt; &gt; +    if (ShadowRoot* root = toShadowRoot(shadowTreeRootNode()))
&gt; 
&gt; Why not treeScope()? shadowTreeRootNode() traverses down the tree and better be avoided if possible.

Done.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.cpp:52
&gt; &gt;      if (ShadowRoot* root = toShadowRoot(shadowTreeRootNode())) {
&gt; 
&gt; Ditto.

Done.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:71
&gt; &gt; +    ShadowRoot* shadowRootAssignedFrom;
&gt; 
&gt; I don&apos;t think we need this.

Done.

&gt; 
&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:76
&gt; &gt;      if (!node || node-&gt;isContentElement())
&gt; 
&gt; It looks Node::isContentElement() is no longer need and can be morphed to isInsertionPoint().
&gt; It also even don&apos;t need to stay in Node. can be pulled down to HTMLElement.

Already fixed in another patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573725</commentid>
    <comment_count>33</comment_count>
      <attachid>130791</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-03-08 02:02:31 -0800</bug_when>
    <thetext>Comment on attachment 130791
Patch

Looks good. Let&apos;s land this once bots become green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>573751</commentid>
    <comment_count>34</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-03-08 03:25:54 -0800</bug_when>
    <thetext>Committed r110161: &lt;http://trac.webkit.org/changeset/110161&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128173</attachid>
            <date>2012-02-22 03:50:40 -0800</date>
            <delta_ts>2012-02-23 22:56:59 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-78596-20120222205038.patch</filename>
            <type>text/plain</type>
            <size>89460</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDczZTg2
Mzg3YTAzZTY0YTMxZWUyMjQxZWFmNjA5NWE5MDU4ZjFhNjAuLjYzZjA3ZTY2NTBmZDljYmRlNWIw
ZjkzMjFkNjUyYTcxOWNiNmUyNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC05MTAsNyArOTEw
LDcgQEAgX19aTjdXZWJDb3JlNldpZGdldEQyRXYKIF9fWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3
SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdDb25zb2xlMjFzaG91bGRQcmludEV4Y2VwdGlvbnNFdgog
X19aTjdXZWJDb3JlN0NvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0ViCi1fX1pON1dl
YkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2CitfX1pON1dlYkNvcmU3RWxlbWVudDIw
cmVtb3ZlU2hhZG93Um9vdExpc3RFdgogX19aTjdXZWJDb3JlN0VsZW1lbnQyMWJvdW5kc0luUm9v
dFZpZXdTcGFjZUV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDlpbm5lclRleHRFdgogX19aTjdXZWJD
b3JlN0ludFJlY3Q1c2NhbGVFZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDIzMDEwYTA2Y2Q3
OTZkMGIwZGU1NTg4YzlkMzU1ZGNmN2IwNGUwOTYuLmNlOGM3YTY4NjNjZTQ4NzU2MmQ3NWY0MjRh
YTkyZjY3NTc4YmMzYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEwIEBA
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMiw3ICsxMjYs
NyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0g
ICAgcmVtb3ZlU2hhZG93Um9vdCgpOworICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiAgICAg
aWYgKG1fYXR0cmlidXRlTWFwKQogICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+ZGV0YWNoRnJvbUVs
ZW1lbnQoKTsKIH0KQEAgLTkzMiw3ICs5MzYsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiAg
ICAgICAgIE5vZGU6OmF0dGFjaCgpOwogICAgICAgICBzaGFkb3dSb290TGlzdCgpLT5hdHRhY2go
KTsKIAotICAgICAgICAvLyBJbiBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNoaWxkcmVu
IG1heSBiZSBhdHRhY2hlZCBieSAnY29udGVudCcgZWxlbWVudC4KKyAgICAgICAgLy8gSW4gYSBz
aGFkb3cgdHJlZSwgc29tZSBvZiBsaWdodCBjaGlsZHJlbiBtYXkgYmUgYXR0YWNoZWQgYnkgPGNv
bnRlbnQ+IG9yIDxzaGFkb3c+LgogICAgICAgICAvLyBIb3dldmVyLCB3aGVuIHRoZXJlIGlzIG5v
IGNvbnRlbnQgZWxlbWVudCBvciBjb250ZW50IGVsZW1lbnQgZG9lcyBub3Qgc2VsZWN0CiAgICAg
ICAgIC8vIGFsbCBsaWdodCBjaGlsZHJlbiwgd2UgaGF2ZSB0byBhdHRhY2ggdGhlIHJlc3Qgb2Yg
bGlnaHQgY2hpbGRyZW4gaGVyZS4KICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hp
bGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKQEAgLTExMjcsMTAg
KzExMzEsMTAgQEAgdm9pZCBFbGVtZW50OjpyZWNhbGNTdHlsZShTdHlsZUNoYW5nZSBjaGFuZ2Up
CiAgICAgfQogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGNhcmUgYWJvdXQgc2libGluZyBj
b21iaW5hdG9ycy4gV2lsbCBiZSBuZWNlc3NhcnkgaW4gWEJMMiB3b3JsZC4KICAgICBpZiAoaGFz
U2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIFNoYWRvd1Jvb3QqIHNoYWRvdyA9IHNoYWRvd1Jvb3RM
aXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOwotICAgICAgICBpZiAoY2hhbmdlID49IEluaGVy
aXQgfHwgc2hhZG93LT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKSB8fCBzaGFkb3ctPm5lZWRzU3R5
bGVSZWNhbGMoKSkgeworICAgICAgICBTaGFkb3dSb290TGlzdCogbGlzdCA9IHNoYWRvd1Jvb3RM
aXN0KCk7CisgICAgICAgIGlmIChjaGFuZ2UgPj0gSW5oZXJpdCB8fCBsaXN0LT5jaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKSB8fCBsaXN0LT5uZWVkc1N0eWxlUmVjYWxjKCkpIHsKICAgICAgICAgICAg
IHBhcmVudFB1c2hlci5wdXNoKCk7Ci0gICAgICAgICAgICBzaGFkb3ctPnJlY2FsY1NoYWRvd1Ry
ZWVTdHlsZShjaGFuZ2UpOworICAgICAgICAgICAgbGlzdC0+cmVjYWxjU2hhZG93VHJlZVN0eWxl
KGNoYW5nZSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTExNzQsNyArMTE3OCw3IEBAIHN0YXRp
YyBib29sIHZhbGlkYXRlU2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQsIFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QsIEV4Y2VwCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRWxlbWVudDo6
c2V0U2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QsIEV4Y2VwdGlv
bkNvZGUmIGVjKQordm9pZCBFbGVtZW50OjphZGRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93
Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCF2YWxpZGF0
ZVNoYWRvd1Jvb3QoZG9jdW1lbnQoKSwgc2hhZG93Um9vdC5nZXQoKSwgZWMpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMTgyLDcgKzExODYsMTIgQEAgdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290
KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMKICAg
ICBpZiAoIWhhc1JhcmVEYXRhKCkpCiAgICAgICAgIGVuc3VyZVJhcmVEYXRhKCk7CiAKLSAgICBy
ZW1vdmVTaGFkb3dSb290KCk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjptdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCgpKQorICAg
ICAgICByZW1vdmVTaGFkb3dSb290TGlzdCgpOworI2Vsc2UKKyAgICByZW1vdmVTaGFkb3dSb290
TGlzdCgpOworI2VuZGlmCiAKICAgICBzaGFkb3dSb290LT5zZXRTaGFkb3dIb3N0KHRoaXMpOwog
ICAgIHNoYWRvd1Jvb3RMaXN0KCktPnB1c2hTaGFkb3dSb290KHNoYWRvd1Jvb3QuZ2V0KCkpOwpA
QCAtMTE5MSw5ICsxMjAwLDEyIEBAIHZvaWQgRWxlbWVudDo6c2V0U2hhZG93Um9vdChQYXNzUmVm
UHRyPFNoYWRvd1Jvb3Q+IHNoYWRvd1Jvb3QsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgICAgIHNo
YWRvd1Jvb3QtPmluc2VydGVkSW50b0RvY3VtZW50KCk7CiAgICAgaWYgKGF0dGFjaGVkKCkpIHsK
ICAgICAgICAgc2hhZG93Um9vdC0+bGF6eUF0dGFjaCgpOworICAgICAgICBmb3IgKFNoYWRvd1Jv
b3QqIHJvb3QgPSBzaGFkb3dSb290TGlzdCgpLT55b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+b2xkZXJT
aGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKKyAgICAg
ICAgICAgIHJvb3QtPmRldGFjaCgpOwogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RD
aGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgICAg
IGNoaWxkLT5kZXRhY2goKTsKICAgICB9CisKIH0KIAogU2hhZG93Um9vdCogRWxlbWVudDo6ZW5z
dXJlU2hhZG93Um9vdCgpCkBAIC0xMjA0LDcgKzEyMTYsNyBAQCBTaGFkb3dSb290KiBFbGVtZW50
OjplbnN1cmVTaGFkb3dSb290KCkKICAgICByZXR1cm4gU2hhZG93Um9vdDo6Y3JlYXRlKHRoaXMs
IFNoYWRvd1Jvb3Q6OkNyZWF0aW5nVXNlckFnZW50U2hhZG93Um9vdCkuZ2V0KCk7CiB9CiAKLXZv
aWQgRWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdCgpCit2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRv
d1Jvb3RMaXN0KCkKIHsKICAgICBpZiAoIWhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTIxNiwxNiArMTIyOCwxOSBAQCB2b2lkIEVsZW1lbnQ6OnJlbW92ZVNoYWRvd1Jvb3Qo
KQogICAgICAgICAgICAgb2xkUm9vdC0+ZGV0YWNoKCk7CiAKICAgICAgICAgb2xkUm9vdC0+c2V0
U2hhZG93SG9zdCgwKTsKKyAgICAgICAgb2xkUm9vdC0+c2V0UHJldigwKTsKKyAgICAgICAgb2xk
Um9vdC0+c2V0TmV4dCgwKTsKICAgICAgICAgZG9jdW1lbnQoKS0+YWRvcHRJZk5lZWRlZChvbGRS
b290LmdldCgpKTsKICAgICAgICAgaWYgKG9sZFJvb3QtPmluRG9jdW1lbnQoKSkKICAgICAgICAg
ICAgIG9sZFJvb3QtPnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21UcmVlKHRydWUpOwotICAgICAgICBpZiAoYXR0YWNo
ZWQoKSkgewotICAgICAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IWNoaWxkLT5hdHRhY2hlZCgpKQotICAgICAgICAgICAgICAgICAgICBjaGlsZC0+bGF6eUF0dGFj
aCgpOwotICAgICAgICAgICAgfQorICAgIH0KKworICAgIGlmIChhdHRhY2hlZCgpKSB7CisgICAg
ICAgIGZvciAoTm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxk
LT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAoIWNoaWxkLT5hdHRhY2hlZCgpKQor
ICAgICAgICAgICAgICAgIGNoaWxkLT5sYXp5QXR0YWNoKCk7CiAgICAgICAgIH0KICAgICB9CiB9
CkBAIC0xMzYxLDggKzEzNzYsOCBAQCB2b2lkIEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29s
IGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZgogICAgICAgICBj
aGVja0ZvclNpYmxpbmdTdHlsZUNoYW5nZXModGhpcywgcmVuZGVyU3R5bGUoKSwgZmFsc2UsIGJl
Zm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAKICAgICBpZiAoaGFz
UmFyZURhdGEoKSkgewotICAgICAgICBpZiAoU2hhZG93Um9vdExpc3QqIGxpc3QgPSBzaGFkb3dS
b290TGlzdCgpKQotICAgICAgICAgICAgbGlzdC0+aG9zdENoaWxkcmVuQ2hhbmdlZCgpOworICAg
ICAgICBpZiAoaGFzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAgc2hhZG93Um9vdExpc3QoKS0+
aG9zdENoaWxkcmVuQ2hhbmdlZCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXgg
NjNhMzA5YjE4ZjE5OTY3NjdmYTM4MGY4NmU1ZWM2YmJiMzY3MjAwMS4uZTk1YzIyYzZhMTE4N2Zm
ZWE1NTFmZTQxOWQwMzUwMzA3NjQ1NzhlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC0yNTUsMTIg
KzI1NSwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NoYWRvd1Jvb3QoKSBjb25zdDsKICAg
ICBTaGFkb3dSb290TGlzdCogc2hhZG93Um9vdExpc3QoKSBjb25zdDsKLQotICAgIC8vIEZJWE1F
OiBUaGVzZSBBUEkgd2lsbCBiZSBtb3ZlZCB0byBTaGFkb3dSb290TGlzdC4KLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgzMTMKLSAgICB2b2lkIHNldFNo
YWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgYWRkU2hhZG93Um9vdChQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+LCBFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCByZW1vdmVTaGFkb3dSb290TGlzdCgpOworICAgIC8vIEZJWE1FOiBlbnN1cmVT
aGFkb3dSb290KCkgd2lsbCBiZSByZW1vdmVkIGxhdGVyLgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzYwOAogICAgIFNoYWRvd1Jvb3QqIGVuc3VyZVNo
YWRvd1Jvb3QoKTsKLSAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoKTsKIAogICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0
U2hhZG93UHNldWRvSWQoY29uc3QgQXRvbWljU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYgPSBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IDlkYmFjMWE0YjRmNDhlYTM2YjRiNmNiNGM4YTE5NTQzYzAzYTMwYWIuLjI5
OGY1MzZmNWVlODZmOGJjY2MxMGRkYzAxNjQ4ZWQyOTI4MWFjYjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1
ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKQEAg
LTQzLDExICs0NSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CisKIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4
dChOb2RlKiBub2RlKQogICAgIDogbV9waGFzZShBdHRhY2hpbmdOb3RJblRyZWUpCiAgICAgLCBt
X25vZGUobm9kZSkKICAgICAsIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCi0g
ICAgLCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QoMCkKKyAgICAsIG1fdmlzdWFsUGFyZW50U2hh
ZG93Um9vdExpc3QoMCkKICAgICAsIG1faW5zZXJ0aW9uUG9pbnQoMCkKICAgICAsIG1fc3R5bGUo
MCkKICAgICAsIG1fcGFyZW50Rmxvd1JlbmRlcmVyKDApCkBAIC01NiwyMyArNjAsMzAgQEAgTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAg
aWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChwYXJlbnQtPmlzU2hhZG93
Um9vdCgpKSB7Ci0gICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdTaGFkb3dDaGlsZDsKKyAgICBp
ZiAocGFyZW50LT5pc0NvbnRlbnRFbGVtZW50KCkpCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
PGNvbnRlbnQ+IGNvbWUhXG4iKTsKKworICAgIGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpICYm
IHRvU2hhZG93Um9vdChwYXJlbnQpLT5pc1lvdW5nZXN0U2hhZG93Um9vdCgpKSB7CisgICAgICAg
IG1fcGhhc2UgPSBBdHRhY2hpbmdZb3VuZ2VzdFNoYWRvd0NoaWxkOwogICAgICAgICBtX3BhcmVu
dE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudC0+c2hhZG93SG9zdCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0g
ICAgICAgIGlmICh0b0VsZW1lbnQocGFyZW50KS0+aGFzU2hhZG93Um9vdCgpKQotICAgICAgICAg
ICAgbV92aXN1YWxQYXJlbnRTaGFkb3dSb290ID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1Jv
b3RMaXN0KCktPnlvdW5nZXN0U2hhZG93Um9vdCgpOwotCi0gICAgICAgIGlmIChtX3Zpc3VhbFBh
cmVudFNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIFNoYWRvd1Jvb3RMaXN0KiBzaGFkb3dSb290
TGlzdCA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aG9zdCgpLT5zaGFkb3dSb290TGlzdCgp
OwotICAgICAgICAgICAgaWYgKChtX2luc2VydGlvblBvaW50ID0gc2hhZG93Um9vdExpc3QtPmlu
c2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCi0gICAgICAgICAgICAgICAgJiYgc2hhZG93Um9vdExp
c3QtPmlzU2VsZWN0b3JBY3RpdmUoKSkgewotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRh
Y2hpbmdEaXN0cmlidXRlZDsKLSAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLnBhcmVu
dE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgfHwgcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkg
eworICAgICAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHBhcmVu
dCktPmhhc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9v
dExpc3QgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdExpc3QoKTsKKyAgICAgICAgZWxz
ZSBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50
U2hhZG93Um9vdExpc3QgPSB0b1NoYWRvd1Jvb3QocGFyZW50KS0+aG9zdCgpLT5zaGFkb3dSb290
TGlzdCgpOworCisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3RMaXN0KSB7Cisg
ICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jv
b3RMaXN0LT5pbnNlcnRpb25Qb2ludEZvcihtX25vZGUpKQorICAgICAgICAgICAgICAgICYmIG1f
dmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QtPmlzU2VsZWN0b3JBY3RpdmUoKSkgeworICAgICAg
ICAgICAgICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1RyZWVSb290ID0gdG9TaGFkb3dSb290KG1faW5z
ZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKTsKKyAgICAgICAgICAgICAgICBpZiAo
c2hhZG93VHJlZVJvb3QtPmlzWW91bmdlc3RTaGFkb3dSb290KCkgfHwgbV92aXN1YWxQYXJlbnRT
aGFkb3dSb290TGlzdC0+ZGlzdHJpYnV0ZWRUbyhzaGFkb3dUcmVlUm9vdCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOworICAgICAgICAgICAg
ICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdD
b250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQ7
CkBAIC04MCwxMyArOTEsMjIgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdD
b250ZXh0KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAocGFyZW50LT5pc0NvbnRlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIEhUTUxD
b250ZW50RWxlbWVudCogc2hhZG93Q29udGVudEVsZW1lbnQgPSB0b0hUTUxDb250ZW50RWxlbWVu
dChwYXJlbnQpOwotICAgICAgICAgICAgaWYgKCFzaGFkb3dDb250ZW50RWxlbWVudC0+aGFzU2Vs
ZWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRmFsbGJhY2s7
Ci0gICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2Rl
UmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
OwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQo
cGFyZW50KSkgeworICAgICAgICAgICAgaWYgKHBhcmVudC0+aXNDb250ZW50RWxlbWVudCgpIHx8
IHRvU2hhZG93Um9vdChwYXJlbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKS0+aXNPbGRlc3RTaGFk
b3dSb290KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodG9JbnNlcnRpb25Qb2ludChwYXJlbnQp
LT5oYXNTZWxlY3Rpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGlu
Z05vdEZhbGxiYWNrZWQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBtX3BoYXNlID0gQXR0YWNoaW5nRmFsbGJhY2tlZDsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKHBhcmVudC0+aGFzVGFnTmFtZShzaGFkb3dUYWcpKTsKKyAg
ICAgICAgICAgICAgICBTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHBhcmVudC0+c2hh
ZG93VHJlZVJvb3ROb2RlKCkpLT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPmRpc3RyaWJ1dGVk
RnJvbSh0b0hUTUxTaGFkb3dFbGVtZW50KHBhcmVudCkpOworICAgICAgICAgICAgICAgIGlmIChy
b290ICYmIHJvb3QtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9
IEF0dGFjaGluZ05vdEZhbGxiYWNrZWQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRmFsbGJhY2tlZDsKICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRl
cmluZ0NvbnRleHQocGFyZW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KIApAQCAtOTgsNyArMTE4LDcgQEAg
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUsIFJl
bmRlclN0eWxlKiBzdHlsZSkKICAgICA6IG1fcGhhc2UoQ2FsY3VsYXRpbmcpCiAgICAgLCBtX25v
ZGUobm9kZSkKICAgICAsIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKDApCi0gICAg
LCBtX3Zpc3VhbFBhcmVudFNoYWRvd1Jvb3QoMCkKKyAgICAsIG1fdmlzdWFsUGFyZW50U2hhZG93
Um9vdExpc3QoMCkKICAgICAsIG1faW5zZXJ0aW9uUG9pbnQoMCkKICAgICAsIG1fc3R5bGUoc3R5
bGUpCiAgICAgLCBtX3BhcmVudEZsb3dSZW5kZXJlcigwKQpAQCAtMTIyLDM3ICsxNDIsNzMgQEAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlbGVhc2VTdHls
ZSgpCiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlck9mKEluc2VydGlvblBvaW50
KiBwYXJlbnQsIE5vZGUqIGN1cnJlbnQpCiB7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGN1
cnJlbnRTZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+ZmluZChjdXJyZW50KTsKLSAg
ICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCi0gICAgICAgIHJldHVybiAwOworICAgIGlmIChwYXJl
bnQtPmlzQ29udGVudEVsZW1lbnQoKSB8fCB0b1NoYWRvd1Jvb3QocGFyZW50LT5zaGFkb3dUcmVl
Um9vdE5vZGUoKSktPmlzT2xkZXN0U2hhZG93Um9vdCgpKSB7CisgICAgICAgIEhUTUxDb250ZW50
U2VsZWN0aW9uKiBjdXJyZW50U2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZpbmQo
Y3VycmVudCk7CisgICAgICAgIGlmICghY3VycmVudFNlbGVjdGlvbikKKyAgICAgICAgICAgIHJl
dHVybiAwOworCisgICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9
IGN1cnJlbnRTZWxlY3Rpb24tPm5leHQoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rp
b24tPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBz
ZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVu
ZGVyZXI7CisgICAgICAgIH0KIAotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVj
dGlvbiA9IGN1cnJlbnRTZWxlY3Rpb24tPm5leHQoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBz
ZWxlY3Rpb24tPm5leHQoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHJlbmRl
cmVyOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBBU1NFUlQocGFyZW50LT5oYXNU
YWdOYW1lKHNoYWRvd1RhZykpOworICAgIC8vIFRPRE86IHdyaXRlIHNvbWV0aGluZyBoZXJlLgor
CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIHByZXZpb3VzUmVuZGVy
ZXJPZihJbnNlcnRpb25Qb2ludCogcGFyZW50LCBOb2RlKiBjdXJyZW50KQogewotICAgIFJlbmRl
ck9iamVjdCogbGFzdFJlbmRlcmVyID0gMDsKKyAgICBpZiAocGFyZW50LT5pc0NvbnRlbnRFbGVt
ZW50KCkgfHwgdG9TaGFkb3dSb290KHBhcmVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc09s
ZGVzdFNoYWRvd1Jvb3QoKSkgeworICAgICAgICBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlciA9
IDA7CisKKyAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFy
ZW50LT5zZWxlY3Rpb25zKCktPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0
aW9uLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb24tPm5vZGUoKSA9PSBjdXJy
ZW50KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAg
ICAgICBsYXN0UmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICAgICAgfQogCi0gICAgZm9yIChIVE1M
Q29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZpcnN0
KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKLSAgICAgICAg
aWYgKHNlbGVjdGlvbi0+bm9kZSgpID09IGN1cnJlbnQpCi0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgICAgIGxhc3RSZW5kZXJlciA9IHJlbmRlcmVyOworICAgICAgICBy
ZXR1cm4gbGFzdFJlbmRlcmVyOwogICAgIH0KIAotICAgIHJldHVybiBsYXN0UmVuZGVyZXI7Cisg
ICAgQVNTRVJUKHBhcmVudC0+aGFzVGFnTmFtZShzaGFkb3dUYWcpKTsKKyAgICAvLyBUT0RPOiB3
cml0ZSBzb21ldGhpbmcgaGVyZS4KKworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgUmVuZGVy
T2JqZWN0KiBmaXJzdFJlbmRlcmVyT2YoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCkKIHsKLSAgICBm
b3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMo
KS0+Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgewot
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5y
ZW5kZXJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgIGlmIChwYXJlbnQt
PmlzQ29udGVudEVsZW1lbnQoKSB8fCAocGFyZW50LT5oYXNUYWdOYW1lKHNoYWRvd1RhZykgJiYg
dG9TaGFkb3dSb290KHBhcmVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc09sZGVzdFNoYWRv
d1Jvb3QoKSkpIHsKKyAgICAgICAgaWYgKHBhcmVudC0+aGFzU2VsZWN0aW9uKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2Vs
ZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4
dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxl
Y3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJl
bmRlcmVyOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
Rm9yIEZhbGxiYWNrIGVsZW1lbnRzLgorICAgICAgICAgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdD
b250ZXh0KHBhcmVudCkubmV4dFJlbmRlcmVyKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisKKyAgICBBU1NFUlQocGFyZW50LT5oYXNUYWdOYW1lKHNoYWRvd1RhZykp
OworCisgICAgU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9vdChwYXJlbnQtPnNoYWRvd1Ry
ZWVSb290Tm9kZSgpKS0+aG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5kaXN0cmlidXRlZEZyb20o
dG9IVE1MU2hhZG93RWxlbWVudChwYXJlbnQpKTsKKyAgICBpZiAocm9vdCAmJiByb290LT5maXJz
dENoaWxkKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IHJvb3QtPmZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGQtPnJlbmRlcmVyKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gRm9yIEZhbGxiYWNrIGVsZW1lbnRzLgorICAgICAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0Nv
bnRleHQocGFyZW50KS5uZXh0UmVuZGVyZXIoKTsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAg
LTE2MCw5ICsyMTYsMjkgQEAgc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mKElu
c2VydGlvblBvaW50KiBwYXJlbnQpCiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJl
ck9mKEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgZm9yIChIVE1MQ29udGVudFNlbGVj
dGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmxhc3QoKTsgc2VsZWN0aW9u
OyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnByZXZpb3VzKCkpIHsKLSAgICAgICAgaWYgKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICBpZiAocGFyZW50LT5pc0NvbnRlbnRFbGVtZW50
KCkgfHwgdG9TaGFkb3dSb290KHBhcmVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc09sZGVz
dFNoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgewor
ICAgICAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50
LT5zZWxlY3Rpb25zKCktPmxhc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24t
PnByZXZpb3VzKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVuZGVyZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0NvbnRleHQocGFyZW50KS5wcmV2aW91c1JlbmRlcmVy
KCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBBU1NFUlQo
cGFyZW50LT5oYXNUYWdOYW1lKHNoYWRvd1RhZykpOworCisgICAgaWYgKFNoYWRvd1Jvb3QqIHJv
b3QgPSB0b1NoYWRvd1Jvb3QocGFyZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSktPmhvc3QoKS0+
c2hhZG93Um9vdExpc3QoKS0+ZGlzdHJpYnV0ZWRGcm9tKHRvSFRNTFNoYWRvd0VsZW1lbnQocGFy
ZW50KSkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IHJvb3QtPmxhc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGQtPnJlbmRlcmVyKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gRm9yIEZhbGxiYWNrIGVsZW1lbnRzLgorICAgICAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0Nv
bnRleHQocGFyZW50KS5wcmV2aW91c1JlbmRlcmVyKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIDA7
CkBAIC0xNzAsNiArMjQ2LDEwIEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9m
KEluc2VydGlvblBvaW50KiBwYXJlbnQpCiAKIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiB7CisgICAgaWYgKG1fbm9kZS0+aXNFbGVtZW50
Tm9kZSgpICYmIHRvRWxlbWVudChtX25vZGUpLT50aXRsZSgpID09ICJkZWJ1Z3N0b3AiKSB7Cisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiZGVidWdzdG9wIVxuIik7CisgICAgfQorCiAgICAgQVNT
RVJUKG1fbm9kZS0+cmVuZGVyZXIoKSB8fCBtX3BoYXNlICE9IENhbGN1bGF0aW5nKTsKICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1fbm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAg
cmV0dXJuIHJlbmRlcmVyLT5uZXh0U2libGluZygpOwpAQCAtMTgzLDkgKzI2Myw5IEBAIFJlbmRl
ck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5leHRSZW5kZXJlcigpIGNvbnN0CiAgICAg
ICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5uZXh0UmVu
ZGVyZXIoKTsKICAgICB9CiAKLSAgICAvLyBBdm9pZCBhbiBPKG5eMikgcHJvYmxlbSB3aXRoIHRo
aXMgZnVuY3Rpb24gYnkgbm90IGNoZWNraW5nIGZvcgorICAgIC8vIEF2b2lkIGFuIE8oTl4yKSBw
cm9ibGVtIHdpdGggdGhpcyBmdW5jdGlvbiBieSBub3QgY2hlY2tpbmcgZm9yCiAgICAgLy8gbmV4
dFJlbmRlcmVyKCkgd2hlbiB0aGUgcGFyZW50IGVsZW1lbnQgaGFzbid0IGF0dGFjaGVkIHlldC4K
LSAgICBpZiAobV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkgJiYgIW1fbm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpLT5hdHRhY2hlZCgpICYmIG1fcGhhc2UgIT0gQXR0YWNoaW5nRmFsbGJhY2spCisg
ICAgaWYgKG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpICYmICFtX25vZGUtPnBhcmVudE9ySG9z
dE5vZGUoKS0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBmb3IgKE5vZGUq
IG5vZGUgPSBtX25vZGUtPm5leHRTaWJsaW5nKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2li
bGluZygpKSB7CkBAIC0xOTUsMTUgKzI3NSwxMyBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJp
bmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKG5vZGUtPmlzQ29udGVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgaWYgKFJlbmRl
ck9iamVjdCogZmlyc3QgPSBmaXJzdFJlbmRlcmVyT2YodG9IVE1MQ29udGVudEVsZW1lbnQobm9k
ZSkpKQorCisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBmaXJzdCA9IGZpcnN0UmVuZGVyZXJPZih0b0luc2VydGlvblBv
aW50KG5vZGUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hpbmdGYWxsYmFjaykKLSAgICAgICAgcmV0
dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KG1fbm9kZS0+cGFyZW50Tm9kZSgpKS5uZXh0UmVuZGVy
ZXIoKTsKLQogICAgIHJldHVybiAwOwogfQogCkBAIC0yMzIsMTUgKzMxMCwxMiBAQCBSZW5kZXJP
YmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkgY29uc3QKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJl
cigpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkpIHsK
LSAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGxhc3QgPSBsYXN0UmVuZGVyZXJPZih0b0hU
TUxDb250ZW50RWxlbWVudChub2RlKSkpCisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5v
ZGUpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVy
T2YodG9JbnNlcnRpb25Qb2ludChub2RlKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hpbmdGYWxsYmFj
aykKLSAgICAgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KG1fbm9kZS0+cGFyZW50Tm9k
ZSgpKS5wcmV2aW91c1JlbmRlcmVyKCk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjYwLDgg
KzMzNSw4IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVudFJlbmRl
cmVyKCkgY29uc3QKIAogdm9pZCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6aG9zdENoaWxkcmVuQ2hh
bmdlZCgpCiB7Ci0gICAgaWYgKG1fcGhhc2UgPT0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQpCi0g
ICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdC0+aG9zdENoaWxkcmVuQ2hhbmdlZCgpOwor
ICAgIGlmIChtX3BoYXNlID09IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkICYmIG1fdmlzdWFsUGFy
ZW50U2hhZG93Um9vdExpc3QpCisgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3Qt
Pmhvc3RDaGlsZHJlbkNoYW5nZWQoKTsKIH0KIAogYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdApAQCAtMjY5LDcgKzM0NCw3IEBAIGJvb2wgTm9k
ZVJlbmRlcmluZ0NvbnRleHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKICAgICBBU1NF
UlQobV9waGFzZSAhPSBDYWxjdWxhdGluZyk7CiAgICAgQVNTRVJUKHBhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSgpKTsKIAotICAgIGlmIChtX3BoYXNlID09IEF0dGFjaGluZ05vdEluVHJl
ZSB8fCBtX3BoYXNlID09IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkKQorICAgIGlmIChtX3BoYXNl
ID09IEF0dGFjaGluZ05vdEluVHJlZSB8fCBtX3BoYXNlID09IEF0dGFjaGluZ05vdERpc3RyaWJ1
dGVkIHx8IG1fcGhhc2UgPT0gQXR0YWNoaW5nTm90RmFsbGJhY2tlZCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVu
dFJlbmRlcmVyKCk7CkBAIC0yODIsNyArMzU3LDcgQEAgYm9vbCBOb2RlUmVuZGVyaW5nQ29udGV4
dDo6c2hvdWxkQ3JlYXRlUmVuZGVyZXIoKSBjb25zdAogICAgICAgICBpZiAoIXBhcmVudFJlbmRl
cmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
ICAgICBpZiAobV92aXN1YWxQYXJlbnRTaGFkb3dSb290KQorICAgICAgICBpZiAobV92aXN1YWxQ
YXJlbnRTaGFkb3dSb290TGlzdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggZjNmNTAxYTgx
ZWI1OWRhNTBkMWUyOTY2MWU5ZDZiOGVkYzEzNzc2ZS4uYjM1YWY4NTcwZTUxNWE1MTM2YTVkMWI1
YjU3MzI2NjZiZjM5ZDhjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmgKQEAgLTM5LDcgKzM5LDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIFJlbmRlckZsb3dUaHJl
YWQ7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKLWNsYXNzIFNoYWRv
d1Jvb3Q7CitjbGFzcyBTaGFkb3dSb290TGlzdDsKIAogY2xhc3MgTm9kZVJlbmRlcmluZ0NvbnRl
eHQgewogcHVibGljOgpAQCAtNzEsMTYgKzcxLDE3IEBAIHByaXZhdGU6CiAgICAgICAgIENhbGN1
bGF0aW5nLAogICAgICAgICBBdHRhY2hpbmdTdHJhaWdodCwKICAgICAgICAgQXR0YWNoaW5nTm90
SW5UcmVlLAotICAgICAgICBBdHRhY2hpbmdOb3REaXN0cmlidXRlZCwKICAgICAgICAgQXR0YWNo
aW5nRGlzdHJpYnV0ZWQsCi0gICAgICAgIEF0dGFjaGluZ1NoYWRvd0NoaWxkLAotICAgICAgICBB
dHRhY2hpbmdGYWxsYmFjaywKKyAgICAgICAgQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQsCisgICAg
ICAgIEF0dGFjaGluZ0ZhbGxiYWNrZWQsCisgICAgICAgIEF0dGFjaGluZ05vdEZhbGxiYWNrZWQs
CisgICAgICAgIEF0dGFjaGluZ1lvdW5nZXN0U2hhZG93Q2hpbGQsCiAgICAgfTsKIAogICAgIEF0
dGFjaGluZ1BoYXNlIG1fcGhhc2U7CiAgICAgTm9kZSogbV9ub2RlOwogICAgIENvbnRhaW5lck5v
ZGUqIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlOwotICAgIFNoYWRvd1Jvb3QqIG1f
dmlzdWFsUGFyZW50U2hhZG93Um9vdDsKKyAgICBTaGFkb3dSb290TGlzdCogbV92aXN1YWxQYXJl
bnRTaGFkb3dSb290TGlzdDsKICAgICBJbnNlcnRpb25Qb2ludCogbV9pbnNlcnRpb25Qb2ludDsK
ICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IG1fc3R5bGU7CiAgICAgUmVuZGVyRmxvd1RocmVhZCog
bV9wYXJlbnRGbG93UmVuZGVyZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggMDYy
NjAyMmVjMTU0OWJiMjM0YWFhMDhlOWFkMDVjNzQyOTY3ZGVjOC4uMjYzMTZhY2FjNzA2Yjg1MDI0
YjVjZGQzMDhkODk1ZTQ2YzdhNWZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAt
MzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlNoYWRv
d1Jvb3RMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKLSNpbmNsdWRlICJUZXh0LmgiCiAK
ICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVz
LmgiCkBAIC01MCw3ICs0OSw2IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fYXBwbHlB
dXRob3JTaGVldHMoZmFsc2UpCi0gICAgLCBtX25lZWRzUmVjYWxjdWxhdGVDb250ZW50KGZhbHNl
KQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCkBAIC0xMjUsNyArMTIzLDcgQEAgUGFz
c1JlZlB0cjxTaGFkb3dSb290PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwg
U2hhZG93Um9vdENyZWF0aW9uUHUKICAgICBSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCA9
IGFkb3B0UmVmKG5ldyBTaGFkb3dSb290KGVsZW1lbnQtPmRvY3VtZW50KCkpKTsKIAogICAgIGVj
ID0gMDsKLSAgICBlbGVtZW50LT5zZXRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKKyAgICBl
bGVtZW50LT5hZGRTaGFkb3dSb290KHNoYWRvd1Jvb3QsIGVjKTsKICAgICBpZiAoZWMpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlbGVtZW50ID09IHNoYWRvd1Jvb3QtPmhvc3QoKSk7
CkBAIC0xNTksNDAgKzE1Nyw2IEBAIGJvb2wgU2hhZG93Um9vdDo6Y2hpbGRUeXBlQWxsb3dlZChO
b2RlVHlwZSB0eXBlKSBjb25zdAogICAgIH0KIH0KIAotdm9pZCBTaGFkb3dSb290OjpyZWNhbGNT
aGFkb3dUcmVlU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQotewotICAgIGlmIChuZWVkc1JlYXR0
YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkpCi0gICAgICAgIHJlYXR0YWNoSG9zdENoaWxkcmVu
QW5kU2hhZG93KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZvciAoTm9kZSogbiA9IGZpcnN0Q2hp
bGQoKTsgbjsgbiA9IG4tPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChuLT5pc0Vs
ZW1lbnROb2RlKCkpCi0gICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pLT5y
ZWNhbGNTdHlsZShjaGFuZ2UpOwotICAgICAgICAgICAgZWxzZSBpZiAobi0+aXNUZXh0Tm9kZSgp
KQotICAgICAgICAgICAgICAgIHRvVGV4dChuKS0+cmVjYWxjVGV4dFN0eWxlKGNoYW5nZSk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICBjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKLSAgICBjbGVhck5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICBjbGVhckNoaWxkTmVl
ZHNTdHlsZVJlY2FsYygpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6OnNldE5lZWRzUmVhdHRhY2hI
b3N0Q2hpbGRyZW5BbmRTaGFkb3coKQotewotICAgIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQg
PSB0cnVlOwotICAgIGlmIChzaGFkb3dIb3N0KCkpCi0gICAgICAgIHNoYWRvd0hvc3QoKS0+c2V0
TmVlZHNTdHlsZVJlY2FsYygpOwotfQotCi12b2lkIFNoYWRvd1Jvb3Q6Omhvc3RDaGlsZHJlbkNo
YW5nZWQoKQotewotICAgIGlmICghaGFzQ29udGVudEVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgLy8gVGhpcyByZXN1bHRzIGluIGZvcmNlZCBkZXRhY2hpbmcvYXR0YWNoaW5nIG9m
IHRoZSBzaGFkb3cgcmVuZGVyIHRyZWUuIFNlZSBTaGFkb3dSb290OjpyZWNhbGNTdHlsZSgpLgot
ICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKLX0KLQogYm9vbCBT
aGFkb3dSb290OjpoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgZm9yIChOb2RlKiBu
ID0gZmlyc3RDaGlsZCgpOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkgewpAQCAt
MjEzLDM2ICsxNzcsNCBAQCB2b2lkIFNoYWRvd1Jvb3Q6OnNldEFwcGx5QXV0aG9yU2hlZXRzKGJv
b2wgdmFsdWUpCiAgICAgbV9hcHBseUF1dGhvclNoZWV0cyA9IHZhbHVlOwogfQogCi12b2lkIFNo
YWRvd1Jvb3Q6OmF0dGFjaCgpCi17Ci0gICAgLy8gQ2hpbGRyZW4gb2YgbV9zZWxlY3RvciBpcyBw
b3B1bGF0ZWQgbGF6aWx5IGluCi0gICAgLy8gZW5zdXJlU2VsZWN0b3IoKSwgYW5kIGhlcmUgd2Ug
anVzdCBlbnN1cmUgdGhhdAotICAgIC8vIGl0IGlzIGluIGNsZWFuIHN0YXRlLgotICAgIC8vIEZJ
WE1FOiBUaGlzIGFzc2VydGlvbiBicmVha3MgaWYgbXVsdGlwbGUgc2hhZG93IHJvb3RzIGFyZSBi
ZWluZyBhdHRhY2hlZC4KLSAgICAvLyBTaGFkb3dSb290TGlzdCBzaG91bGQgaGF2ZSByZXNwb25z
aWJpbGl0eSBvZiBzaWRlIGVmZmVjdCBvZiBzZWxlY3RvciBpbiBhdHRhY2hpbmcvZGV0YWNoaW5n
LgotICAgIEFTU0VSVCghaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxlY3RvcigpIHx8ICFo
b3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNlbGVjdG9yKCktPmhhc0NhbmRpZGF0ZXMoKSk7Ci0g
ICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7Ci0gICAgaWYgKEhUTUxDb250ZW50U2VsZWN0
b3IqIHNlbGVjdG9yID0gaG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxlY3RvcigpKQotICAg
ICAgICBzZWxlY3Rvci0+ZGlkU2VsZWN0KCk7CiB9Ci0KLXZvaWQgU2hhZG93Um9vdDo6cmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKQotewotICAgIE5vZGUqIGhvc3ROb2RlID0gaG9zdCgp
OwotICAgIGlmICghaG9zdE5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGZvciAoTm9kZSog
Y2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4
dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoY2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAg
ICBjaGlsZC0+ZGV0YWNoKCk7Ci0gICAgfQotCi0gICAgcmVhdHRhY2goKTsKLQotICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoIWNoaWxkLT5hdHRhY2hlZCgpKQotICAg
ICAgICAgICAgY2hpbGQtPmF0dGFjaCgpOwotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IDUwYTdkMTE1ZTljODk0ZGJkZWYyMDRjNGVmNDRhZTVi
YjU3YjVlMjMuLmY1YjM2Nzk5OGI0NWM2MzhmNDk3MzY2ZTViYjBkM2VjNGI1M2Y4ODYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIEhUTUxDb250ZW50RWxlbWVudDsKIGNsYXNzIEhUTUxDb250ZW50U2VsZWN0b3I7CiBjbGFz
cyBJbnNlcnRpb25Qb2ludDsKK2NsYXNzIFNoYWRvd1Jvb3RMaXN0OwogCiBjbGFzcyBTaGFkb3dS
b290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQsIHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBE
b3VibHlMaW5rZWRMaXN0Tm9kZTxTaGFkb3dSb290PiB7CiAgICAgZnJpZW5kIGNsYXNzIFdURjo6
RG91Ymx5TGlua2VkTGlzdE5vZGU8U2hhZG93Um9vdD47CkBAIC02MywxNyArNjQsMjAgQEAgcHVi
bGljOgogICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludEZvcihOb2RlKikgY29uc3Q7
CiAgICAgdm9pZCBob3N0Q2hpbGRyZW5DaGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoKCk7Ci0gICAgdm9pZCByZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOwotCiAgICAg
dmlydHVhbCBib29sIGFwcGx5QXV0aG9yU2hlZXRzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRBcHBs
eUF1dGhvclNoZWV0cyhib29sKTsKIAogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdCB7IHJldHVy
biBzaGFkb3dIb3N0KCk7IH0KKyAgICBOb2RlKiBvbGRlclNoYWRvd1Jvb3RPclNoYWRvd0hvc3Qo
KSBjb25zdDsKIAogICAgIFNoYWRvd1Jvb3QqIHlvdW5nZXJTaGFkb3dSb290KCkgY29uc3QgeyBy
ZXR1cm4gcHJldigpOyB9CiAgICAgU2hhZG93Um9vdCogb2xkZXJTaGFkb3dSb290KCkgY29uc3Qg
eyByZXR1cm4gbmV4dCgpOyB9CiAKKyAgICBib29sIGlzWW91bmdlc3RTaGFkb3dSb290KCkgY29u
c3QgeyByZXR1cm4gIXlvdW5nZXJTaGFkb3dSb290KCk7IH0KKyAgICBib29sIGlzT2xkZXN0U2hh
ZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJuICFvbGRlclNoYWRvd1Jvb3QoKTsgfQorCisgICAgYm9v
bCBoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3Qo
RG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CkBAIC04MiwyNCArODYsMTEg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Tm9kZT4gY2xvbmVOb2RlKGJvb2wg
ZGVlcCk7CiAgICAgdmlydHVhbCBib29sIGNoaWxkVHlwZUFsbG93ZWQoTm9kZVR5cGUpIGNvbnN0
OwogCi0gICAgYm9vbCBoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0OwotCiAgICAgU2hhZG93Um9v
dCogbV9wcmV2OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAgICBib29sIG1fYXBwbHlBdXRo
b3JTaGVldHMgOiAxOwotICAgIGJvb2wgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA6IDE7CiB9
OwogCi1pbmxpbmUgdm9pZCBTaGFkb3dSb290OjpjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRy
ZW5BbmRTaGFkb3coKQotewotICAgIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgPSBmYWxzZTsK
LX0KLQotaW5saW5lIGJvb2wgU2hhZG93Um9vdDo6bmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFu
ZFNoYWRvdygpCi17Ci0gICAgcmV0dXJuIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgfHwgaGFz
Q29udGVudEVsZW1lbnQoKTsKLX0KLQogaW5saW5lIFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChO
b2RlKiBub2RlKQogewogICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcAppbmRleCAyNjQ3NjRlNzJmNDczMGJl
MGZiMmI2YWZjOTcxMTAzMzUyYzMxMzRkLi5lMjU5ZTQxYmE4ODUxNWU1NWUyMTRjMDE2MWE4N2Qw
MzgxM2U4ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5jcHAKQEAgLTMwLDE4
ICszMCwyMiBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxl
bWVudC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCisjaW5jbHVkZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IFNoYWRvd1Jvb3RMaXN0OjpTaGFkb3dSb290TGlzdCgpCisgICAgOiBtX25lZWRzUmVjYWxjdWxh
dGVDb250ZW50KGZhbHNlKQogewogfQogCiBTaGFkb3dSb290TGlzdDo6flNoYWRvd1Jvb3RMaXN0
KCkKIHsKICAgICBBU1NFUlQoIWhhc1NoYWRvd1Jvb3QoKSk7CisgICAgQVNTRVJUKG1fc2hhZG93
RGlzdHJpYnV0aW9uLmlzRW1wdHkoKSk7CiB9CiAKIHZvaWQgU2hhZG93Um9vdExpc3Q6OnB1c2hT
aGFkb3dSb290KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCkBAIC05NCwzMCArOTgsMjMgQEAgdm9p
ZCBTaGFkb3dSb290TGlzdDo6d2lsbFJlbW92ZSgpCiAgICAgICAgIHJvb3QtPndpbGxSZW1vdmUo
KTsKIH0KIAotdm9pZCBTaGFkb3dSb290TGlzdDo6aG9zdENoaWxkcmVuQ2hhbmdlZCgpCi17Ci0g
ICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJv
b3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcm9vdC0+aG9zdENoaWxkcmVu
Q2hhbmdlZCgpOwotfQotCiB2b2lkIFNoYWRvd1Jvb3RMaXN0OjphdHRhY2goKQogewotICAgIC8v
IEZJWE1FOiBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IHRoZSBjYXNlIHRoYXQgdGhlIHNoYWRv
dyByb290IGxpc3QgaGFzIGF0IG1vc3Qgb25lIHNoYWRvdyByb290LgotICAgIC8vIFNlZSBhbHNv
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NzUwMyBhbmQgaXRzIGRl
cGVuZGVudCBidWdzLgotICAgIEFTU0VSVChtX3NoYWRvd1Jvb3RzLnNpemUoKSA8PSAxKTsKKyAg
ICAvLyBDaGlsZHJlbiBvZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KKyAgICAv
LyBlbnN1cmVTZWxlY3RvcigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0IGl0IGlzIGlu
IGNsZWFuIHN0YXRlLgorICAgIEFTU0VSVCghc2VsZWN0b3IoKSB8fCAhc2VsZWN0b3IoKS0+aGFz
Q2FuZGlkYXRlcygpKTsKIAogICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hh
ZG93Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpIHsKICAgICAg
ICAgaWYgKCFyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+YXR0YWNoKCk7CiAg
ICAgfQorCisgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3IqIGNvbnRlbnRTZWxlY3RvciA9IHNl
bGVjdG9yKCkpCisgICAgICAgIGNvbnRlbnRTZWxlY3Rvci0+ZGlkU2VsZWN0KCk7CiB9CiAKIHZv
aWQgU2hhZG93Um9vdExpc3Q6OmRldGFjaCgpCiB7Ci0gICAgLy8gRklYTUU6IEN1cnJlbnRseSB3
ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hhZG93IHJvb3QgbGlzdCBoYXMgYXQg
bW9zdCBvbmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMgZGVwZW5kZW50IGJ1Z3MuCi0gICAg
QVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOwotCiAgICAgZm9yIChTaGFkb3dSb290
KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNo
YWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAocm9vdC0+YXR0YWNoZWQoKSkKICAgICAgICAgICAg
IHJvb3QtPmRldGFjaCgpOwpAQCAtMTI2LDYgKzEyMywxNSBAQCB2b2lkIFNoYWRvd1Jvb3RMaXN0
OjpkZXRhY2goKQogCiBJbnNlcnRpb25Qb2ludCogU2hhZG93Um9vdExpc3Q6Omluc2VydGlvblBv
aW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0CiB7CisgICAgQVNTRVJUKG5vZGUgJiYgbm9kZS0+cGFy
ZW50Tm9kZSgpKTsKKworICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCktPmlzU2hhZG93Um9vdCgp
KSB7CisgICAgICAgIGlmIChIVE1MU2hhZG93RWxlbWVudCogc2hhZG93RWxlbWVudCA9IGRpc3Ry
aWJ1dGVkVG8odG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSkpKQorICAgICAgICAgICAg
cmV0dXJuIHNoYWRvd0VsZW1lbnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgIH0KKwogICAgIGlmICghbV9zZWxlY3RvcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
SFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsK
QEAgLTEzNiw3ICsxNDIsMTA0IEBAIEluc2VydGlvblBvaW50KiBTaGFkb3dSb290TGlzdDo6aW5z
ZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKIAogYm9vbCBTaGFkb3dSb290TGlzdDo6
aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0CiB7CisjaWYgMAogICAgIHJldHVybiBtX3NlbGVjdG9y
ICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKTsKKyNlbHNlCisgICAgcmV0dXJuIHRydWU7
CisjZW5kaWYKK30KKwordm9pZCBTaGFkb3dSb290TGlzdDo6cmVhdHRhY2goKQoreworICAgIGRl
dGFjaCgpOworICAgIGF0dGFjaCgpOworfQorCitib29sIFNoYWRvd1Jvb3RMaXN0OjpjaGlsZE5l
ZWRzU3R5bGVSZWNhbGMoKQoreworICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7Cisg
ICAgaWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsK
K30KKworYm9vbCBTaGFkb3dSb290TGlzdDo6bmVlZHNTdHlsZVJlY2FsYygpCit7CisgICAgQVNT
RVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKKyAgICBpZiAoIXlvdW5nZXN0U2hhZG93Um9vdCgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4geW91bmdlc3RTaGFkb3dSb290
KCktPm5lZWRzU3R5bGVSZWNhbGMoKTsKK30KKwordm9pZCBTaGFkb3dSb290TGlzdDo6cmVjYWxj
U2hhZG93VHJlZVN0eWxlKE5vZGU6OlN0eWxlQ2hhbmdlIGNoYW5nZSkKK3sKKyAgICBTaGFkb3dS
b290KiB5b3VuZ2VzdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOworICAgIGlmICgheW91bmdlc3Qp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5k
U2hhZG93KCkpCisgICAgICAgIHJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAg
ZWxzZSB7CisgICAgICAgIGZvciAoTm9kZSogbiA9IHlvdW5nZXN0LT5maXJzdENoaWxkKCk7IG47
IG4gPSBuLT5uZXh0U2libGluZygpKSB7CisgICAgICAgICAgICBpZiAobi0+aXNFbGVtZW50Tm9k
ZSgpKQorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKS0+cmVjYWxjU3R5
bGUoY2hhbmdlKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG4tPmlzVGV4dE5vZGUoKSkKKyAgICAg
ICAgICAgICAgICB0b1RleHQobiktPnJlY2FsY1RleHRTdHlsZShjaGFuZ2UpOworICAgICAgICB9
CisgICAgfQorCisgICAgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7
CisgICAgeW91bmdlc3QtPmNsZWFyTmVlZHNTdHlsZVJlY2FsYygpOworICAgIHlvdW5nZXN0LT5j
bGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOworfQorCitib29sIFNoYWRvd1Jvb3RMaXN0Ojpu
ZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKK3sKKyAgICByZXR1cm4gbV9uZWVk
c1JlY2FsY3VsYXRlQ29udGVudCB8fCAoeW91bmdlc3RTaGFkb3dSb290KCkgJiYgeW91bmdlc3RT
aGFkb3dSb290KCktPmhhc0NvbnRlbnRFbGVtZW50KCkpOworfQorCit2b2lkIFNoYWRvd1Jvb3RM
aXN0Ojpob3N0Q2hpbGRyZW5DaGFuZ2VkKCkKK3sKKyAgICBBU1NFUlQoeW91bmdlc3RTaGFkb3dS
b290KCkpOworCisgICAgaWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3QoKS0+aGFzQ29udGVudEVsZW1l
bnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhpcyByZXN1bHRzIGluIGZvcmNlZCBk
ZXRhY2hpbmcvYXR0YWNoaW5nIG9mIHRoZSBzaGFkb3cgcmVuZGVyIHRyZWUuIFNlZSBTaGFkb3dS
b290OjpyZWNhbGNTdHlsZSgpLgorICAgIHNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRT
aGFkb3coKTsKK30KKwordm9pZCBTaGFkb3dSb290TGlzdDo6c2V0TmVlZHNSZWF0dGFjaEhvc3RD
aGlsZHJlbkFuZFNoYWRvdygpCit7CisgICAgbV9uZWVkc1JlY2FsY3VsYXRlQ29udGVudCA9IHRy
dWU7CisgICAgQVNTRVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKKworICAgIE5vZGUqIGhvc3RO
b2RlID0geW91bmdlc3RTaGFkb3dSb290KCktPmhvc3QoKTsKKyAgICBpZiAoaG9zdE5vZGUpCisg
ICAgICAgIGhvc3ROb2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7Cit9CisKK3ZvaWQgU2hhZG93
Um9vdExpc3Q6OnJlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCkKK3sKKyAgICBBU1NFUlQo
eW91bmdlc3RTaGFkb3dSb290KCkpOworCisgICAgTm9kZSogaG9zdE5vZGUgPSB5b3VuZ2VzdFNo
YWRvd1Jvb3QoKS0+aG9zdCgpOworICAgIGlmICghaG9zdE5vZGUpCisgICAgICAgIHJldHVybjsK
KworICAgIGZvciAoTm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoY2hpbGQtPmF0dGFj
aGVkKCkpCisgICAgICAgICAgICBjaGlsZC0+ZGV0YWNoKCk7CisgICAgfQorCisgICAgcmVhdHRh
Y2goKTsKKworICAgIGZvciAoTm9kZSogY2hpbGQgPSBob3N0Tm9kZS0+Zmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoIWNoaWxk
LT5hdHRhY2hlZCgpKQorICAgICAgICAgICAgY2hpbGQtPmF0dGFjaCgpOworICAgIH0KIH0KIAog
SFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdExpc3Q6OmVuc3VyZVNlbGVjdG9yKCkKQEAg
LTE0Nyw0ICsyNTAsNDEgQEAgSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdExpc3Q6OmVu
c3VyZVNlbGVjdG9yKCkKICAgICByZXR1cm4gbV9zZWxlY3Rvci5nZXQoKTsKIH0KIAorCit2b2lk
IFNoYWRvd1Jvb3RMaXN0OjphZGRTaGFkb3dEaXN0cmlidXRpb24oU2hhZG93Um9vdCogcm9vdCwg
SFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRvd0VsZW1lbnQpCit7CisgICAgbV9zaGFkb3dEaXN0cmli
dXRpb24uYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKHJvb3QsIHNoYWRvd0VsZW1lbnQpKTsKK30KKwor
SFRNTFNoYWRvd0VsZW1lbnQqIFNoYWRvd1Jvb3RMaXN0OjpkaXN0cmlidXRlZFRvKFNoYWRvd1Jv
b3QqIHJvb3QpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NoYWRvd0Rp
c3RyaWJ1dGlvbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9zaGFkb3dEaXN0cmlidXRp
b25baV0uZmlyc3QgPT0gcm9vdCkKKyAgICAgICAgICAgIHJldHVybiBtX3NoYWRvd0Rpc3RyaWJ1
dGlvbltpXS5zZWNvbmQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK1NoYWRvd1Jvb3Qq
IFNoYWRvd1Jvb3RMaXN0OjpkaXN0cmlidXRlZEZyb20oSFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRv
d0VsZW1lbnQpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3NoYWRvd0Rp
c3RyaWJ1dGlvbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9zaGFkb3dEaXN0cmlidXRp
b25baV0uc2Vjb25kID09IHNoYWRvd0VsZW1lbnQpCisgICAgICAgICAgICByZXR1cm4gbV9zaGFk
b3dEaXN0cmlidXRpb25baV0uZmlyc3Q7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgU2hhZG93Um9vdExpc3Q6OnJlbW92ZVNoYWRvd0Rpc3RyaWJ1dGlvbkZyb20oSFRNTFNoYWRv
d0VsZW1lbnQqIHNoYWRvd0VsZW1lbnQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBt
X3NoYWRvd0Rpc3RyaWJ1dGlvbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9zaGFkb3dE
aXN0cmlidXRpb25baV0uc2Vjb25kID09IHNoYWRvd0VsZW1lbnQpIHsKKyAgICAgICAgICAgIG1f
c2hhZG93RGlzdHJpYnV0aW9uLnJlbW92ZShpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIH0KK30KKworCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dExpc3QuaAppbmRleCAyYjQ5ODQ5M2E4NDY3ZWZhOWEwZjYyMzUxMzhjNmRlZDQ0MmIwNjVkLi5k
YzQ1NmQzYTk5NDY1ZDU5NTAzYzQ2YjZjNWNiMDdjNWY4NzJkNDI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdExpc3QuaApAQCAtMjcsMTggKzI3LDIyIEBACiAjaWZuZGVmIFNoYWRvd1Jvb3RM
aXN0X2gKICNkZWZpbmUgU2hhZG93Um9vdExpc3RfaAogCisjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9E
b3VibHlMaW5rZWRMaXN0Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE5vZGU7CiBjbGFz
cyBFbGVtZW50OwotY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwogY2xhc3MgSFRNTENvbnRlbnRT
ZWxlY3RvcjsKK2NsYXNzIEhUTUxTaGFkb3dFbGVtZW50OworY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7
CiAKIGNsYXNzIFNoYWRvd1Jvb3RMaXN0IHsKIHB1YmxpYzoKQEAgLTU4LDE2ICs2MiwyOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZW1vdmVkRnJvbVRyZWUoYm9vbCBkZWVwKTsKICAgICB2b2lkIHdp
bGxSZW1vdmUoKTsKIAotICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwotCiAgICAgdm9p
ZCBhdHRhY2goKTsKICAgICB2b2lkIGRldGFjaCgpOworICAgIHZvaWQgcmVhdHRhY2goKTsKKwor
ICAgIGJvb2wgY2hpbGROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgYm9vbCBuZWVkc1N0eWxlUmVj
YWxjKCk7CisgICAgdm9pZCByZWNhbGNTaGFkb3dUcmVlU3R5bGUoTm9kZTo6U3R5bGVDaGFuZ2Up
OworICAgIHZvaWQgc2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAg
IHZvaWQgY2xlYXJOZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgYm9v
bCBuZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgdm9pZCByZWF0dGFj
aEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgp
OwogCiAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50Rm9yKE5vZGUqKSBjb25zdDsK
IAogICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yKCkgY29uc3Q7CiAgICAgSFRNTENv
bnRlbnRTZWxlY3RvciogZW5zdXJlU2VsZWN0b3IoKTsKIAorICAgIHZvaWQgYWRkU2hhZG93RGlz
dHJpYnV0aW9uKFNoYWRvd1Jvb3QqLCBIVE1MU2hhZG93RWxlbWVudCopOworICAgIEhUTUxTaGFk
b3dFbGVtZW50KiBkaXN0cmlidXRlZFRvKFNoYWRvd1Jvb3QqKSBjb25zdDsKKyAgICBTaGFkb3dS
b290KiBkaXN0cmlidXRlZEZyb20oSFRNTFNoYWRvd0VsZW1lbnQqKSBjb25zdDsKKyAgICB2b2lk
IHJlbW92ZVNoYWRvd0Rpc3RyaWJ1dGlvbkZyb20oSFRNTFNoYWRvd0VsZW1lbnQqKTsKKwogICAg
IGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0OwogCiBwcml2YXRlOgpAQCAtNzUsNiArOTIs
OCBAQCBwcml2YXRlOgogCiAgICAgRG91Ymx5TGlua2VkTGlzdDxTaGFkb3dSb290PiBtX3NoYWRv
d1Jvb3RzOwogICAgIE93blB0cjxIVE1MQ29udGVudFNlbGVjdG9yPiBtX3NlbGVjdG9yOworICAg
IFZlY3RvcjxzdGQ6OnBhaXI8U2hhZG93Um9vdCosIEhUTUxTaGFkb3dFbGVtZW50Kj4gPiBtX3No
YWRvd0Rpc3RyaWJ1dGlvbjsKKyAgICBib29sIG1fbmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgOiAx
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYWRvd1Jvb3RMaXN0KTsKIH07CiAKQEAgLTkz
LDkgKzExMiw5IEBAIGlubGluZSBTaGFkb3dSb290KiBTaGFkb3dSb290TGlzdDo6b2xkZXN0U2hh
ZG93Um9vdCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2hhZG93Um9vdHMudGFpbCgpOwogfQogCi1p
bmxpbmUgSFRNTENvbnRlbnRTZWxlY3RvciogU2hhZG93Um9vdExpc3Q6OnNlbGVjdG9yKCkgY29u
c3QKK2lubGluZSB2b2lkIFNoYWRvd1Jvb3RMaXN0OjpjbGVhck5lZWRzUmVhdHRhY2hIb3N0Q2hp
bGRyZW5BbmRTaGFkb3coKQogewotICAgIHJldHVybiBtX3NlbGVjdG9yLmdldCgpOworICAgIG1f
bmVlZHNSZWNhbGN1bGF0ZUNvbnRlbnQgPSBmYWxzZTsKIH0KIAogaW5saW5lIEVsZW1lbnQqIFNo
YWRvd1Jvb3RMaXN0Ojpob3N0KCkgY29uc3QKQEAgLTEwNCw2ICsxMjMsMTEgQEAgaW5saW5lIEVs
ZW1lbnQqIFNoYWRvd1Jvb3RMaXN0Ojpob3N0KCkgY29uc3QKICAgICByZXR1cm4geW91bmdlc3RT
aGFkb3dSb290KCktPmhvc3QoKTsKIH0KIAoraW5saW5lIEhUTUxDb250ZW50U2VsZWN0b3IqIFNo
YWRvd1Jvb3RMaXN0OjpzZWxlY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2VsZWN0b3Iu
Z2V0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCmluZGV4IGUzNDZkNzcy
YTE4ZjQ4NDAxNzZjNjczY2UzMThlZTFjYzZjNjVlMDMuLjQ0YzQ4NTQxMTViMjAyZTJkNGI0MDMz
NjQ1MzllMWVlNzk2OWRiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKQEAgLTYzLDcgKzYzLDkgQEAgYm9vbCBDb250ZW50
U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhOb2RlKiBub2RlKSBjb25zdAogICAgIGlmICghbm9kZSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgMQogICAgIEFTU0VSVChub2RlLT5wYXJlbnRO
b2RlKCkgPT0gbV9jb250ZW50RWxlbWVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCktPnNoYWRvd0hv
c3QoKSk7CisjZW5kaWYKIAogICAgIGlmIChtX2NvbnRlbnRFbGVtZW50LT5zZWxlY3QoKS5pc051
bGwoKSB8fCBtX2NvbnRlbnRFbGVtZW50LT5zZWxlY3QoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5jcHAKaW5kZXggMDZiZTIzMDM4OGVlMTkxMDg1MzdjNDM4YjYyNWE2YWFkMGNlZDc2
YS4uZGExOTBkMDVlMjc2MjFjYmVjYWUyZmVhODYwZjNkZGE3NWNkMjVlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCkBAIC05NSw3
ICs5NSw3IEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjpkZXRhY2goKQogCiAgICAgICAgIC8v
IFdoZW4gY29udGVudCBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUg
cmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IKICAgICAgICAgLy8gb3RoZXIg
Y29udGVudCBlbGVtZW50cy4KLSAgICAgICAgcm9vdC0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGls
ZHJlbkFuZFNoYWRvdygpOworICAgICAgICByb290LT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCkt
PnNldE5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB9CiAKICAgICBB
U1NFUlQobV9zZWxlY3Rpb25zLmlzRW1wdHkoKSk7CkBAIC0xMjEsOCArMTIxLDEzIEBAIHZvaWQg
SFRNTENvbnRlbnRFbGVtZW50OjpzZXRTZWxlY3QoY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3RW
YWx1ZSkKIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShBdHRyaWJ1dGUq
IGF0dHIpCiB7CiAgICAgaWYgKGF0dHItPm5hbWUoKSA9PSBzZWxlY3RBdHRyKSB7Ci0gICAgICAg
IGlmIChTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgp
KSkKKyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJl
ZVJvb3ROb2RlKCkpKSB7CisjaWYgMAogICAgICAgICAgICAgcm9vdC0+c2V0TmVlZHNSZWF0dGFj
aEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpOworI2Vsc2UKKyAgICAgICAgICAgIHJvb3QtPmhvc3Qo
KS0+c2hhZG93Um9vdExpc3QoKS0+c2V0TmVlZHNSZWF0dGFjaEhvc3RDaGlsZHJlbkFuZFNoYWRv
dygpOworI2VuZGlmCisgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAgSW5zZXJ0aW9uUG9p
bnQ6OnBhcnNlQXR0cmlidXRlKGF0dHIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmNwcAppbmRleCA1YzMwZmY2ZTE0MzRlMmE5MTcx
YjViMTkzMDY3N2JmZGQ2NzY5NjdhLi5lNGVkZTgwY2RjODE0YzIzZjQ4ZjgzMDFmMDYwY2U3OWQ4
OTZiNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVu
dFNlbGVjdG9yLmNwcApAQCAtMTA4LDE5ICsxMDgsMjIgQEAgSFRNTENvbnRlbnRTZWxlY3Rvcjo6
fkhUTUxDb250ZW50U2VsZWN0b3IoKQogICAgIEFTU0VSVChtX2NhbmRpZGF0ZXMuaXNFbXB0eSgp
KTsKIH0KIAotdm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpzZWxlY3QoSFRNTENvbnRlbnRFbGVt
ZW50KiBjb250ZW50RWxlbWVudCwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25z
KQordm9pZCBIVE1MQ29udGVudFNlbGVjdG9yOjpzZWxlY3QoSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50LCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqIHNlbGVjdGlvbnMpCiB7CiAgICAg
QVNTRVJUKHNlbGVjdGlvbnMtPmlzRW1wdHkoKSk7CiAKLSAgICBDb250ZW50U2VsZWN0b3JRdWVy
eSBxdWVyeShjb250ZW50RWxlbWVudCk7CisgICAgT3duUHRyPENvbnRlbnRTZWxlY3RvclF1ZXJ5
PiBxdWVyeTsKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmlzQ29udGVudEVsZW1lbnQoKSkKKyAg
ICAgICAgcXVlcnkgPSBhZG9wdFB0cihuZXcgQ29udGVudFNlbGVjdG9yUXVlcnkodG9IVE1MQ29u
dGVudEVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQpKSk7CisKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fY2FuZGlkYXRlcy5zaXplKCk7ICsraSkgewogICAgICAgICBOb2RlKiBjaGlsZCA9IG1f
Y2FuZGlkYXRlc1tpXS5nZXQoKTsKICAgICAgICAgaWYgKCFjaGlsZCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBpZiAoIXF1ZXJ5Lm1hdGNoZXMoY2hpbGQpKQorICAgICAgICBpZiAo
cXVlcnkgJiYgIXF1ZXJ5LT5tYXRjaGVzKGNoaWxkKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFJlZlB0cjxIVE1MQ29udGVudFNlbGVjdGlvbj4gc2VsZWN0aW9uID0gSFRNTENv
bnRlbnRTZWxlY3Rpb246OmNyZWF0ZShjb250ZW50RWxlbWVudCwgY2hpbGQpOworICAgICAgICBS
ZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IHNlbGVjdGlvbiA9IEhUTUxDb250ZW50U2VsZWN0
aW9uOjpjcmVhdGUoaW5zZXJ0aW9uUG9pbnQsIGNoaWxkKTsKIAogICAgICAgICBzZWxlY3Rpb25z
LT5hcHBlbmQoc2VsZWN0aW9uKTsKICAgICAgICAgbV9zZWxlY3Rpb25TZXQuYWRkKHNlbGVjdGlv
bi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29u
dGVudFNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNl
bGVjdG9yLmgKaW5kZXggMjliZDYxNjNmNTEyYWI0M2RmYjU3Zjc2MTNjN2FhNzdkMjZkOGY1OC4u
MTRlYTA1N2EwYTVlZDU3NDdjZGNhOTg5OGQyYTVlNWZhNTNjNTg3NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaApAQCAtMTMwLDcgKzEz
MCw3IEBAIHB1YmxpYzoKICAgICBIVE1MQ29udGVudFNlbGVjdG9yKCk7CiAgICAgfkhUTUxDb250
ZW50U2VsZWN0b3IoKTsKIAotICAgIHZvaWQgc2VsZWN0KEhUTUxDb250ZW50RWxlbWVudCosIEhU
TUxDb250ZW50U2VsZWN0aW9uTGlzdCopOworICAgIHZvaWQgc2VsZWN0KEluc2VydGlvblBvaW50
KiwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7CiAgICAgdm9pZCB1bnNlbGVjdChIVE1MQ29u
dGVudFNlbGVjdGlvbkxpc3QqKTsKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZmluZEZvcihO
b2RlKiBrZXkpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5jcHAKaW5kZXggY2IwMWNkMjFmZTBlMDA5YTVlOGUwMDNhYjliODRiNjhm
ZGQ0MjkzMC4uZGRlNzJjNjgxMzkyOTExNGExNGE3OTIzNDdiNGI4ZWFkYWUzYzJiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcApAQCAt
MzUsMTMgKzM1LDE1IEBACiAjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaGFk
b3dSb290TGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50Owog
CiBpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQ6OkhUTUxTaGFkb3dFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQorICAgIDogSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9jdW1l
bnQpCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzaGFkb3dUYWcpKTsKIH0K
QEAgLTU1LDYgKzU3LDU0IEBAIEhUTUxTaGFkb3dFbGVtZW50Ojp+SFRNTFNoYWRvd0VsZW1lbnQo
KQogewogfQogCit2b2lkIEhUTUxTaGFkb3dFbGVtZW50OjphdHRhY2goKQoreworICAgIFNoYWRv
d1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpOworCisgICAg
aWYgKHJvb3QpIHsKKyAgICAgICAgLy8gV2hlbiByb290IGlzIHRoZSBvbGRlc3Qgc2hhZG93IHJv
b3QsIDxzaGFkb3c+IHNob3VsZCBiZWhhdmUgbGlrZSA8Y29udGVudD4KKyAgICAgICAgaWYgKHJv
b3QtPmlzT2xkZXN0U2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICBIVE1MQ29udGVudFNlbGVj
dG9yKiBzZWxlY3RvciA9IHJvb3QtPmhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+ZW5zdXJlU2Vs
ZWN0b3IoKTsKKyAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsK
KyAgICAgICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgJm1fc2VsZWN0aW9ucyk7CisgICAg
ICAgIH0gZWxzZSBpZiAoIXJvb3QtPmhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+ZGlzdHJpYnV0
ZWRUbyhyb290LT5vbGRlclNoYWRvd1Jvb3QoKSkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghcm9v
dC0+aG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5kaXN0cmlidXRlZEZyb20odGhpcykpOworICAg
ICAgICAgICAgcm9vdC0+aG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5hZGRTaGFkb3dEaXN0cmli
dXRpb24ocm9vdC0+b2xkZXJTaGFkb3dSb290KCksIHRoaXMpOworICAgICAgICB9CisgICAgfQor
CisgICAgSW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaCgpOworCisgICAgaWYgKHJvb3QpIHsKKyAgICAg
ICAgaWYgKHJvb3QtPmlzT2xkZXN0U2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICBmb3IgKEhU
TUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBtX3NlbGVjdGlvbnMuZmlyc3QoKTsgc2Vs
ZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkKKyAgICAgICAgICAgICAgICBz
ZWxlY3Rpb24tPm5vZGUoKS0+YXR0YWNoKCk7CisgICAgICAgIH0gZWxzZSBpZiAocm9vdC0+aG9z
dCgpLT5zaGFkb3dSb290TGlzdCgpLT5kaXN0cmlidXRlZFRvKHJvb3QtPm9sZGVyU2hhZG93Um9v
dCgpKSkgeworICAgICAgICAgICAgQVNTRVJUKCFyb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0
YWNoZWQoKSk7CisgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoKCk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSFRNTFNoYWRvd0VsZW1lbnQ6OmRldGFjaCgp
Cit7CisgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJv
b3ROb2RlKCkpKSB7CisgICAgICAgIGlmIChyb290LT5pc09sZGVzdFNoYWRvd1Jvb3QoKSkgewor
ICAgICAgICAgICAgaWYgKEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+aG9z
dCgpLT5zaGFkb3dSb290TGlzdCgpLT5zZWxlY3RvcigpKQorICAgICAgICAgICAgICAgIHNlbGVj
dG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsKKyAgICAgICAgfSBlbHNlIGlmIChyb290LT5o
b3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPmRpc3RyaWJ1dGVkRnJvbSh0aGlzKSkgeworICAgICAg
ICAgICAgcm9vdC0+aG9zdCgpLT5zaGFkb3dSb290TGlzdCgpLT5yZW1vdmVTaGFkb3dEaXN0cmli
dXRpb25Gcm9tKHRoaXMpOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2hlbiBjb250ZW50IGVs
ZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUt
Y2FsY3VsYXRlIHNlbGVjdG9yIGZvcgorICAgICAgICAvLyBvdGhlciBjb250ZW50IGVsZW1lbnRz
LgorICAgICAgICByb290LT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNldE5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9zZWxlY3Rp
b25zLmlzRW1wdHkoKSk7CisgICAgSW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4IDE1MWM3
YTJhYmJkNmM1MDU3ODk0M2ZkNmRjY2ZmZjA1YzljOWZmZjcuLjg3NTEzNjM5YjU3ZDRlZTM3MTcw
MWU0MDQ2NGY2ZDRhNDQ1NjlmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuaApAQCAtMzMsMjEgKzMzLDI5IEBACiAKICNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKIAotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9u
UG9pbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MU2hhZG93RWxlbWVu
dCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBIVE1MU2hhZG93RWxlbWVudCA6IHB1Ymxp
YyBJbnNlcnRpb25Qb2ludCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFNo
YWRvd0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAog
ICAgIHZpcnR1YWwgfkhUTUxTaGFkb3dFbGVtZW50KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYXR0
YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOworCiBwcml2YXRlOgogICAgIEhUTUxT
aGFkb3dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgIHZpcnR1
YWwgYm9vbCBpc1NoYWRvd0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9OwogCitp
bmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIHRvSFRNTFNoYWRvd0VsZW1lbnQoTm9kZSogbm9kZSkK
K3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRv
d1RhZykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2hhZG93RWxlbWVudCo+KG5vZGUp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBRE9X
X0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBv
aW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4
IDQwZmFlMjNiNjkxNjEwZmQyMTkxNWQ5ZjE0YzJjYzk3YTZkNzFmZjUuLjg1OTIwNTQ5MDNlY2Y0
Nzg1NmMxZjVlMDFiNjcxOTAxNGNmZjEwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTENv
bnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsOCArNDcsMjUgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIEluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOwogICAgIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCBtX3NlbGVjdGlvbnM7
CisKKyAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNy
ZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKSB7IHJldHVybiAwOyB9CiB9
OwogCitpbmxpbmUgYm9vbCBpc0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCit7CisgICAgaWYg
KCFub2RlIHx8IG5vZGUtPmlzQ29udGVudEVsZW1lbnQoKSB8fCBub2RlLT5oYXNUYWdOYW1lKEhU
TUxOYW1lczo6c2hhZG93VGFnKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK2lubGluZSBJbnNlcnRpb25Qb2ludCogdG9JbnNlcnRpb25Qb2ludChOb2Rl
KiBub2RlKQoreworICAgIEFTU0VSVChpc0luc2VydGlvblBvaW50KG5vZGUpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SW5zZXJ0aW9uUG9pbnQqPihub2RlKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCmluZGV4IDg0ZTljZjc1NDA5NDlmOGQ3ZTEyYjVkZGZhMGM3ODIxMmQ0
YmYyYTguLjU4ZmI0MjZkYTA2OWVkZWRlODcwOGY1Y2ViNTIyNzJiOTRiYzQxNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTExOSw2ICsxMTksMTQgQEAgSW50ZXJuYWxz
OjpJbnRlcm5hbHMoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJlc2V0KGRvY3VtZW50KTsKIH0K
IAorU3RyaW5nIEludGVybmFsczo6YWRkcmVzcyhOb2RlKiBub2RlKQoreworICAgIGNoYXIgYnVm
WzMyXTsKKyAgICBzcHJpbnRmKGJ1ZiwgIiVwIiwgbm9kZSk7CisKKyAgICByZXR1cm4gU3RyaW5n
KGJ1Zik7Cit9CisKIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICghZG9jdW1lbnQpCkBAIC0yNDEsNiAr
MjQ5LDI2IEBAIEludGVybmFsczo6U2hhZG93Um9vdElmU2hhZG93RE9NRW5hYmxlZE9yTm9kZSog
SW50ZXJuYWxzOjpvbGRlc3RTaGFkb3dSb290KEVsZW1lCiAgICAgcmV0dXJuIGhvc3QtPnNoYWRv
d1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKIH0KIAorSW50ZXJuYWxzOjpTaGFkb3dS
b290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6OnlvdW5nZXJTaGFkb3dSb290
KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKCFzaGFkb3cgfHwg
IXNoYWRvdy0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qo
c2hhZG93KS0+eW91bmdlclNoYWRvd1Jvb3QoKTsKK30KKworSW50ZXJuYWxzOjpTaGFkb3dSb290
SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVyU2hhZG93Um9vdChOb2Rl
KiBzaGFkb3csIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghc2hhZG93IHx8ICFzaGFk
b3ctPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gdG9TaGFkb3dSb290KHNoYWRv
dyktPm9sZGVyU2hhZG93Um9vdCgpOworfQorCiB2b2lkIEludGVybmFsczo6cmVtb3ZlU2hhZG93
Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWhvc3Qp
IHsKQEAgLTI0OCw3ICsyNzYsNyBAQCB2b2lkIEludGVybmFsczo6cmVtb3ZlU2hhZG93Um9vdChF
bGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jvb3QoKTsKKyAgICBob3N0LT5yZW1vdmVTaGFkb3dS
b290TGlzdCgpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVl
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXgg
ZWEyZjhiOGFmMmMxMWNjZmMwYTZjZWY5Y2NhOGU2ZjQ0ZDA1YzU2ZC4uMDc0Mjg2YzQwNDBlYjlj
YjkyOTYwYjY4N2Y0MTg1NWZjMDEyZGU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5o
CkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBlbGVtZW50UmVuZGVyVHJl
ZUFzVGV4dChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAgU3RyaW5nIGFkZHJlc3Mo
Tm9kZSopOworCiAgICAgYm9vbCBpc1ByZWxvYWRlZChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYg
dXJsKTsKIAogICAgIHNpemVfdCBudW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGNvbnN0
IE5vZGUqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBAIC02OCw2ICs3MCw4IEBAIHB1YmxpYzoK
ICAgICBTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBzaGFkb3dSb290KEVsZW1l
bnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTaGFkb3dSb290SWZTaGFkb3dET01FbmFi
bGVkT3JOb2RlKiB5b3VuZ2VzdFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIG9sZGVzdFNoYWRv
d1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOworICAgIFNoYWRvd1Jvb3RJZlNo
YWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhj
ZXB0aW9uQ29kZSYpOworICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIG9s
ZGVyU2hhZG93Um9vdChOb2RlKiBzaGFkb3csIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJl
bW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQg
c2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoYm9vbCk7CiAgICAgRWxlbWVudCogaW5j
bHVkZXJGb3IoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbAppbmRleCBiYTc2ZDQ4NmRkZTg5NzExMjg4ZmIwNDkzYzEzNzRiYjgxNmM4MmNhLi5i
ZDRlZmY3MzgwODZhNTRmNjBiNmEyZmVjMTE0MGEyZmJjYjhjZDM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNyw2ICsyNyw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAg
IGludGVyZmFjZSBbCiAgICAgICAgIE9taXRDb25zdHJ1Y3RvcgogICAgIF0gSW50ZXJuYWxzIHsK
KyAgICAgICAgRE9NU3RyaW5nIGFkZHJlc3MoaW4gTm9kZSBub2RlKTsKKwogICAgICAgICBET01T
dHJpbmcgZWxlbWVudFJlbmRlclRyZWVBc1RleHQoaW4gRWxlbWVudCBlbGVtZW50KSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiBpc1ByZWxvYWRlZChpbiBEb2N1bWVudCBk
b2N1bWVudCwgaW4gRE9NU3RyaW5nIHVybCk7CiAKQEAgLTM3LDExICszOSwxNSBAQCBtb2R1bGUg
d2luZG93IHsKICAgICAgICAgU2hhZG93Um9vdCBzaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkg
cmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBTaGFkb3dSb290IHlvdW5nZXN0U2hhZG93
Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgU2hh
ZG93Um9vdCBvbGRlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNl
cHRpb24pOworICAgICAgICBTaGFkb3dSb290IHlvdW5nZXJTaGFkb3dSb290KGluIE5vZGUgcm9v
dCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBTaGFkb3dSb290IG9sZGVyU2hhZG93
Um9vdChpbiBOb2RlIHJvb3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICNlbHNlCiAgICAgICAg
IE5vZGUgZW5zdXJlU2hhZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0
aW9uKTsKICAgICAgICAgTm9kZSBzaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIHlvdW5nZXN0U2hhZG93Um9vdChpbiBFbGVtZW50
IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9kZSBvbGRlc3RTaGFkb3dS
b290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBOb2Rl
IHlvdW5nZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwor
ICAgICAgICBOb2RlIHlvdW5nZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01F
eGNlcHRpb24pOwogI2VuZGlmCiAgICAgICAgIHZvaWQgc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVl
c0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKTsKICAgICAgICAgRWxlbWVudCBpbmNsdWRlckZv
cihpbiBOb2RlIG5vZGUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgppbmRleCAyYWE3MGRmNWVkYjFlNmFjNDNkOTVlY2Q3MWQyYjY1NWQ0ZDU4NjUzLi5lMzY0ODZk
N2Q3NGZlNTgzNjc0N2M3ZjViODRmZDliOWY4NTBhMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVm
CkBAIC0xNzYsNyArMTc2LDcgQEAgRVhQT1JUUwogICAgICAgICA/cGFnZUBEb2N1bWVudEBXZWJD
b3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJvbFRpbnRzQEZyYW1lVmll
d0BXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoQFRl
eHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdU
RkBAUEFWRWxlbWVudEAyQEhIX05AWgotICAgICAgICA/cmVtb3ZlU2hhZG93Um9vdEBFbGVtZW50
QFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/cmVtb3ZlU2hhZG93Um9vdExpc3RARWxlbWVudEBX
ZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NjcmlwdEV4ZWN1dGlvbkNvbnRleHRASlNET01HbG9i
YWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0aW9uQ29udGV4dEAyQFhaCiAgICAg
ICAgID9zY3JvbGxFbGVtZW50VG9SZWN0QEZyYW1lVmlld0BXZWJDb3JlQEBRQUVYUEFWRWxlbWVu
dEAyQEFCVkludFJlY3RAMkBAWgogICAgICAgICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlB
WFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCmlu
ZGV4IGNiN2I3Y2U2OTZlMTJkMWI5ZmUxYjUyNzlkNmJiNmIzYmY1MDI3NGQuLmQ3ZDNkYmI0ZTg3
M2ExOTc2YzJkZWQ0ODg0NDlkOTJhN2EzYjQ1YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNG
TGl0ZS5kZWYKQEAgLTE3MSw3ICsxNzEsNyBAQCBFWFBPUlRTCiAgICAgICAgID9wYWdlQERvY3Vt
ZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/cGFpbnRDb250cm9sVGludHNA
RnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZSYW5nZUBXZWJD
b3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAgID9yZW1vdmVTaGFkb3dSb290
QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9yZW1vdmVTaGFkb3dSb290TGlzdEBF
bGVtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBK
U0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJA
WFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQ
QVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2Vi
Q29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rv
b2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRl
eCA4NWVjMDJiYjVkZjc4NDU2MzBmNmRhMmU2MTEyZDU0ZjY4YmQwZmFkLi5mZjE4M2Q4OTVkYmU4
OTczN2U5NDVjN2EzYWVlNmU1NDE1MWU5YzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xz
L3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAg
LTY2LDcgKzY2LDcgQEAgX1pON1dlYkNvcmU2SlNOb2RlMTBwdXRWaXJ0dWFsRVBOM0pTQzlFeGVj
U3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83SlNWYWx1ZUUKIF9aTjdXZWJDb3JlNkpTTm9k
ZTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk4zSlNDMTFTbG90VmlzaXRvckU7CiBfWk43V2ViQ29y
ZTZKU05vZGU2c19pbmZvRTsKIF9aTjdXZWJDb3JlNnRvTm9kZUVOM0pTQzdKU1ZhbHVlRTsKLV9a
TjdXZWJDb3JlN0VsZW1lbnQxNnJlbW92ZVNoYWRvd1Jvb3RFdjsKK19aTjdXZWJDb3JlN0VsZW1l
bnQyMHJlbW92ZVNoYWRvd1Jvb3RMaXN0RXY7CiBfWk43V2ViQ29yZTd0b1JhbmdlRU4zSlNDN0pT
VmFsdWVFOwogX1pON1dlYkNvcmU5SlNFbGVtZW50MTBwdXRWaXJ0dWFsRVBOM0pTQzlFeGVjU3Rh
dGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83SlNWYWx1ZUVSTlMxXzE1UHV0UHJvcGVydHlTbG90
RTsKIF9aTjdXZWJDb3JlOUpTRWxlbWVudDZzX2luZm9FOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMKaW5kZXggOTllM2ViZjZm
N2U1MmVkZGViYjViMzBlNDg5YjBiNmVkYTRlMGNiZS4uYzk5YjYzOGYyYWU4NjIxMjRmMDY3OGY1
MjZiNGQ5YjQ5NGNlMjRlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3Vy
Y2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNv
dXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzCkBAIC01MywxNyArNTMsMTkgQEAgZnVuY3Rpb24g
Y2hlY2soKSB7CiAgICAgfQogfQogCi1mdW5jdGlvbiBjcmVhdGVTcGFuV2l0aFRleHQodGV4dCkg
eworZnVuY3Rpb24gY3JlYXRlU3BhbldpdGhUZXh0KHRleHQsIGNsYXNzTmFtZSkgewogICAgIHZh
ciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgIHNwYW4uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAgIGlmIChjbGFzc05hbWUp
CisgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogICAgIHJldHVybiBzcGFuOwog
fQogCi1mdW5jdGlvbiBjcmVhdGVDb250ZW50V2l0aFNlbGVjdChzZWxlY3QsIGZhbGxiYWNrKSB7
CitmdW5jdGlvbiBjcmVhdGVDb250ZW50V2l0aFNlbGVjdChzZWxlY3QsIGZhbGxiYWNrVGV4dCkg
ewogICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3Vt
ZW50KTsKICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnc2VsZWN0Jywgc2VsZWN0KTsKLSAgICBp
ZiAoIWZhbGxiYWNrKQotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgiRkFMTEJBQ0siKSk7CisgICAgaWYgKGZhbGxiYWNrVGV4dCkKKyAgICAgICAgY29udGVu
dC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoZmFsbGJhY2tUZXh0KSk7CiAKICAgICBy
ZXR1cm4gY29udGVudDsKIH0KQEAgLTExOCwxMSArMTIwLDE2IEBAIGZ1bmN0aW9uIGRvVGVzdElm
TGVmdChyZXN0VGVzdHMpIHsKIAogZnVuY3Rpb24gZG9uZVRlc3QoKSB7CiAgICAgbG9nKCJURVNU
IENPTVBMRVRFRCIpOworICAgIGlmICh3aW5kb3cudGVhckRvd25PbmNlKQorICAgICAgICB3aW5k
b3cudGVhckRvd25PbmNlKCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OwogfQogCiAvLyBBIHRlc3QgZHJpdmVyLiBDYWxsIHRoaXMgYm9keS5vbmxvYWQuCiBmdW5jdGlv
biBkb1Rlc3QodGVzdHMpIHsKKyAgICBpZiAod2luZG93LnNldFVwT25jZSkKKyAgICAgICAgd2lu
ZG93LnNldFVwT25jZSgpOworCiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5hYTNkZWRkYzg1NTZjZDdjZTJiZDc1YjYxNTUzZmM1MGU1ODc3NWYzCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCBlbnN1cmUg
dGhhdCB0aGUgbXVsdGlwbGUgc2hhZG93IHJvb3QgaXMgYXZhaWxhYmxlLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIG51
bGwKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dSb290MQorUEFTUyBp
bnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QxKSBpcyBudWxsCitQQVNTIGludGVy
bmFscy5zaGFkb3dSb290KGRpdikgaXMgc2hhZG93Um9vdDIKK1BBU1MgaW50ZXJuYWxzLm9sZGVy
U2hhZG93Um9vdChzaGFkb3dSb290MikgaXMgc2hhZG93Um9vdDEKK1BBU1MgaW50ZXJuYWxzLnNo
YWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dSb290MworUEFTUyBpbnRlcm5hbHMub2xkZXJTaGFkb3dS
b290KHNoYWRvd1Jvb3QzKSBpcyBzaGFkb3dSb290MgorUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9v
dChkaXYpIGlzIG51bGwKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlw
bGUtc2hhZG93cm9vdC1yZW5kZXJpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43YjlmMDU2MGE3MTg2YjIyN2Y1OTFlNjgxOWE2Yjc1MGQ5ZGQyMmQzCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jv
b3QtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACit0ZXN0RG91YmxlU2hh
ZG93U3VidHJlZXMKK1BBU1MKK3Rlc3RUcmlwbGVTaGFkb3dTdWJ0cmVlcworUEFTUwordGVzdFNo
YWRvd1N1YnRyZWVzV2l0aENvbnRlbnQKK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVlc1dpdGhDb250
ZW50SW5PbGRlclN1YnRyZWUKK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3Jl
YXRpb24KK1BBU1MKK3Rlc3RTaGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3JlYXRpb25PdXRPZlRy
ZWUKK1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMWViZGUyNjM5OTZlODZjZGEzZWQ1NmFjMTgzNDU1YTI5MGVkY2YzZgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290LXJlbmRlcmluZy5odG1sCkBAIC0wLDAgKzEsMTc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlvbmluZyBlbnN1cmVzIHVu
ZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKK30KKworLnNwYW4geworICAgIGRpc3BsYXk6IGJveGVkLWlubGluZTsKKyAgICBtYXJn
aW46IDJweDsKKyAgICBib3JkZXI6IHNvbGlkOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBzZXRVcE9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3Vi
dHJlZXNFbmFibGVkKHRydWUpOworfQorCitmdW5jdGlvbiB0ZWF0RG93bk9uY2UoKSB7CisgICAg
aW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKGZhbHNlKTsKK30KKwor
dmFyIHRlc3RGdW5jcyA9IFtdOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0RG91Ymxl
U2hhZG93U3VidHJlZXMoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFu
PjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJv
b3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAg
ICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBC
RSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKwor
ICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0VHJp
cGxlU2hhZG93U3VidHJlZXMoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9z
cGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFy
IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5P
VCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNI
T1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykp
OworCisgICAgdmFyIHNyMyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMy5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzcjMuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9u
ZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RTaGFkb3dTdWJ0cmVlc1dp
dGhDb250ZW50KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bh
bj5MSUdIVDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnTElHSFQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRDogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBS
RU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNL
JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZChyb290KTsKKworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChm
dW5jdGlvbiB0ZXN0U2hhZG93U3VidHJlZXNXaXRoQ29udGVudEluT2xkZXJTdWJ0cmVlKGNhbGxJ
ZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicp
LmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5MSUdIVCAxPC9zcGFu
PjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdMSUdIVCAxJywgJ2MxJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdMSUdIVCAyJywgJ2MyJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMicsICdGQUxMQkFDSycpKTsKKyAgICBzcjEuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcp
KTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuYzEnLCAnRkFMTEJBQ0snKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3Qp
OworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRl
c3RTaGFkb3dTdWJ0cmVlc1dpdGhEeW5hbWljQ3JlYXRpb24oY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxk
aXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkxJR0hUIDE8L3NwYW4+PHNwYW4+TElHSFQgMjwv
c3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTElHSFQgMScsICdjMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTElHSFQgMicsICdjMicpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRF
UkVEJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXIn
KS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHNldFRpbWVvdXQoKGZ1bmN0aW9uKGNhbGxJZkRv
bmUsIHJvb3QpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc3IyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRl
bnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykpOworICAgICAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgICAgICBjYWxsSWZEb25lKCk7
CisgICAgfTt9KShjYWxsSWZEb25lLCByb290KSwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2go
ZnVuY3Rpb24gdGVzdFNoYWRvd1N1YnRyZWVzV2l0aER5bmFtaWNDcmVhdGlvbk91dE9mVHJlZShj
YWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TElHSFQgMTwv
c3Bhbj48c3Bhbj5MSUdIVCAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAxJywgJ2MxJykpOworICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAyJywgJ2MyJykpOworCisgICAg
dmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFM
TEJBQ0snKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6
IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICBzZXRUaW1lb3V0KChmdW5jdGlvbihj
YWxsSWZEb25lLCByb290KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNyMiA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAgICAgICAgc3IyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsK
KworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShjYWxsSWZEb25lLCByb290KSwgMCk7
Cit9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QodGVzdEZ1bmNz
KSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2
PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8
cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qtc2hhZG93Lmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1zaGFk
b3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41Y2U0ODE4MWUxYTNjODliYTZlNGMxODZlMDgxYTU2ZmU3NjY1
ZjEwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3Qtc2hhZG93Lmh0bWwKQEAgLTAsMCArMSwyNjIgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGVu
c3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7CisgICAgcG9zaXRp
b246IHJlbGF0aXZlOworfQorCisuc3BhbiB7CisgICAgZGlzcGxheTogYm94ZWQtaW5saW5lOwor
ICAgIG1hcmdpbjogMnB4OworICAgIGJvcmRlcjogc29saWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlw
dCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2Z1bmN0aW9uIHNldFVwT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVT
aGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlYXJEb3duT25jZSgp
IHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoZmFsc2Up
OworfQorCit2YXIgdGVzdEZ1bmNzID0gW107CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRl
c3RXaXRoU2luZ2xlU2hhZG93Um9vdChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZP
UkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzaGFkb3cnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5j
cy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoU2luZ2xlU2hhZG93Um9vdFdpdGhGYWxsYmFjayhjYWxs
SWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxz
cGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hh
ZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJB
Q0snKSk7CisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3Iu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5k
Q2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXIn
KS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNz
LnB1c2goZnVuY3Rpb24gdGVzdFdpdGhTaW5nbGVTaGFkb3dSb290V2l0aEZhbGxiYWNrQW5kRmFs
bGJhY2soY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkZB
TExCQUNLPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9u
ZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91YmxlU2hhZG93
Um9vdChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1j
b250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bh
bj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bh
bj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisg
ICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElm
RG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91YmxlU2hh
ZG93Um9vdFdpdGhPbmVTaGFkb3coY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNw
YW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bh
bj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICAvLyBNSUQgd29uJ3QgYmUgcmVu
ZGVyZWQuCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFy
IHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXIn
KS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNz
LnB1c2goZnVuY3Rpb24gdGVzdFdpdGhUcmlwbGVTaGFkb3dSb290KGNhbGxJZkRvbmUpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAzPC9zcGFuPjxzcGFuPkJFRk9SRSAyPC9zcGFu
PjxzcGFuPkJFRk9SRSAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+TUlEPC9zcGFuPiIgKwor
ICAgICAgICAiPHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjxzcGFuPkFG
VEVSIDM8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3Iy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgdmFyIHNyMyA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RSAzJykpOworICAgIHNyMy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMycp
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNo
KGZ1bmN0aW9uIHRlc3RXaXRoU2luZ2xlU2hhZG93Um9vdEJlZm9yZUNvbnRlbnQoY2FsbElmRG9u
ZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5u
ZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bh
bj48c3Bhbj5NIDE8L3NwYW4+PHNwYW4+Q09OVEVOVCBGQUxMQkFDSzwvc3Bhbj48c3Bhbj5NIDI8
L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdTSEFET1cgRkFMTEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7
CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ00gMScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0
aFNlbGVjdCgnc3BhbicsICdDT05URU5UIEZBTExCQUNLJykpOworICAgIHNyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTSAyJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30p
OworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0V2l0aFNpbmdsZVNoYWRvd1Jvb3RBZnRl
ckNvbnRlbnQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBl
Y3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9z
cGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5NIDE8L3NwYW4+PHNwYW4+U0hBRE9XIEZBTExCQUNL
PC9zcGFuPjxzcGFuPk0gMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSycpKTsKKyAgICB2YXIgc3IgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNl
bGVjdCgnc3BhbicsICdDT05URU5UIEZBTExCQUNLJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnTSAxJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7Cisg
ICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDInKSk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAg
Y2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91
YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRp
dj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5NSUQgMjwvc3Bhbj4iICsKKyAgICAgICAgIjxz
cGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRCAxPC9zcGFuPjxzcGFuPk1JRCAzPC9zcGFuPjxz
cGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2
PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMycsICdzcjMnKSk7Cisg
ICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAxJywgJ3NyMScpKTsK
KyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDInLCAnc3IyJykp
OworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsK
KyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExC
QUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHZh
ciBjb250ZW50MSA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IxJywgJ0NPTlRFTlQgRkFM
TEJBQ0sgMScpOworICAgIHNyMS5hcHBlbmRDaGlsZChjb250ZW50MSk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKHNoYWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdT
SEFET1cgRkFMTEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDIn
KSk7CisgICAgdmFyIGNvbnRlbnQ7CisgICAgc3IyLmFwcGVuZENoaWxkKGNvbnRlbnQgPSBjcmVh
dGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMicsICdDT05URU5UIEZBTExCQUNLIDInKSk7CisgICAg
Y29udGVudC50aXRsZSA9ICJkZWJ1Z3N0b3AiOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cy
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVu
Y3Rpb24gdGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQyKGNhbGxJZkRvbmUpIHsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRN
TCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPk1JRCAyPC9zcGFu
PjxzcGFuPk1JRCAzPC9zcGFuPjxzcGFuPk1JRCAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+
QkVGT1JFIDE8L3NwYW4+PHNwYW4+Q09OVEVOVCBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPlNIQURP
VyBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bh
bj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNSUQgMycsICdzcjMnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ01JRCAxJywgJ3NyMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTUlEIDInLCAnc3IyJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVj
dCgnLnNyMScsICdDT05URU5UIEZBTExCQUNLIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKHNo
YWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEn
KSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
OworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFM
TEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IyJywgJ0NPTlRFTlQg
RkFMTEJBQ0sgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxl
Y3QoJ3NwYW4nLCAnQ09OVEVOVCBGQUxMQkFDSyAzJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChz
aGFkb3cyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAy
JykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5h
cHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QodGVzdEZ1bmNzKSI+CisKKzxkaXYgaWQ9ImFjdHVh
bC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNv
bnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA5YmVjMDc2YWUzYjFm
Y2QxMmU5NzQ4NDQzNjYyYzgwODEwYmRmYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKQEAgLTAsMCArMSwzNSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+CitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZSB0aGF0IHRoZSBtdWx0aXBsZSBz
aGFkb3cgcm9vdCBpcyBhdmFpbGFibGUuIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRv
d1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAibnVsbCIp
OwordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKK3Nob3VsZEJl
KCJpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgInNoYWRvd1Jvb3QxIik7CitzaG91bGRCZSgi
aW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MSkiLCAibnVsbCIpOworCit2YXIg
c2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChkaXYpCitzaG91bGRCZSgiaW50ZXJu
YWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MiIpOworc2hvdWxkQmUoImludGVybmFs
cy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDIpIiwgInNoYWRvd1Jvb3QxIik7CisKK3ZhciBz
aGFkb3dSb290MyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50ZXJu
YWxzLnNoYWRvd1Jvb3QoZGl2KSIsICJzaGFkb3dSb290MyIpOworc2hvdWxkQmUoImludGVybmFs
cy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDMpIiwgInNoYWRvd1Jvb3QyIik7CisKK2ludGVy
bmFscy5yZW1vdmVTaGFkb3dSb290KGRpdik7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jv
b3QoZGl2KSIsICJudWxsIik7CisKK2ludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVz
RW5hYmxlZChmYWxzZSk7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5h
bWljLWV4cGVjdGVkLnR4dAppbmRleCBkOTc0Y2MxOTBjNjgwNTI2NWQ3YWRjOWI1YzEyN2ZmYzU3
ODZjNzIxLi41OGM4NmUyZTY5MjEyZWE1YzhlZTlkYTU4MzZhNmI5NGRjZGUyYmRiIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNr
LWR5bmFtaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy1leHBlY3RlZC50eHQKQEAgLTIyLDUgKzIy
LDExIEBAIHRlc3RDb21wbGV4UmVtb3ZlCiBQQVNTCiB0ZXN0Q29tcGxleFJlcGxhY2UKIFBBU1MK
K3Rlc3RDb250ZW50SW5Db250ZW50CitQQVNTCit0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNr
CitQQVNTCit0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNrRGlyZWN0CitQQVNTCiBURVNUIENP
TVBMRVRFRAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93
LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sCmluZGV4IDI3NjMyMGQ3
N2M0NDI3NmIzNDhiNDQxOGZiZTMyOTM0NmQwNjFhZjMuLjFmZWE5NGZkYWVmZGNiNzM5YjFjZmVj
MzExOTk0YTAxNjY2ODA0ZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5odG1sCkBA
IC0zMTksOCArMzE5LDYgQEAgZnVuY3Rpb24gdGVzdENvbXBsZXhSZXBsYWNlKGNhbGxJZkRvbmUp
IHsKIAogICAgIHZhciBzZWxlY3RDb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3Bh
bicpOwogICAgIHNlbGVjdENvbnRlbnQuc2V0QXR0cmlidXRlKCdpZCcsICdjb21wbGV4LTMnKTsK
LSAgICB7Ci0gICAgfQogICAgIGFwcGVuZFNoYWRvdyhzZWxlY3RDb250ZW50LCAnc3BhbicpOwog
CiAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdbV09OVCBT
RUxFQ1RFRF0nKSk7CkBAIC0zNDIsNiArMzQwLDk2IEBAIGZ1bmN0aW9uIHRlc3RDb21wbGV4UmVw
bGFjZShjYWxsSWZEb25lKSB7CiAgICAgc2V0VGltZW91dChmLCAwKTsKIH0KIAorZnVuY3Rpb24g
dGVzdENvbnRlbnRJbkNvbnRlbnQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+e1NI
QURPVzogPHNwYW4+UzE8L3NwYW4+PHNwYW4+UzI8L3NwYW4+fTwvZGl2PiI7CisKKyAgICB2YXIg
dGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzEnKSk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzInKSk7CisKKyAgICB2YXIgcm9vdCA9IGludGVybmFscy5l
bnN1cmVTaGFkb3dSb290KHRhcmdldCk7CisgICAgdmFyIGNvbnRlbnQxID0gaW50ZXJuYWxzLmNy
ZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICBjb250ZW50MS5zZXRBdHRyaWJ1dGUo
J3NlbGVjdCcsICdkaXYnKTsKKworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIntTSEFET1c6ICIpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNvbnRlbnQxKTsK
KyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ9IikpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGls
ZCh0YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjb250ZW50MSwgY2Fs
bElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIg
Y29udGVudDIgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAg
ICAgICAgICAgY29udGVudDIuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnc3BhbicpOworICAgICAg
ICAgICAgY29udGVudDIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdDT05URU5UIDIg
RkFMTEJBQ0snKSk7CisgICAgICAgICAgICBjb250ZW50MS5hcHBlbmRDaGlsZChjb250ZW50Mik7
CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBj
b250ZW50MSwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5j
dGlvbiB0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNrKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAg
ICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPkNPTlRFTlQgMiBGQUxMQkFDSzwvc3Bhbj59PC9kaXY+
IjsKKworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMScpKTsKKyAgICB0YXJn
ZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMicpKTsKKworICAgIHZhciByb290
ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKyAgICB2YXIgY29udGVudDEg
PSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAgIGNvbnRlbnQx
LnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ2RpdicpOworCisgICAgcm9vdC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgie1NIQURPVzogIikpOworICAgIHJvb3QuYXBwZW5kQ2hp
bGQoY29udGVudDEpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoIn0iKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQs
IGNvbnRlbnQxLCBjYWxsSWZEb25lKSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIHZhciBjb250ZW50MiA9IGludGVybmFscy5jcmVhdGVDb250ZW50RWxlbWVudChk
b2N1bWVudCk7CisgICAgICAgICAgICBjb250ZW50Mi5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdk
aXYnKTsKKyAgICAgICAgICAgIGNvbnRlbnQyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQ09OVEVOVCAyIEZBTExCQUNLJykpOworICAgICAgICAgICAgY29udGVudDEuYXBwZW5kQ2hp
bGQoY29udGVudDIpOworICAgICAgICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAg
IH0pKHRhcmdldCwgY29udGVudDEsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAw
KTsKK30KKworZnVuY3Rpb24gdGVzdENvbnRlbnRJbkNvbnRlbnRGYWxsYmFja0RpcmVjdChjYWxs
SWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5DT05URU5UIDIgRkFMTEJBQ0s8L3Nw
YW4+PC9kaXY+IjsKKworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMScpKTsK
KyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMicpKTsKKworICAg
IHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKyAgICB2YXIg
Y29udGVudDEgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAg
IGNvbnRlbnQxLnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ2RpdicpOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY29udGVudDEpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1j
b250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24o
dGFyZ2V0LCBjb250ZW50MSwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICB2YXIgY29udGVudDIgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVs
ZW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgY29udGVudDIuc2V0QXR0cmlidXRlKCdzZWxl
Y3QnLCAnZGl2Jyk7CisgICAgICAgICAgICBjb250ZW50Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0NPTlRFTlQgMiBGQUxMQkFDSycpKTsKKyAgICAgICAgICAgIGNvbnRlbnQxLmFw
cGVuZENoaWxkKGNvbnRlbnQyKTsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICAgICAg
fTsKKyAgICB9KSh0YXJnZXQsIGNvbnRlbnQxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVv
dXQoZiwgMCk7Cit9CisKIHZhciB0ZXN0RnVuY3MgPSBbCiAgICAgdGVzdEFwcGVuZEZhbGxiYWNr
LAogICAgIHRlc3RBcHBlbmRGYWxsYmFja0RlZXAsCkBAIC0zNTUsNyArNDQzLDkgQEAgdmFyIHRl
c3RGdW5jcyA9IFsKICAgICB0ZXN0Q29tcGxleEFwcGVuZCwKICAgICB0ZXN0Q29tcGxleFJlbW92
ZSwKICAgICB0ZXN0Q29tcGxleFJlcGxhY2UsCi0KKyAgICB0ZXN0Q29udGVudEluQ29udGVudCwK
KyAgICB0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNrLAorICAgIHRlc3RDb250ZW50SW5Db250
ZW50RmFsbGJhY2tEaXJlY3QKIF07CiAKIGZ1bmN0aW9uIGRvVGVzdElmTGVmdCgpIHsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJh
Y2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250
ZW50cy1mYWxsYmFjay1leHBlY3RlZC50eHQKaW5kZXggMzk1MjJiNGNkOWJhNjU1NzI0MDU5NzA1
MjY0Nzg5MWYyZDIyMDQ1NC4uMTEzMWViNWJmOGE5YzVlODNkYzVlMjg2YjU4YjAwYjdmNDg5MDcz
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50
cy1mYWxsYmFjay1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1leHBlY3RlZC50eHQKQEAgLTYsNCArNiw4IEBAIFBB
U1MKIFBBU1MKIFBBU1MKIFBBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFj
ay5odG1sCmluZGV4IGZhYmU2NGMyOTgzZDA4ZjI5MTYzOTVmMTU1MTlkODQyMzQ0NTNmNWEuLmIy
N2ZkNmVkMjg1YzcxN2QxMjZhYzUxMjdlMzMyNTNhN2Y1MDFkNDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2suaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLmh0
bWwKQEAgLTIxNCw2ICsyMTQsOTkgQEAgZnVuY3Rpb24gdGVzdENvbXBsZXhGYWxsYmFja0RlZXBB
Z2FpbigpIHsKICAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+e0lOTkVSOiA8c3Bhbj57U0hB
RE9XOiA8c3Bhbj57SU5ORVI6IDxzcGFuPkZBTExCQUNLPC9zcGFuPn08L3NwYW4+fTwvc3Bhbj59
PC9zcGFuPn08L3NwYW4+PC9kaXY+IjsKIH0KIAorZnVuY3Rpb24gdGVzdENvbnRlbnRJbkNvbnRl
bnQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHRhcmdldC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1MxJykpOworICAgIHRh
cmdldC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1MyJykpOworCisgICAgdmFyIHJv
b3QgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdCh0YXJnZXQpOworICAgIHZhciBjb250ZW50
MiA9IGludGVybmFscy5jcmVhdGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgY29udGVu
dDIuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnc3BhbicpOworICAgIGNvbnRlbnQyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQ09OVEVOVCAyIEZBTExCQUNLJykpOworCisgICAgdmFy
IGNvbnRlbnQxID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAg
ICBjb250ZW50MS5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKyAgICBjb250ZW50MS5h
cHBlbmRDaGlsZChjb250ZW50Mik7CisKKyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAiKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50
MSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgifSIpKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRh
aW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPlMxPC9zcGFu
PjxzcGFuPlMyPC9zcGFuPn08L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0Q29udGVudEluQ29u
dGVudEZhbGxiYWNrKCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMScp
KTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMicpKTsKKwor
ICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKyAgICB2
YXIgY29udGVudDIgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOwor
ICAgIGNvbnRlbnQyLnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ2RpdicpOworICAgIGNvbnRlbnQy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQ09OVEVOVCAyIEZBTExCQUNLJykpOwor
CisgICAgdmFyIGNvbnRlbnQxID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3Vt
ZW50KTsKKyAgICBjb250ZW50MS5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKyAgICBj
b250ZW50MS5hcHBlbmRDaGlsZChjb250ZW50Mik7CisKKyAgICByb290LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAiKSk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChjb250ZW50MSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSgifSIpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFu
PkNPTlRFTlQgMiBGQUxMQkFDSzwvc3Bhbj59PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVzdENv
bnRlbnRJbkNvbnRlbnRGYWxsYmFja1dpdGhEaXNwbGF5Tm9uZSgpIHsKKyAgICB2YXIgdGFyZ2V0
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzEnKSk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnUzInKSk7CisKKyAgICB2YXIgcm9vdCA9IGludGVybmFscy5lbnN1cmVT
aGFkb3dSb290KHRhcmdldCk7CisgICAgdmFyIGNvbnRlbnQyID0gaW50ZXJuYWxzLmNyZWF0ZUNv
bnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICBjb250ZW50Mi5zZXRBdHRyaWJ1dGUoJ3NlbGVj
dCcsICdkaXYnKTsKKyAgICBjb250ZW50Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0NPTlRFTlQgMiBGQUxMQkFDSycpKTsKKworICAgIHZhciBjb250ZW50MSA9IGludGVybmFscy5j
cmVhdGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgY29udGVudDEuc2V0QXR0cmlidXRl
KCdzZWxlY3QnLCAnZGl2Jyk7CisgICAgY29udGVudDEuYXBwZW5kQ2hpbGQoY29udGVudDIpOwor
CisgICAgdmFyIHMgPSBjcmVhdGVTcGFuV2l0aFRleHQoJ05PVCBSRU5ERVJFRCcpOworICAgIHMu
c3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICByb290LmFwcGVuZENoaWxkKHMpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIntTSEFET1c6ICIpKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGNvbnRlbnQxKTsKKyAgICByb290LmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCJ9IikpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxk
aXY+e1NIQURPVzogPHNwYW4+Q09OVEVOVCAyIEZBTExCQUNLPC9zcGFuPn08L2Rpdj4iOworfQor
CitmdW5jdGlvbiB0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNrRGlyZWN0KCkgeworICAgIHZh
ciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMicpKTsKKworICAgIHZhciByb290ID0gaW50ZXJuYWxz
LmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKyAgICB2YXIgY29udGVudDIgPSBpbnRlcm5hbHMu
Y3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAgIGNvbnRlbnQyLnNldEF0dHJpYnV0
ZSgnc2VsZWN0JywgJ2RpdicpOworICAgIGNvbnRlbnQyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQ09OVEVOVCAyIEZBTExCQUNLJykpOworCisgICAgdmFyIGNvbnRlbnQxID0gaW50
ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICBjb250ZW50MS5zZXRB
dHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKyAgICBjb250ZW50MS5hcHBlbmRDaGlsZChjb250
ZW50Mik7CisKKyAgICByb290LmFwcGVuZENoaWxkKGNvbnRlbnQxKTsKKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRN
TCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkNPTlRFTlQgMiBGQUxMQkFDSzwvc3Bhbj48L2Rpdj4i
OworfQorCiB2YXIgdGVzdEZ1bmNzID0gWwogICAgIHRlc3RGYWxsYmFjaywKICAgICB0ZXN0RmFs
bGJhY2tEZWVwLApAQCAtMjIyLDggKzMxNSwxMiBAQCB2YXIgdGVzdEZ1bmNzID0gWwogICAgIHRl
c3RDb21wbGV4RmFsbGJhY2ssCiAgICAgdGVzdENvbXBsZXhGYWxsYmFja0RlZXAsCiAgICAgdGVz
dENvbXBsZXhGYWxsYmFja0FnYWluLAotICAgIHRlc3RDb21wbGV4RmFsbGJhY2tEZWVwQWdhaW4K
LV0KKyAgICB0ZXN0Q29tcGxleEZhbGxiYWNrRGVlcEFnYWluLAorICAgIHRlc3RDb250ZW50SW5D
b250ZW50LAorICAgIHRlc3RDb250ZW50SW5Db250ZW50RmFsbGJhY2ssCisgICAgdGVzdENvbnRl
bnRJbkNvbnRlbnRGYWxsYmFja1dpdGhEaXNwbGF5Tm9uZSwKKyAgICB0ZXN0Q29udGVudEluQ29u
dGVudEZhbGxiYWNrRGlyZWN0CitdOwogCiBmdW5jdGlvbiBkb1Rlc3QoKSB7CiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWVsZW1lbnQuaHRtbAppbmRleCBjZmNmMzkxNDY2ZmY4MTA1MDU0YzY0Y2Mw
NzU4ZmU0ODFjMDlmNmYzLi5mNGE3MjZmN2RlNmJjODIxZDEwNzgwMzEzMmRhZDUxN2M0OGQxNDUx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQu
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQuaHRt
bApAQCAtNCwxMSArNCwxMSBAQAogPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxkaXY+Ci0gIDxzaGFkb3cg
aWQ9InNoYWRvdyI+PC9jb250ZW50PgorPGRpdiBpZD0iY29udGFpbmVyIj4KKyAgQkVGT1JFPHNo
YWRvdyBpZD0ic2hhZG93Ij5NSUQ8L3NoYWRvdz5BRlRFUgogPC9kaXY+CiA8c2NyaXB0PgotIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBzaGFkb3cgZWxlbWVudCBpcyBh
dmFpbGFibGUuIikKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IHRoZSBzaGFk
b3cgZWxlbWVudCBpcyBhdmFpbGFibGUuIikKIC8vIFNpbmNlIHNoYWRvdyBlbGVtZW50IGRvZXMg
bm90IGhhdmUgaXRzIG93biBBUElTLCBpdCBhY3RzIGxpa2UgYSBub3JtYWwgZWxlbWVudC4KIC8v
IFdlIGRvbid0IGhhdmUgdG8gZ3VhcmQgdGhpcyBieSBTSEFET1dfRE9NIGZsYWcgZm9yIG5vdy4K
IHZhciBzaGFkb3cgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2hhZG93Iik7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9Ta2lwcGVkCmluZGV4IDJlOTJmMzc3YmY1YTVjOTlmMTI4OTU3YjAyYjBlMWYyYzZi
MDkwMWUuLjU0YTcxMjg4MmM3Yzk1ODJkMTAyNGE3YWFlYzBmZDFlYzgyZWU0NzEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xOTc4LDYgKzE5NzgsOSBAQCBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hh
ZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJp
bmcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qtc2hhZG93Lmh0bWwK
IAogIyBDU1MgRmlsdGVycyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZCAobmVlZHMgRU5BQkxFX0NT
U19GSUxURVJTKS4KICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
NDY5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDk4YWMyODhhZmU0OTc3OTU1OGQyZmFj
MzU2NWFkOGVkMmZmZjIyNWUuLjc0YjU3ZWRhMTM0NTI4YmVlMjllZjZmMzViNzBlYTgyYThiMWJl
NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0zNjEsNiArMzYxLDkgQEAgZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211
bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jv
b3QtcmVuZGVyaW5nLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXNo
YWRvdy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6
Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBl
ZAppbmRleCBlMjg2NzYxYzQ2ODQ0ZmM3Njc4OGE2NzNiMDk2Y2MzMzc1MTk3OGM4Li44ZTQ0YmU1
MWRmZTI2YWRhNWJjMjkyNTlhNDk4YjkzYTllN2QyMmRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tp
cHBlZApAQCAtNDI2LDYgKzQyNiw5IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1h
cGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJv
b3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKK2Zh
c3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCitmYXN0L2Rv
bS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1zaGFkb3cuaHRtbAogCiAjIEpTQyBkb2VzIG5v
dCBzdXBwb3J0IHNldElzb2xhdGVkV29ybGRTZWN1cml0eU9yaWdpbiAoaHR0cDovL3dlYmtpdC5v
cmcvYi82MTU0MCkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvaXNvbGF0ZWRXb3JsZC9jcm9zcy1vcmln
aW4teGhyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGU5Yzg1MmE0NDllNTc2ZTM3
OTRlODIxOWJlMGY1NzRmNDU2MDU2MjAuLmZkZmM0NTU4YzZlN2FmODYwYjBhODQ3MmFiMTUyMWMw
Y2ZjNDNmNTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTY1LDYgKzE2NSw5IEBAIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290LXJlbmRlcmluZy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9v
dC1zaGFkb3cuaHRtbAogCiAjIENTUyBSZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBo
dHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEyCiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQKaW5kZXggYWJlZTkwY2Q4OTFjYTY0YTk1OWM0NmU1NTdjNWFlZGNjZDYxYmMzMC4uODE1
ODNlNGI5MWFjNTQ5ZmMzYzJkMWE1ZTYzYTc0NzNkNGZkMjc2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1NraXBwZWQKQEAgLTE0NTcsNiArMTQ1Nyw5IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9v
dC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0
bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCitm
YXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1zaGFkb3cuaHRtbAogCiAjIENTUyBS
ZWdpb25zIHN1cHBvcnQgbm90IHlldCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzU3MzEy
CiBmYXN0L3JlZ2lvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmluZGV4IGU2
ZWQ4NzllZTA5ZjE0MDQyMWU3ZmY2NzQzNDQ4ZWVlNWU2ZWJiNGYuLjI2NzI1ZTIyNWU3MmIxMzEz
MjBjNzA2ZjFiZjMzMTU5M2YzYmFkZTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbmNhaXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tp
cHBlZApAQCAtMTk2OSw2ICsxOTY5LDkgQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpz
LWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAor
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKK2Zhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXNoYWRvdy5odG1sCiAKICMgQ1NTIFJlZ2lv
bnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZh
c3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCAyMTEzMGFmNDNkYWZiNTdi
MWQwYzI5NjY4Nzk3NWNiMWJjZmI1ZTE4Li4wZDczNDY3ODlkZDRlY2NmOWYxOTQ2M2I1ODY2NzE2
MTUzMjUxZmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTA4NCw2ICsxMDg0LDkg
QEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFj
aGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290LXNoYWRvdy5odG1sCiAKICMgV1RSIG5lZWRzIGFuIGltcGxlbWVudGF0aW9uIGZvciBl
dmVudFNlbmRlci5jb250aW51b3VzTW91c2VTY3JvbGxCeQogIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0MTcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128657</attachid>
            <date>2012-02-23 22:57:03 -0800</date>
            <delta_ts>2012-02-28 22:56:10 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-78596-20120224155701.patch</filename>
            <type>text/plain</type>
            <size>72011</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGU4MTJm
ZmZmNjVhOTQzMTU0NjFiMDk4Y2M0MWJkZGM5MWVjODE1NmUuLmE4NGViYWI0MjQzYjgyNzg3YjE5
NTFiNmEyNThjYmRkY2QzYzY3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC05MTUsNyArOTE1
LDcgQEAgX19aTjdXZWJDb3JlNldpZGdldEQyRXYKIF9fWk43V2ViQ29yZTZ0b05vZGVFTjNKU0M3
SlNWYWx1ZUUKIF9fWk43V2ViQ29yZTdDb25zb2xlMjFzaG91bGRQcmludEV4Y2VwdGlvbnNFdgog
X19aTjdXZWJDb3JlN0NvbnNvbGUyNHNldFNob3VsZFByaW50RXhjZXB0aW9uc0ViCi1fX1pON1dl
YkNvcmU3RWxlbWVudDE2cmVtb3ZlU2hhZG93Um9vdEV2CitfX1pON1dlYkNvcmU3RWxlbWVudDIw
cmVtb3ZlU2hhZG93Um9vdExpc3RFdgogX19aTjdXZWJDb3JlN0VsZW1lbnQyMWJvdW5kc0luUm9v
dFZpZXdTcGFjZUV2CiBfX1pON1dlYkNvcmU3RWxlbWVudDlpbm5lclRleHRFdgogX19aTjdXZWJD
b3JlN0ludFJlY3Q1c2NhbGVFZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IGVkYzVhNjJlZjQw
MzRhNzdkZjkxMjlmNTlkYjhkNjE2OTVmZjE0MTQuLjkyYTg1YWI3N2U3MjM4NWEyM2UzMmJlNjk3
YjMyNjEwYTE2MGY1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTc2LDYgKzc2LDEwIEBA
CiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFNIQURPV19ET00p
CisjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTEyMiw3ICsxMjYs
NyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdQogCiBFbGVtZW50Ojp+RWxlbWVudCgpCiB7Ci0g
ICAgcmVtb3ZlU2hhZG93Um9vdCgpOworICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CiAgICAg
aWYgKG1fYXR0cmlidXRlTWFwKQogICAgICAgICBtX2F0dHJpYnV0ZU1hcC0+ZGV0YWNoRnJvbUVs
ZW1lbnQoKTsKIH0KQEAgLTkzMCw3ICs5MzQsNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaCgpCiAg
ICAgICAgIHBhcmVudFB1c2hlci5wdXNoKCk7CiAgICAgICAgIHNoYWRvd1Jvb3RMaXN0KCktPmF0
dGFjaCgpOwogCi0gICAgICAgIC8vIEluIGEgc2hhZG93IHRyZWUsIHNvbWUgb2YgbGlnaHQgY2hp
bGRyZW4gbWF5IGJlIGF0dGFjaGVkIGJ5ICdjb250ZW50JyBlbGVtZW50LgorICAgICAgICAvLyBJ
biBhIHNoYWRvdyB0cmVlLCBzb21lIG9mIGxpZ2h0IGNoaWxkcmVuIG1heSBiZSBhdHRhY2hlZCBi
eSA8Y29udGVudD4gb3IgPHNoYWRvdz4uCiAgICAgICAgIC8vIEhvd2V2ZXIsIHdoZW4gdGhlcmUg
aXMgbm8gY29udGVudCBlbGVtZW50IG9yIGNvbnRlbnQgZWxlbWVudCBkb2VzIG5vdCBzZWxlY3QK
ICAgICAgICAgLy8gYWxsIGxpZ2h0IGNoaWxkcmVuLCB3ZSBoYXZlIHRvIGF0dGFjaCB0aGUgcmVz
dCBvZiBsaWdodCBjaGlsZHJlbiBoZXJlLgogICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmly
c3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTE3
Myw3ICsxMTc3LDcgQEAgc3RhdGljIGJvb2wgdmFsaWRhdGVTaGFkb3dSb290KERvY3VtZW50KiBk
b2N1bWVudCwgU2hhZG93Um9vdCogc2hhZG93Um9vdCwgRXhjZXAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBFbGVtZW50OjpzZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4g
c2hhZG93Um9vdCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIEVsZW1lbnQ6OmFkZFNoYWRvd1Jv
b3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBpZiAoIXZhbGlkYXRlU2hhZG93Um9vdChkb2N1bWVudCgpLCBzaGFkb3dSb290Lmdl
dCgpLCBlYykpCiAgICAgICAgIHJldHVybjsKQEAgLTExODEsNyArMTE4NSwxMiBAQCB2b2lkIEVs
ZW1lbnQ6OnNldFNoYWRvd1Jvb3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290LCBF
eGNlcHRpb25Db2RlJiBlYwogICAgIGlmICghaGFzUmFyZURhdGEoKSkKICAgICAgICAgZW5zdXJl
UmFyZURhdGEoKTsKIAotICAgIHJlbW92ZVNoYWRvd1Jvb3QoKTsKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om11bHRpcGxlU2hhZG93U3Vi
dHJlZXNFbmFibGVkKCkpCisgICAgICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZWxzZQor
ICAgIHJlbW92ZVNoYWRvd1Jvb3RMaXN0KCk7CisjZW5kaWYKIAogICAgIHNoYWRvd1Jvb3QtPnNl
dFNoYWRvd0hvc3QodGhpcyk7CiAgICAgc2hhZG93Um9vdExpc3QoKS0+cHVzaFNoYWRvd1Jvb3Qo
c2hhZG93Um9vdC5nZXQoKSk7CkBAIC0xMTkwLDkgKzExOTksMTIgQEAgdm9pZCBFbGVtZW50Ojpz
ZXRTaGFkb3dSb290KFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gc2hhZG93Um9vdCwgRXhjZXB0aW9u
Q29kZSYgZWMKICAgICAgICAgc2hhZG93Um9vdC0+aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKICAg
ICBpZiAoYXR0YWNoZWQoKSkgewogICAgICAgICBzaGFkb3dSb290LT5sYXp5QXR0YWNoKCk7Cisg
ICAgICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvd1Jvb3RMaXN0KCktPnlvdW5nZXN0
U2hhZG93Um9vdCgpLT5vbGRlclNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVy
U2hhZG93Um9vdCgpKQorICAgICAgICAgICAgcm9vdC0+ZGV0YWNoKCk7CiAgICAgICAgIGZvciAo
Tm9kZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKQogICAgICAgICAgICAgY2hpbGQtPmRldGFjaCgpOwogICAgIH0KKwogfQogCiBTaGFk
b3dSb290KiBFbGVtZW50OjplbnN1cmVTaGFkb3dSb290KCkKQEAgLTEyMDMsNyArMTIxNSw3IEBA
IFNoYWRvd1Jvb3QqIEVsZW1lbnQ6OmVuc3VyZVNoYWRvd1Jvb3QoKQogICAgIHJldHVybiBTaGFk
b3dSb290OjpjcmVhdGUodGhpcywgU2hhZG93Um9vdDo6Q3JlYXRpbmdVc2VyQWdlbnRTaGFkb3dS
b290KS5nZXQoKTsKIH0KIAotdm9pZCBFbGVtZW50OjpyZW1vdmVTaGFkb3dSb290KCkKK3ZvaWQg
RWxlbWVudDo6cmVtb3ZlU2hhZG93Um9vdExpc3QoKQogewogICAgIGlmICghaGFzU2hhZG93Um9v
dCgpKQogICAgICAgICByZXR1cm47CkBAIC0xMjE1LDE2ICsxMjI3LDE5IEBAIHZvaWQgRWxlbWVu
dDo6cmVtb3ZlU2hhZG93Um9vdCgpCiAgICAgICAgICAgICBvbGRSb290LT5kZXRhY2goKTsKIAog
ICAgICAgICBvbGRSb290LT5zZXRTaGFkb3dIb3N0KDApOworICAgICAgICBvbGRSb290LT5zZXRQ
cmV2KDApOworICAgICAgICBvbGRSb290LT5zZXROZXh0KDApOwogICAgICAgICBkb2N1bWVudCgp
LT5hZG9wdElmTmVlZGVkKG9sZFJvb3QuZ2V0KCkpOwogICAgICAgICBpZiAob2xkUm9vdC0+aW5E
b2N1bWVudCgpKQogICAgICAgICAgICAgb2xkUm9vdC0+cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICBvbGRSb290LT5yZW1vdmVkRnJvbVRyZWUodHJ1ZSk7
Ci0gICAgICAgIGlmIChhdHRhY2hlZCgpKSB7Ci0gICAgICAgICAgICBmb3IgKE5vZGUqIGNoaWxk
ID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICAgICAgICAgIGlmICghY2hpbGQtPmF0dGFjaGVkKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNoaWxkLT5sYXp5QXR0YWNoKCk7Ci0gICAgICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGF0dGFjaGVkKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsg
Y2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmICgh
Y2hpbGQtPmF0dGFjaGVkKCkpCisgICAgICAgICAgICAgICAgY2hpbGQtPmxhenlBdHRhY2goKTsK
ICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDMxZGExZWRhY2M0MzU3
NjIyMjE2Yzk3OTVhZDNhNjUxZjE5YTU5YTYuLjZjODUzNDM4NzNlZmYyMDAzYzc0MTdhMDgzMzUz
ZmVlMTQzYjQ4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMjU1LDEyICsyNTUsMTEgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBoYXNTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgU2hhZG93Um9vdExp
c3QqIHNoYWRvd1Jvb3RMaXN0KCkgY29uc3Q7Ci0KLSAgICAvLyBGSVhNRTogVGhlc2UgQVBJIHdp
bGwgYmUgbW92ZWQgdG8gU2hhZG93Um9vdExpc3QuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4MzEzCi0gICAgdm9pZCBzZXRTaGFkb3dSb290KFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFkZFNoYWRvd1Jv
b3QoUGFzc1JlZlB0cjxTaGFkb3dSb290PiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVt
b3ZlU2hhZG93Um9vdExpc3QoKTsKKyAgICAvLyBGSVhNRTogZW5zdXJlU2hhZG93Um9vdCgpIHdp
bGwgYmUgcmVtb3ZlZCBsYXRlci4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Nzc2MDgKICAgICBTaGFkb3dSb290KiBlbnN1cmVTaGFkb3dSb290KCk7Ci0g
ICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZyYgc2hhZG93UHNldWRvSWQoKSBjb25zdDsKICAgICB2b2lkIHNldFNoYWRvd1BzZXVkb0lk
KGNvbnN0IEF0b21pY1N0cmluZyYsIEV4Y2VwdGlvbkNvZGUmID0gQVNTRVJUX05PX0VYQ0VQVElP
Tik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA2
NjNkNTVmNjg0YjFjZTMyYjNjZDZhNDliZGRjMmQ4NjljNzE1ODdjLi4wOTc3NDk0OTkzYTQ0MTFm
ZGQ2NzAzNWMyZmVmNTg3MWZhODZjNjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJDb250YWluZXJO
b2RlLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENv
bnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxT
aGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dU
aHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCkBAIC00Myw2ICs0NSwyMyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
K3N0YXRpYyBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZihOb2RlKik7CitzdGF0aWMgUmVu
ZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXJPZihOb2RlKik7CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBz
ZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4oSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50KQor
eworICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aXNDb250ZW50RWxlbWVudCgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3QoaW5zZXJ0
aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKTsKKyAgICBpZiAoIXJvb3QpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiByb290LT5pc09sZGVzdFNoYWRvd1Jvb3QoKTsK
K30KKwogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5v
ZGUpCiAgICAgOiBtX3BoYXNlKEF0dGFjaGluZ05vdEluVHJlZSkKICAgICAsIG1fbm9kZShub2Rl
KQpAQCAtNTYsMjAgKzc1LDI3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5n
Q29udGV4dChOb2RlKiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICBtX3BoYXNlID0gQXR0
YWNoaW5nU2hhZG93Q2hpbGQ7CisgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkgJiYgdG9T
aGFkb3dSb290KHBhcmVudCktPmlzWW91bmdlc3RTaGFkb3dSb290KCkpIHsKKyAgICAgICAgbV9w
aGFzZSA9IEF0dGFjaGluZ1lvdW5nZXN0U2hhZG93Q2hpbGQ7CiAgICAgICAgIG1fcGFyZW50Tm9k
ZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5zaGFkb3dIb3N0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAg
ICAgaWYgKHRvRWxlbWVudChwYXJlbnQpLT5oYXNTaGFkb3dSb290KCkpIHsKKyAgICBpZiAocGFy
ZW50LT5pc0VsZW1lbnROb2RlKCkgfHwgcGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAg
ICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHBhcmVudCktPmhhc1No
YWRvd1Jvb3QoKSkKICAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QgPSB0
b0VsZW1lbnQocGFyZW50KS0+c2hhZG93Um9vdExpc3QoKTsKLSAgICAgICAgICAgIGlmICgobV9p
bnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QtPmluc2VydGlvblBv
aW50Rm9yKG1fbm9kZSkpCi0gICAgICAgICAgICAgICAgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dS
b290TGlzdC0+aXNTZWxlY3RvckFjdGl2ZSgpKSB7Ci0gICAgICAgICAgICAgICAgbV9waGFzZSA9
IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOwotICAgICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJl
bmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2ludCku
cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBlbHNlIGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpKQorICAgICAgICAgICAg
bV92aXN1YWxQYXJlbnRTaGFkb3dSb290TGlzdCA9IHRvU2hhZG93Um9vdChwYXJlbnQpLT5ob3N0
KCktPnNoYWRvd1Jvb3RMaXN0KCk7CisKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93
Um9vdExpc3QpIHsKKyAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFs
UGFyZW50U2hhZG93Um9vdExpc3QtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpKSB7CisgICAg
ICAgICAgICAgICAgU2hhZG93Um9vdCogc2hhZG93VHJlZVJvb3QgPSB0b1NoYWRvd1Jvb3QobV9p
bnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpOworCisgICAgICAgICAgICAgICAg
aWYgKHNoYWRvd1RyZWVSb290LT5pc1lvdW5nZXN0U2hhZG93Um9vdCgpIHx8IHNoYWRvd1RyZWVS
b290LT5kaXN0cmlidXRlZFRvKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0
dGFjaGluZ0Rpc3RyaWJ1dGVkOworICAgICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JS
ZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQp
LnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBt
X3BoYXNlID0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQ7CkBAIC03NywxMSArMTAzLDIwIEBAIE5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9p
bnQocGFyZW50KSkgewotICAgICAgICAgICAgaWYgKHRvSW5zZXJ0aW9uUG9pbnQocGFyZW50KS0+
aGFzU2VsZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdEZh
bGxiYWNrZWQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0
dGFjaGluZ0ZhbGxiYWNrZWQ7CisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KHBhcmVudCkg
JiYgcGFyZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKHNlbGVj
dHNGcm9tTGlnaHRDaGlsZHJlbih0b0luc2VydGlvblBvaW50KHBhcmVudCkpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHRvSW5zZXJ0aW9uUG9pbnQocGFyZW50KS0+aGFzU2VsZWN0aW9uKCkpCisg
ICAgICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RGYWxsYmFja2VkOworICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGlu
Z0ZhbGxiYWNrZWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VS
VChwYXJlbnQtPmhhc1RhZ05hbWUoc2hhZG93VGFnKSk7CisgICAgICAgICAgICAgICAgU2hhZG93
Um9vdCogcm9vdCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocGFyZW50KS0+ZGlzdHJpYnV0ZWRGcm9t
KCk7CisgICAgICAgICAgICAgICAgaWYgKHJvb3QgJiYgcm9vdC0+Zmlyc3RDaGlsZCgpKQorICAg
ICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RmFsbGJhY2tlZDsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdG
YWxsYmFja2VkOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLnBhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0xMTksMzUgKzE1NCw1MyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6cmVsZWFzZVN0eWxlKCkKIAogc3RhdGljIFJlbmRlck9iamVjdCogbmV4dFJlbmRl
cmVyT2YoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCwgTm9kZSogY3VycmVudCkKIHsKLSAgICBIVE1M
Q29udGVudFNlbGVjdGlvbiogY3VycmVudFNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygp
LT5maW5kKGN1cnJlbnQpOwotICAgIGlmICghY3VycmVudFNlbGVjdGlvbikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgQVNTRVJUKGN1cnJlbnQpOwogCi0gICAgZm9yIChIVE1MQ29udGVudFNlbGVj
dGlvbiogc2VsZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbi0+bmV4dCgpOyBzZWxlY3Rpb247IHNl
bGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVuZGVyZXI7CisgICAgaWYgKHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbihwYXJlbnQp
KSB7CisgICAgICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBjdXJyZW50U2VsZWN0aW9uID0gcGFy
ZW50LT5zZWxlY3Rpb25zKCktPmZpbmQoY3VycmVudCk7CisgICAgICAgIGlmICghY3VycmVudFNl
bGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGZvciAoSFRNTENvbnRl
bnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb24tPm5leHQoKTsgc2VsZWN0
aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQocGFyZW50LT5oYXNUYWdO
YW1lKHNoYWRvd1RhZykpOworICAgIHJldHVybiBmaXJzdFJlbmRlcmVyT2YoY3VycmVudC0+bmV4
dFNpYmxpbmcoKSk7CiB9CiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIHByZXZpb3VzUmVuZGVyZXJP
ZihJbnNlcnRpb25Qb2ludCogcGFyZW50LCBOb2RlKiBjdXJyZW50KQogewotICAgIFJlbmRlck9i
amVjdCogbGFzdFJlbmRlcmVyID0gMDsKKyAgICBBU1NFUlQoY3VycmVudCk7CisKKyAgICBpZiAo
c2VsZWN0c0Zyb21MaWdodENoaWxkcmVuKHBhcmVudCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0
KiBsYXN0UmVuZGVyZXIgPSAwOworCisgICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNl
bGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoc2VsZWN0aW9u
LT5ub2RlKCkgPT0gY3VycmVudCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVy
KCkpCisgICAgICAgICAgICAgICAgbGFzdFJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgICAgIH0K
IAotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2Vs
ZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4
dCgpKSB7Ci0gICAgICAgIGlmIChzZWxlY3Rpb24tPm5vZGUoKSA9PSBjdXJyZW50KQotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0
aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBsYXN0UmVuZGVyZXIgPSByZW5k
ZXJlcjsKKyAgICAgICAgcmV0dXJuIGxhc3RSZW5kZXJlcjsKICAgICB9CiAKLSAgICByZXR1cm4g
bGFzdFJlbmRlcmVyOworICAgIEFTU0VSVChwYXJlbnQtPmhhc1RhZ05hbWUoc2hhZG93VGFnKSk7
CisgICAgcmV0dXJuIGxhc3RSZW5kZXJlck9mKGN1cnJlbnQtPnByZXZpb3VzU2libGluZygpKTsK
IH0KIAotc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50
KiBwYXJlbnQpCitzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2ZJbnNlcnRpb25Q
b2ludChJbnNlcnRpb25Qb2ludCogcGFyZW50KQogewotICAgIGlmIChwYXJlbnQtPmhhc1NlbGVj
dGlvbigpKSB7CisgICAgaWYgKHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbihwYXJlbnQpKSB7Cisg
ICAgICAgIGlmICghcGFyZW50LT5oYXNTZWxlY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBm
aXJzdFJlbmRlcmVyT2YocGFyZW50LT5maXJzdENoaWxkKCkpOworCisKICAgICAgICAgZm9yIChI
VE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZp
cnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKICAgICAg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJl
bmRlcmVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwpAQCAtMTU2LDIxICsy
MDksODQgQEAgc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mKEluc2VydGlvblBv
aW50KiBwYXJlbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBOb2Rl
UmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLm5leHRSZW5kZXJlcigpOworICAgIEFTU0VSVChwYXJl
bnQtPmhhc1RhZ05hbWUoc2hhZG93VGFnKSk7CisKKyAgICBTaGFkb3dSb290KiByb290ID0gdG9I
VE1MU2hhZG93RWxlbWVudChwYXJlbnQpLT5kaXN0cmlidXRlZEZyb20oKTsKKyAgICBpZiAoIXJv
b3QgfHwgIXJvb3QtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZpcnN0UmVuZGVyZXJP
ZihwYXJlbnQtPmZpcnN0Q2hpbGQoKSk7CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gcm9vdC0+
Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkLT5yZW5kZXJlcigpKQorICAg
ICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgIH0KKworICAgIHJldHVybiAwOwogfQogCi1z
dGF0aWMgUmVuZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXJPZihJbnNlcnRpb25Qb2ludCogcGFyZW50
KQorc3RhdGljIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNl
cnRpb25Qb2ludCogcGFyZW50KQogewotICAgIGlmIChwYXJlbnQtPmhhc1NlbGVjdGlvbigpKSB7
Ci0gICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+
c2VsZWN0aW9ucygpLT5sYXN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5w
cmV2aW91cygpKSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNl
bGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiByZW5k
ZXJlcjsKKyAgICBpZiAoc2VsZWN0c0Zyb21MaWdodENoaWxkcmVuKHBhcmVudCkpIHsKKyAgICAg
ICAgaWYgKHBhcmVudC0+aGFzU2VsZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGZvciAoSFRNTENv
bnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5sYXN0KCk7
IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5wcmV2aW91cygpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+
cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxhc3RSZW5kZXJl
ck9mKHBhcmVudC0+bGFzdENoaWxkKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgfQogCi0gICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KHBhcmVudCkucHJldmlv
dXNSZW5kZXJlcigpOworICAgIEFTU0VSVChwYXJlbnQtPmhhc1RhZ05hbWUoc2hhZG93VGFnKSk7
CisKKyAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocGFyZW50
KS0+ZGlzdHJpYnV0ZWRGcm9tKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IHJvb3Qt
Pmxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsK
KyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGQtPnJlbmRlcmVy
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgfSBl
bHNlCisgICAgICAgIHJldHVybiBsYXN0UmVuZGVyZXJPZihwYXJlbnQtPmxhc3RDaGlsZCgpKTsK
KworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVy
T2YoTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIC8v
IERvIG5vdCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQg
Zmxvdy10aHJlYWQuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAm
JiAhbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJl
cigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkgJiYg
bm9kZS0+c2hhZG93VHJlZVJvb3ROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIGZpcnN0ID0gZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQodG9JbnNlcnRpb25Qb2lu
dChub2RlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJl
ck9mKE5vZGUqIG5vZGUpCit7CisgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91
c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICAg
ICAgLy8gRG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZl
cmVudCBmbG93LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHls
ZSgpICYmICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJl
bmRlcmVyKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2Rl
KSAmJiBub2RlLT5zaGFkb3dUcmVlUm9vdE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRl
ck9iamVjdCogbGFzdCA9IGxhc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQodG9JbnNlcnRpb25Q
b2ludChub2RlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKQEAgLTE5MywyMSArMzA5LDcgQEAgUmVuZGVyT2Jq
ZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICBpZiAo
bV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkgJiYgIW1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
LT5hdHRhY2hlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9
IG1fbm9kZS0+bmV4dFNpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5v
dCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10
aHJlYWQuCi0gICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9k
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKLSAgICAg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZpcnN0ID0gZmlyc3RSZW5kZXJlck9mKHRvSW5zZXJ0
aW9uUG9pbnQobm9kZSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBmaXJzdFJlbmRlcmVyT2YobV9u
b2RlLT5uZXh0U2libGluZygpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CkBAIC0yMjgsMjAgKzMzMCw3IEBAIFJlbmRl
ck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9pZGFuY2Ug
YXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQgYWRkaW5n
IGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX25vZGUt
PnByZXZpb3VzU2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5v
dCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10
aHJlYWQuCi0gICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9k
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7Ci0gICAgICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVyT2YodG9JbnNlcnRpb25Q
b2ludChub2RlKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbGFzdFJlbmRlcmVyT2YobV9ub2RlLT5w
cmV2aW91c1NpYmxpbmcoKSk7CiB9CiAKIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKQEAgLTI2MCw3ICszNDksNyBAQCBSZW5kZXJPYmpl
Y3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwYXJlbnRSZW5kZXJlcigpIGNvbnN0CiAKIHZvaWQg
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Omhvc3RDaGlsZHJlbkNoYW5nZWQoKQogewotICAgIGlmICht
X3BoYXNlID09IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkKQorICAgIGlmIChtX3BoYXNlID09IEF0
dGFjaGluZ05vdERpc3RyaWJ1dGVkICYmIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QpCiAg
ICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93Um9vdExpc3QtPmhvc3RDaGlsZHJlbkNoYW5nZWQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250
ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA0
MzczZTJmY2EwNGQ4ZmI5NGUxODg0YzdjNDM5ZjY0YzI4NDU0YjM5Li5iMzVhZjg1NzBlNTE1YTUx
MzZhNWQxYjViNTczMjY2NmJmMzlkOGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZVJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgICAgICBBdHRhY2hp
bmdOb3REaXN0cmlidXRlZCwKICAgICAgICAgQXR0YWNoaW5nRmFsbGJhY2tlZCwKICAgICAgICAg
QXR0YWNoaW5nTm90RmFsbGJhY2tlZCwKLSAgICAgICAgQXR0YWNoaW5nU2hhZG93Q2hpbGQsCisg
ICAgICAgIEF0dGFjaGluZ1lvdW5nZXN0U2hhZG93Q2hpbGQsCiAgICAgfTsKIAogICAgIEF0dGFj
aGluZ1BoYXNlIG1fcGhhc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNmNmNTBh
Y2I5ODgxNDI5MzJlYTRhMGM3YTQzZTgxZGQ1OTk5ODkxNy4uNTljNGE3ODU0YTVlMjgyMmJjOGY3
M2QwYTE5NjU0MDEzOGI2MjMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNDgs
NiArNDgsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICAsIFRyZWVTY29wZSh0aGlzKQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKKyAg
ICAsIG1fc2hhZG93RWxlbWVudERpc3RyaWJ1dGVkVG8oMCkKICAgICAsIG1fYXBwbHlBdXRob3JT
aGVldHMoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKQEAgLTEyMyw3ICsxMjQsNyBA
QCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IFNoYWRvd1Jvb3Q6OmNyZWF0ZShFbGVtZW50KiBlbGVt
ZW50LCBTaGFkb3dSb290Q3JlYXRpb25QdQogICAgIFJlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dS
b290ID0gYWRvcHRSZWYobmV3IFNoYWRvd1Jvb3QoZWxlbWVudC0+ZG9jdW1lbnQoKSkpOwogCiAg
ICAgZWMgPSAwOwotICAgIGVsZW1lbnQtPnNldFNoYWRvd1Jvb3Qoc2hhZG93Um9vdCwgZWMpOwor
ICAgIGVsZW1lbnQtPmFkZFNoYWRvd1Jvb3Qoc2hhZG93Um9vdCwgZWMpOwogICAgIGlmIChlYykK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgQVNTRVJUKGVsZW1lbnQgPT0gc2hhZG93Um9vdC0+aG9z
dCgpKTsKQEAgLTE2NCwxMCArMTY1LDEwIEBAIFNoYWRvd1Jvb3RMaXN0KiBTaGFkb3dSb290Ojps
aXN0KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBTaGFkb3dSb290OjpoYXNDb250
ZW50RWxlbWVudCgpIGNvbnN0Citib29sIFNoYWRvd1Jvb3Q6Omhhc0luc2VydGlvblBvaW50KCkg
Y29uc3QKIHsKICAgICBmb3IgKE5vZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2
ZXJzZU5leHROb2RlKHRoaXMpKSB7Ci0gICAgICAgIGlmIChuLT5pc0NvbnRlbnRFbGVtZW50KCkp
CisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG4pKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0xODQsMTcgKzE4NSw0IEBAIHZvaWQgU2hhZG93Um9vdDo6c2V0QXBw
bHlBdXRob3JTaGVldHMoYm9vbCB2YWx1ZSkKICAgICBtX2FwcGx5QXV0aG9yU2hlZXRzID0gdmFs
dWU7CiB9CiAKLXZvaWQgU2hhZG93Um9vdDo6YXR0YWNoKCkKLXsKLSAgICAvLyBDaGlsZHJlbiBv
ZiBtX3NlbGVjdG9yIGlzIHBvcHVsYXRlZCBsYXppbHkgaW4KLSAgICAvLyBlbnN1cmVTZWxlY3Rv
cigpLCBhbmQgaGVyZSB3ZSBqdXN0IGVuc3VyZSB0aGF0Ci0gICAgLy8gaXQgaXMgaW4gY2xlYW4g
c3RhdGUuCi0gICAgLy8gRklYTUU6IFRoaXMgYXNzZXJ0aW9uIGJyZWFrcyBpZiBtdWx0aXBsZSBz
aGFkb3cgcm9vdHMgYXJlIGJlaW5nIGF0dGFjaGVkLgotICAgIC8vIFNoYWRvd1Jvb3RMaXN0IHNo
b3VsZCBoYXZlIHJlc3BvbnNpYmlsaXR5IG9mIHNpZGUgZWZmZWN0IG9mIHNlbGVjdG9yIGluIGF0
dGFjaGluZy9kZXRhY2hpbmcuCi0gICAgQVNTRVJUKCFob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCkt
PnNlbGVjdG9yKCkgfHwgIWhvc3QoKS0+c2hhZG93Um9vdExpc3QoKS0+c2VsZWN0b3IoKS0+aGFz
Q2FuZGlkYXRlcygpKTsKLSAgICBEb2N1bWVudEZyYWdtZW50OjphdHRhY2goKTsKLSAgICBpZiAo
SFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSBob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCkt
PnNlbGVjdG9yKCkpCi0gICAgICAgIHNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKLX0KLQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKaW5kZXggOWI5ZGIxNDQyYThlOTQ4ZGJmZDkxMDhmYTVkMDNhZGVi
MGZlNjdhMy4uY2YxMWI5MGIzMDMxNTg1MDg0NmQ2ZTIxNjgxNmRlMTFhOWQ4ZTQzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwogY2xhc3MgSFRNTENv
bnRlbnRTZWxlY3RvcjsKK2NsYXNzIEhUTUxTaGFkb3dFbGVtZW50OwogY2xhc3MgSW5zZXJ0aW9u
UG9pbnQ7CiBjbGFzcyBTaGFkb3dSb290TGlzdDsKIApAQCAtNjQsMTggKzY1LDIyIEBAIHB1Ymxp
YzoKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSopIGNvbnN0Owog
ICAgIHZvaWQgaG9zdENoaWxkcmVuQ2hhbmdlZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGF0dGFj
aCgpOwotCiAgICAgdmlydHVhbCBib29sIGFwcGx5QXV0aG9yU2hlZXRzKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRBcHBseUF1dGhvclNoZWV0cyhib29sKTsKIAogICAgIEVsZW1lbnQqIGhvc3QoKSBj
b25zdCB7IHJldHVybiBzaGFkb3dIb3N0KCk7IH0KICAgICBTaGFkb3dSb290TGlzdCogbGlzdCgp
IGNvbnN0OwogCi0gICAgU2hhZG93Um9vdCogeW91bmdlclNoYWRvd1Jvb3QoKSB7IHJldHVybiBw
cmV2KCk7IH0KLSAgICBTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3QoKSB7IHJldHVybiBuZXh0
KCk7IH0KKyAgICBTaGFkb3dSb290KiB5b3VuZ2VyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0dXJu
IHByZXYoKTsgfQorICAgIFNoYWRvd1Jvb3QqIG9sZGVyU2hhZG93Um9vdCgpIGNvbnN0IHsgcmV0
dXJuIG5leHQoKTsgfQorCisgICAgYm9vbCBpc1lvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0IHsg
cmV0dXJuICF5b3VuZ2VyU2hhZG93Um9vdCgpOyB9CisgICAgYm9vbCBpc09sZGVzdFNoYWRvd1Jv
b3QoKSBjb25zdCB7IHJldHVybiAhb2xkZXJTaGFkb3dSb290KCk7IH0KKworICAgIGJvb2wgaGFz
SW5zZXJ0aW9uUG9pbnQoKSBjb25zdDsKIAotICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBj
b25zdDsKKyAgICBIVE1MU2hhZG93RWxlbWVudCogZGlzdHJpYnV0ZWRUbygpIGNvbnN0OworICAg
IHZvaWQgc2V0RGlzdHJpYnV0ZWRUbyhIVE1MU2hhZG93RWxlbWVudCopOwogCiBwcml2YXRlOgog
ICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKQEAgLTg3LDkgKzkyLDIxIEBAIHByaXZhdGU6CiAK
ICAgICBTaGFkb3dSb290KiBtX3ByZXY7CiAgICAgU2hhZG93Um9vdCogbV9uZXh0OworICAgIEhU
TUxTaGFkb3dFbGVtZW50KiBtX3NoYWRvd0VsZW1lbnREaXN0cmlidXRlZFRvOwogICAgIGJvb2wg
bV9hcHBseUF1dGhvclNoZWV0cyA6IDE7CiB9OwogCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQq
IFNoYWRvd1Jvb3Q6OmRpc3RyaWJ1dGVkVG8oKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYWRv
d0VsZW1lbnREaXN0cmlidXRlZFRvOworfQorCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpzZXRE
aXN0cmlidXRlZFRvKEhUTUxTaGFkb3dFbGVtZW50KiBzaGFkb3dFbGVtZW50KQoreworICAgIEFT
U0VSVCghbV9zaGFkb3dFbGVtZW50RGlzdHJpYnV0ZWRUbyB8fCAhc2hhZG93RWxlbWVudCk7Cisg
ICAgbV9zaGFkb3dFbGVtZW50RGlzdHJpYnV0ZWRUbyA9IHNoYWRvd0VsZW1lbnQ7Cit9CisKIGlu
bGluZSBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3QoTm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQo
IW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dSb290KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
TGlzdC5jcHAKaW5kZXggM2FkZWU2MzcwMDNmZWVlYmJkNTNmZjcyZGMzNTdiYTExZDAzZDBmMy4u
YWIwYmJhMzNjOGVjZGE3OGMxNzQ0ODlkMTQyZDgxYjUxYjQ4NTYyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3RMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdExpc3QuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rv
ci5oIgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0
LmgiCkBAIC05OCwyMiArOTksMjEgQEAgdm9pZCBTaGFkb3dSb290TGlzdDo6d2lsbFJlbW92ZSgp
CiAKIHZvaWQgU2hhZG93Um9vdExpc3Q6OmF0dGFjaCgpCiB7Ci0gICAgLy8gRklYTUU6IEN1cnJl
bnRseSB3ZSBvbmx5IHN1cHBvcnQgdGhlIGNhc2UgdGhhdCB0aGUgc2hhZG93IHJvb3QgbGlzdCBo
YXMgYXQgbW9zdCBvbmUgc2hhZG93IHJvb3QuCi0gICAgLy8gU2VlIGFsc28gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NTAzIGFuZCBpdHMgZGVwZW5kZW50IGJ1Z3Mu
Ci0gICAgQVNTRVJUKG1fc2hhZG93Um9vdHMuc2l6ZSgpIDw9IDEpOworICAgIC8vIENoaWxkcmVu
IG9mIG1fc2VsZWN0b3IgaXMgcG9wdWxhdGVkIGxhemlseSBpbgorICAgIC8vIGVuc3VyZVNlbGVj
dG9yKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJlIHRoYXQgaXQgaXMgaW4gY2xlYW4gc3RhdGUu
CisgICAgQVNTRVJUKCFzZWxlY3RvcigpIHx8ICFzZWxlY3RvcigpLT5oYXNDYW5kaWRhdGVzKCkp
OwogCiAgICAgZm9yIChTaGFkb3dSb290KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJv
b3Q7IHJvb3QgPSByb290LT5vbGRlclNoYWRvd1Jvb3QoKSkgewogICAgICAgICBpZiAoIXJvb3Qt
PmF0dGFjaGVkKCkpCiAgICAgICAgICAgICByb290LT5hdHRhY2goKTsKICAgICB9CisKKyAgICBp
ZiAoSFRNTENvbnRlbnRTZWxlY3RvciogY29udGVudFNlbGVjdG9yID0gc2VsZWN0b3IoKSkKKyAg
ICAgICAgY29udGVudFNlbGVjdG9yLT5kaWRTZWxlY3QoKTsKIH0KIAogdm9pZCBTaGFkb3dSb290
TGlzdDo6ZGV0YWNoKCkKIHsKLSAgICAvLyBGSVhNRTogQ3VycmVudGx5IHdlIG9ubHkgc3VwcG9y
dCB0aGUgY2FzZSB0aGF0IHRoZSBzaGFkb3cgcm9vdCBsaXN0IGhhcyBhdCBtb3N0IG9uZSBzaGFk
b3cgcm9vdC4KLSAgICAvLyBTZWUgYWxzbyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzc1MDMgYW5kIGl0cyBkZXBlbmRlbnQgYnVncy4KLSAgICBBU1NFUlQobV9zaGFk
b3dSb290cy5zaXplKCkgPD0gMSk7Ci0KICAgICBmb3IgKFNoYWRvd1Jvb3QqIHJvb3QgPSB5b3Vu
Z2VzdFNoYWRvd1Jvb3QoKTsgcm9vdDsgcm9vdCA9IHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpKSB7
CiAgICAgICAgIGlmIChyb290LT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgcm9vdC0+ZGV0YWNo
KCk7CkBAIC0xMjIsNiArMTIyLDE1IEBAIHZvaWQgU2hhZG93Um9vdExpc3Q6OmRldGFjaCgpCiAK
IEluc2VydGlvblBvaW50KiBTaGFkb3dSb290TGlzdDo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSog
bm9kZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpOwor
CisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAg
aWYgKEhUTUxTaGFkb3dFbGVtZW50KiBzaGFkb3dFbGVtZW50ID0gdG9TaGFkb3dSb290KG5vZGUt
PnBhcmVudE5vZGUoKSktPmRpc3RyaWJ1dGVkVG8oKSkKKyAgICAgICAgICAgIHJldHVybiBzaGFk
b3dFbGVtZW50OworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlmICghbV9zZWxl
Y3RvcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZvdW5k
ID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKQEAgLTEzMCwxMSArMTM5LDYgQEAgSW5zZXJ0
aW9uUG9pbnQqIFNoYWRvd1Jvb3RMaXN0OjppbnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBj
b25zdAogICAgIHJldHVybiBmb3VuZC0+aW5zZXJ0aW9uUG9pbnQoKTsKIH0KIAotYm9vbCBTaGFk
b3dSb290TGlzdDo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Vs
ZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFNoYWRvd1Jv
b3RMaXN0OjpyZWF0dGFjaCgpCiB7CiAgICAgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdExpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290TGlzdC5oCmluZGV4IGRiMzE3MGE2ZDliM2RjNzU3NGMxMzYxNGI3Y2Q1Njk4ZjMxMzdiYjEu
Ljc0NDJkMmYyYTAyNGFmNDk0MmYzYjNiYjdmNmZlMWRiY2MxZDIzYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290TGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290TGlzdC5oCkBAIC03Niw4ICs3Niw2IEBAIHB1YmxpYzoKICAgICBIVE1MQ29u
dGVudFNlbGVjdG9yKiBzZWxlY3RvcigpIGNvbnN0OwogICAgIEhUTUxDb250ZW50U2VsZWN0b3Iq
IGVuc3VyZVNlbGVjdG9yKCk7CiAKLSAgICBib29sIGlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdDsK
LQogcHJpdmF0ZToKICAgICBFbGVtZW50KiBob3N0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKaW5kZXggNWMzMGZm
NmUxNDM0ZTJhOTE3MWI1YjE5MzA2NzdiZmRkNjc2OTY3YS4uZTRlZGU4MGNkYzgxNGMyM2Y0OGY4
MzAxZjA2MGNlNzlkODk2YjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKQEAgLTEwOCwxOSArMTA4LDIyIEBAIEhUTUxDb250
ZW50U2VsZWN0b3I6On5IVE1MQ29udGVudFNlbGVjdG9yKCkKICAgICBBU1NFUlQobV9jYW5kaWRh
dGVzLmlzRW1wdHkoKSk7CiB9CiAKLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6c2VsZWN0KEhU
TUxDb250ZW50RWxlbWVudCogY29udGVudEVsZW1lbnQsIEhUTUxDb250ZW50U2VsZWN0aW9uTGlz
dCogc2VsZWN0aW9ucykKK3ZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6c2VsZWN0KEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rp
b25zKQogewogICAgIEFTU0VSVChzZWxlY3Rpb25zLT5pc0VtcHR5KCkpOwogCi0gICAgQ29udGVu
dFNlbGVjdG9yUXVlcnkgcXVlcnkoY29udGVudEVsZW1lbnQpOworICAgIE93blB0cjxDb250ZW50
U2VsZWN0b3JRdWVyeT4gcXVlcnk7CisgICAgaWYgKGluc2VydGlvblBvaW50LT5pc0NvbnRlbnRF
bGVtZW50KCkpCisgICAgICAgIHF1ZXJ5ID0gYWRvcHRQdHIobmV3IENvbnRlbnRTZWxlY3RvclF1
ZXJ5KHRvSFRNTENvbnRlbnRFbGVtZW50KGluc2VydGlvblBvaW50KSkpOworCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9k
ZSogY2hpbGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghY2hpbGQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkK
KyAgICAgICAgaWYgKHF1ZXJ5ICYmICFxdWVyeS0+bWF0Y2hlcyhjaGlsZCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IHNlbGVj
dGlvbiA9IEhUTUxDb250ZW50U2VsZWN0aW9uOjpjcmVhdGUoY29udGVudEVsZW1lbnQsIGNoaWxk
KTsKKyAgICAgICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBzZWxlY3Rpb24gPSBIVE1M
Q29udGVudFNlbGVjdGlvbjo6Y3JlYXRlKGluc2VydGlvblBvaW50LCBjaGlsZCk7CiAKICAgICAg
ICAgc2VsZWN0aW9ucy0+YXBwZW5kKHNlbGVjdGlvbik7CiAgICAgICAgIG1fc2VsZWN0aW9uU2V0
LmFkZChzZWxlY3Rpb24uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRTZWxlY3Rvci5oCmluZGV4IDI5YmQ2MTYzZjUxMmFiNDNkZmI1N2Y3NjEzYzdh
YTc3ZDI2ZDhmNTguLjE0ZWEwNTdhMGE1ZWQ1NzQ3Y2RjYTk4OThkMmE1ZTVmYTUzYzU4NzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgK
QEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgSFRNTENvbnRlbnRTZWxlY3RvcigpOwog
ICAgIH5IVE1MQ29udGVudFNlbGVjdG9yKCk7CiAKLSAgICB2b2lkIHNlbGVjdChIVE1MQ29udGVu
dEVsZW1lbnQqLCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKKyAgICB2b2lkIHNlbGVjdChJ
bnNlcnRpb25Qb2ludCosIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwogICAgIHZvaWQgdW5z
ZWxlY3QoSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rp
b24qIGZpbmRGb3IoTm9kZSoga2V5KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGNiMDFjZDIxZmUwZTAwOWE1ZThl
MDAzYWI5Yjg0YjY4ZmRkNDI5MzAuLjIwYjE1NGUxOGMyMmJlMDkxMzhhMTFiNGJmZjVlNGZjMzNh
OTA3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxl
bWVudC5jcHAKQEAgLTM1LDEzICszNSwxNiBAQAogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50
LmgiCiAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisj
aW5jbHVkZSAiU2hhZG93Um9vdExpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEb2N1bWVudDsKIAogaW5saW5lIEhUTUxTaGFkb3dFbGVtZW50OjpIVE1MU2hhZG93RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAg
OiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICA6IEluc2VydGlvblBvaW50KHRh
Z05hbWUsIGRvY3VtZW50KQorICAgICwgZGlzdHJpYnV0ZWRTaGFkb3dSb290KDApCiB7CiAgICAg
QVNTRVJUKGhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzaGFkb3dUYWcpKTsKIH0KQEAgLTU1LDYgKzU4
LDU3IEBAIEhUTUxTaGFkb3dFbGVtZW50Ojp+SFRNTFNoYWRvd0VsZW1lbnQoKQogewogfQogCit2
b2lkIEhUTUxTaGFkb3dFbGVtZW50OjphdHRhY2goKQoreworICAgIFNoYWRvd1Jvb3QqIHJvb3Qg
PSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpOworICAgIGJvb2wgc2hhZG93RGlz
dHJpYnV0aW9uID0gZmFsc2U7CisKKyAgICBpZiAocm9vdCkgeworICAgICAgICAvLyBXaGVuIHJv
b3QgaXMgdGhlIG9sZGVzdCBzaGFkb3cgcm9vdCwgPHNoYWRvdz4gc2hvdWxkIGJlaGF2ZSBsaWtl
IDxjb250ZW50PgorICAgICAgICBpZiAocm9vdC0+aXNPbGRlc3RTaGFkb3dSb290KCkpIHsKKyAg
ICAgICAgICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+aG9zdCgpLT5z
aGFkb3dSb290TGlzdCgpLT5lbnN1cmVTZWxlY3RvcigpOworICAgICAgICAgICAgc2VsZWN0b3It
PnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMpOworICAgICAgICAgICAgc2VsZWN0b3ItPnNlbGVjdCh0
aGlzLCAmbV9zZWxlY3Rpb25zKTsKKyAgICAgICAgfSBlbHNlIGlmICghcm9vdC0+b2xkZXJTaGFk
b3dSb290KCktPmRpc3RyaWJ1dGVkVG8oKSkgeworICAgICAgICAgICAgc2hhZG93RGlzdHJpYnV0
aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHNldERpc3RyaWJ1dGVkRnJvbShyb290LT5vbGRlclNo
YWRvd1Jvb3QoKSk7CisgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+c2V0RGlz
dHJpYnV0ZWRUbyh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEluc2VydGlvblBvaW50
OjphdHRhY2goKTsKKworICAgIGlmIChyb290KSB7CisgICAgICAgIGlmIChyb290LT5pc09sZGVz
dFNoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiog
c2VsZWN0aW9uID0gbV9zZWxlY3Rpb25zLmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0g
c2VsZWN0aW9uLT5uZXh0KCkpCisgICAgICAgICAgICAgICAgc2VsZWN0aW9uLT5ub2RlKCktPmF0
dGFjaCgpOworICAgICAgICB9IGVsc2UgaWYgKHNoYWRvd0Rpc3RyaWJ1dGlvbikgeworICAgICAg
ICAgICAgQVNTRVJUKCFyb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoZWQoKSk7CisgICAg
ICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoKCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgSFRNTFNoYWRvd0VsZW1lbnQ6OmRldGFjaCgpCit7CisgICAgaWYgKFNo
YWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpKSB7Cisg
ICAgICAgIGlmIChyb290LT5pc09sZGVzdFNoYWRvd1Jvb3QoKSkgeworICAgICAgICAgICAgaWYg
KEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9vdC0+aG9zdCgpLT5zaGFkb3dSb290
TGlzdCgpLT5zZWxlY3RvcigpKQorICAgICAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgm
bV9zZWxlY3Rpb25zKTsKKyAgICAgICAgfSBlbHNlIGlmIChTaGFkb3dSb290KiBkaXN0cmlidXRl
ZFNoYWRvd1Jvb3QgPSBkaXN0cmlidXRlZEZyb20oKSkgeworICAgICAgICAgICAgZGlzdHJpYnV0
ZWRTaGFkb3dSb290LT5zZXREaXN0cmlidXRlZFRvKDApOworICAgICAgICAgICAgc2V0RGlzdHJp
YnV0ZWRGcm9tKDApOworICAgICAgICB9CisKKyAgICAgICAgLy8gV2hlbiBjb250ZW50IGVsZW1l
bnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2Fs
Y3VsYXRlIHNlbGVjdG9yIGZvcgorICAgICAgICAvLyBvdGhlciBjb250ZW50IGVsZW1lbnRzLgor
ICAgICAgICByb290LT5ob3N0KCktPnNoYWRvd1Jvb3RMaXN0KCktPnNldE5lZWRzUmVhdHRhY2hI
b3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9zZWxlY3Rpb25z
LmlzRW1wdHkoKSk7CisgICAgSW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCgpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4IDE1MWM3YTJh
YmJkNmM1MDU3ODk0M2ZkNmRjY2ZmZjA1YzljOWZmZjcuLjdlYmRkZWYyODFlNWEwNDc2MzhmMzRj
MDM0NWUxMDVkNGFjMzBkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TFNoYWRvd0VsZW1lbnQuaApAQCAtMzMsMjEgKzMzLDQ2IEBACiAKICNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKIAotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9p
bnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MU2hhZG93RWxlbWVudCA6
IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBIVE1MU2hhZG93RWxlbWVudCA6IHB1YmxpYyBJ
bnNlcnRpb25Qb2ludCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFNoYWRv
d0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAg
IHZpcnR1YWwgfkhUTUxTaGFkb3dFbGVtZW50KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOworCisgICAgU2hhZG93Um9vdCogZGlzdHJp
YnV0ZWRGcm9tKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0cmlidXRlZEZyb20oU2hhZG93Um9v
dCopOworCiBwcml2YXRlOgogICAgIEhUTUxTaGFkb3dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgYm9vbCBpc1NoYWRvd0VsZW1lbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBTaGFkb3dSb290KiBkaXN0cmlidXRlZFNoYWRvd1Jv
b3Q7CiB9OwogCitpbmxpbmUgU2hhZG93Um9vdCogSFRNTFNoYWRvd0VsZW1lbnQ6OmRpc3RyaWJ1
dGVkRnJvbSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRpc3RyaWJ1dGVkU2hhZG93Um9vdDsKK30K
KworaW5saW5lIHZvaWQgSFRNTFNoYWRvd0VsZW1lbnQ6OnNldERpc3RyaWJ1dGVkRnJvbShTaGFk
b3dSb290KiBzaGFkb3dSb290KQoreworICAgIEFTU0VSVCghZGlzdHJpYnV0ZWRTaGFkb3dSb290
IHx8ICFzaGFkb3dSb290KTsKKyAgICBkaXN0cmlidXRlZFNoYWRvd1Jvb3QgPSBzaGFkb3dSb290
OworfQorCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIHRvSFRNTFNoYWRvd0VsZW1lbnQoTm9k
ZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNoYWRvd1RhZykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2hhZG93RWxlbWVu
dCo+KG5vZGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2lu
dC5oCmluZGV4IDI5MjQzOTAzMjc3ZGVhMmVmY2JiNjc0MWNlZTA4OWNhZjMxMjU2ODguLjg1OTIw
NTQ5MDNlY2Y0Nzg1NmMxZjVlMDFiNjcxOTAxNGNmZjEwY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVk
ZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDYsMTMgKzQ3
LDE0IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QgbV9z
ZWxlY3Rpb25zOworCisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9k
ZVJlbmRlcmluZ0NvbnRleHQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgUmVuZGVy
T2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKikgeyByZXR1
cm4gMDsgfQogfTsKIAogaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQog
ewotICAgIC8vIEZJWE1FOiA8c2hhZG93PiBzaG91bGQgYWxzbyBiZSBJbnNlcnRpb25Qb2ludC4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKLSAg
ICBpZiAoIW5vZGUgfHwgbm9kZS0+aXNDb250ZW50RWxlbWVudCgpKQorICAgIGlmICghbm9kZSB8
fCBub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkgfHwgbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OnNoYWRvd1RhZykpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg0ZTljZjc1NDA5NDlmOGQ3ZTEy
YjVkZGZhMGM3ODIxMmQ0YmYyYTguLjU4ZmI0MjZkYTA2OWVkZWRlODcwOGY1Y2ViNTIyNzJiOTRi
YzQxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTExOSw2ICsxMTks
MTQgQEAgSW50ZXJuYWxzOjpJbnRlcm5hbHMoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJlc2V0
KGRvY3VtZW50KTsKIH0KIAorU3RyaW5nIEludGVybmFsczo6YWRkcmVzcyhOb2RlKiBub2RlKQor
eworICAgIGNoYXIgYnVmWzMyXTsKKyAgICBzcHJpbnRmKGJ1ZiwgIiVwIiwgbm9kZSk7CisKKyAg
ICByZXR1cm4gU3RyaW5nKGJ1Zik7Cit9CisKIGJvb2wgSW50ZXJuYWxzOjppc1ByZWxvYWRlZChE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIGlmICghZG9jdW1l
bnQpCkBAIC0yNDEsNiArMjQ5LDI2IEBAIEludGVybmFsczo6U2hhZG93Um9vdElmU2hhZG93RE9N
RW5hYmxlZE9yTm9kZSogSW50ZXJuYWxzOjpvbGRlc3RTaGFkb3dSb290KEVsZW1lCiAgICAgcmV0
dXJuIGhvc3QtPnNoYWRvd1Jvb3RMaXN0KCktPm9sZGVzdFNoYWRvd1Jvb3QoKTsKIH0KIAorSW50
ZXJuYWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Onlv
dW5nZXJTaGFkb3dSb290KE5vZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
aWYgKCFzaGFkb3cgfHwgIXNoYWRvdy0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVy
biB0b1NoYWRvd1Jvb3Qoc2hhZG93KS0+eW91bmdlclNoYWRvd1Jvb3QoKTsKK30KKworSW50ZXJu
YWxzOjpTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBJbnRlcm5hbHM6Om9sZGVy
U2hhZG93Um9vdChOb2RlKiBzaGFkb3csIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgh
c2hhZG93IHx8ICFzaGFkb3ctPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gdG9T
aGFkb3dSb290KHNoYWRvdyktPm9sZGVyU2hhZG93Um9vdCgpOworfQorCiB2b2lkIEludGVybmFs
czo6cmVtb3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBpZiAoIWhvc3QpIHsKQEAgLTI0OCw3ICsyNzYsNyBAQCB2b2lkIEludGVybmFsczo6cmVt
b3ZlU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGhvc3QtPnJlbW92ZVNoYWRvd1Jvb3QoKTsKKyAgICBob3N0
LT5yZW1vdmVTaGFkb3dSb290TGlzdCgpOwogfQogCiB2b2lkIEludGVybmFsczo6c2V0TXVsdGlw
bGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmgKaW5kZXggZWEyZjhiOGFmMmMxMWNjZmMwYTZjZWY5Y2NhOGU2ZjQ0ZDA1YzU2ZC4u
MDc0Mjg2YzQwNDBlYjljYjkyOTYwYjY4N2Y0MTg1NWZjMDEyZGU3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBl
bGVtZW50UmVuZGVyVHJlZUFzVGV4dChFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAg
U3RyaW5nIGFkZHJlc3MoTm9kZSopOworCiAgICAgYm9vbCBpc1ByZWxvYWRlZChEb2N1bWVudCos
IGNvbnN0IFN0cmluZyYgdXJsKTsKIAogICAgIHNpemVfdCBudW1iZXJPZlNjb3BlZEhUTUxTdHls
ZUNoaWxkcmVuKGNvbnN0IE5vZGUqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CkBAIC02OCw2ICs3
MCw4IEBAIHB1YmxpYzoKICAgICBTaGFkb3dSb290SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiBz
aGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBTaGFkb3dSb290
SWZTaGFkb3dET01FbmFibGVkT3JOb2RlKiB5b3VuZ2VzdFNoYWRvd1Jvb3QoRWxlbWVudCogaG9z
dCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5v
ZGUqIG9sZGVzdFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29kZSYpOworICAg
IFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVuYWJsZWRPck5vZGUqIHlvdW5nZXJTaGFkb3dSb290KE5v
ZGUqIHNoYWRvdywgRXhjZXB0aW9uQ29kZSYpOworICAgIFNoYWRvd1Jvb3RJZlNoYWRvd0RPTUVu
YWJsZWRPck5vZGUqIG9sZGVyU2hhZG93Um9vdChOb2RlKiBzaGFkb3csIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICB2b2lkIHJlbW92ZVNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgRXhjZXB0aW9uQ29k
ZSYpOwogICAgIHZvaWQgc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoYm9vbCk7CiAg
ICAgRWxlbWVudCogaW5jbHVkZXJGb3IoTm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBiYTc2ZDQ4NmRkZTg5NzExMjg4ZmIwNDkzYzEz
NzRiYjgxNmM4MmNhLi5iZDRlZmY3MzgwODZhNTRmNjBiNmEyZmVjMTE0MGEyZmJjYjhjZDM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC0yNyw2ICsyNyw4IEBAIG1vZHVs
ZSB3aW5kb3cgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIE9taXRDb25zdHJ1Y3RvcgogICAg
IF0gSW50ZXJuYWxzIHsKKyAgICAgICAgRE9NU3RyaW5nIGFkZHJlc3MoaW4gTm9kZSBub2RlKTsK
KwogICAgICAgICBET01TdHJpbmcgZWxlbWVudFJlbmRlclRyZWVBc1RleHQoaW4gRWxlbWVudCBl
bGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYm9vbGVhbiBpc1ByZWxvYWRl
ZChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gRE9NU3RyaW5nIHVybCk7CiAKQEAgLTM3LDExICsz
OSwxNSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgU2hhZG93Um9vdCBzaGFkb3dSb290KGlu
IEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBTaGFkb3dSb290
IHlvdW5nZXN0U2hhZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9u
KTsKICAgICAgICAgU2hhZG93Um9vdCBvbGRlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkg
cmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBTaGFkb3dSb290IHlvdW5nZXJTaGFkb3dS
b290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChET01FeGNlcHRpb24pOworICAgICAgICBTaGFkb3dS
b290IG9sZGVyU2hhZG93Um9vdChpbiBOb2RlIHJvb3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsK
ICNlbHNlCiAgICAgICAgIE5vZGUgZW5zdXJlU2hhZG93Um9vdChpbiBFbGVtZW50IGhvc3QpIHJh
aXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9kZSBzaGFkb3dSb290KGluIEVsZW1lbnQg
aG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogICAgICAgICBOb2RlIHlvdW5nZXN0U2hhZG93
Um9vdChpbiBFbGVtZW50IGhvc3QpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgTm9k
ZSBvbGRlc3RTaGFkb3dSb290KGluIEVsZW1lbnQgaG9zdCkgcmFpc2VzIChET01FeGNlcHRpb24p
OworICAgICAgICBOb2RlIHlvdW5nZXJTaGFkb3dSb290KGluIE5vZGUgcm9vdCkgcmFpc2VzIChE
T01FeGNlcHRpb24pOworICAgICAgICBOb2RlIHlvdW5nZXJTaGFkb3dSb290KGluIE5vZGUgcm9v
dCkgcmFpc2VzIChET01FeGNlcHRpb24pOwogI2VuZGlmCiAgICAgICAgIHZvaWQgc2V0TXVsdGlw
bGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKTsKICAgICAgICAgRWxl
bWVudCBpbmNsdWRlckZvcihpbiBOb2RlIG5vZGUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgppbmRleCA3MThkZmExOGJiNmRhN2ExYzkwM2I2MjUxNTg5NGI1MWM5
ZjBhMTE3Li4zZjlhNWVlYWY1MTAwM2ZhMDNmYTQ2YTMzY2UxZWY5OWEyNjMzYjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIv
d2luL1dlYktpdDIuZGVmCkBAIC0xNzYsNyArMTc2LDcgQEAgRVhQT1JUUwogICAgICAgICA/cGFn
ZUBEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKICAgICAgICAgP3BhaW50Q29udHJv
bFRpbnRzQEZyYW1lVmlld0BXZWJDb3JlQEBBQUVYWFoKICAgICAgICAgP3JhbmdlRnJvbUxvY2F0
aW9uQW5kTGVuZ3RoQFRleHRJdGVyYXRvckBXZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWUmFu
Z2VAV2ViQ29yZUBAQFdURkBAUEFWRWxlbWVudEAyQEhIX05AWgotICAgICAgICA/cmVtb3ZlU2hh
ZG93Um9vdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgorICAgICAgICA/cmVtb3ZlU2hhZG93Um9v
dExpc3RARWxlbWVudEBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHRASlNET01HbG9iYWxPYmplY3RAV2ViQ29yZUBAUUJFUEFWU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEAyQFhaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0QEZyYW1lVmlld0BXZWJDb3Jl
QEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgogICAgICAgICA/c2V0RE9NRXhjZXB0
aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDJDRkxpdGUuZGVmCmluZGV4IGMzNTllYTZlM2ZhODQyZDhiNjc1NjAzOGJhMWFmMDhhMTc0MjUz
ZGEuLjNmNzJiMGFkYjk1ZTk0ZThkMTU3NDZhMGVmZTg4ZGM4ZmZmYTBmMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKQEAgLTE2OSw3ICsxNjksNyBAQCBFWFBPUlRTCiAgICAg
ICAgID9wYWdlQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlBhZ2VAMkBYWgogICAgICAgICA/cGFp
bnRDb250cm9sVGludHNARnJhbWVWaWV3QFdlYkNvcmVAQEFBRVhYWgogICAgICAgICA/cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGhAVGV4dEl0ZXJhdG9yQFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVm
UHRyQFZSYW5nZUBXZWJDb3JlQEBAV1RGQEBQQVZFbGVtZW50QDJASEhfTkBaCi0gICAgICAgID9y
ZW1vdmVTaGFkb3dSb290QEVsZW1lbnRAV2ViQ29yZUBAUUFFWFhaCisgICAgICAgID9yZW1vdmVT
aGFkb3dSb290TGlzdEBFbGVtZW50QFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEBKU0RPTUdsb2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVj
dXRpb25Db250ZXh0QDJAWFoKICAgICAgICAgP3Njcm9sbEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3
QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50UmVjdEAyQEBaCiAgICAgICAgID9zZXRE
T01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcgppbmRleCBlZjcwZDgxYTRmYTdjZGUxOGVhYmIxZDM5OWU5OWQzMzU1NjA5ZDNj
Li45MDY1ZTk0YjBmMmE5MWE0NmU1NTM4ZjNmOTE1MGNjMDUwYzE4NjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKQEAgLTY2LDcgKzY2LDcgQEAgX1pON1dlYkNvcmU2SlNOb2RlMTBwdXRWaXJ0
dWFsRVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83SlNWYWx1ZUUKIF9a
TjdXZWJDb3JlNkpTTm9kZTIwdmlzaXRDaGlsZHJlblZpcnR1YWxFUk4zSlNDMTFTbG90VmlzaXRv
ckU7CiBfWk43V2ViQ29yZTZKU05vZGU2c19pbmZvRTsKIF9aTjdXZWJDb3JlNnRvTm9kZUVOM0pT
QzdKU1ZhbHVlRTsKLV9aTjdXZWJDb3JlN0VsZW1lbnQxNnJlbW92ZVNoYWRvd1Jvb3RFdjsKK19a
TjdXZWJDb3JlN0VsZW1lbnQyMHJlbW92ZVNoYWRvd1Jvb3RMaXN0RXY7CiBfWk43V2ViQ29yZTd0
b1JhbmdlRU4zSlNDN0pTVmFsdWVFOwogX1pON1dlYkNvcmU5SlNFbGVtZW50MTBwdXRWaXJ0dWFs
RVBOM0pTQzlFeGVjU3RhdGVFUktOUzFfMTBJZGVudGlmaWVyRU5TMV83SlNWYWx1ZUVSTlMxXzE1
UHV0UHJvcGVydHlTbG90RTsKIF9aTjdXZWJDb3JlOUpTRWxlbWVudDZzX2luZm9FOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMK
aW5kZXggOTllM2ViZjZmN2U1MmVkZGViYjViMzBlNDg5YjBiNmVkYTRlMGNiZS4uYzk5YjYzOGYy
YWU4NjIxMjRmMDY3OGY1MjZiNGQ5YjQ5NGNlMjRlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcworKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzCkBAIC01MywxNyArNTMs
MTkgQEAgZnVuY3Rpb24gY2hlY2soKSB7CiAgICAgfQogfQogCi1mdW5jdGlvbiBjcmVhdGVTcGFu
V2l0aFRleHQodGV4dCkgeworZnVuY3Rpb24gY3JlYXRlU3BhbldpdGhUZXh0KHRleHQsIGNsYXNz
TmFtZSkgewogICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwog
ICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCkpOworICAg
IGlmIChjbGFzc05hbWUpCisgICAgICAgIHNwYW4uY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogICAg
IHJldHVybiBzcGFuOwogfQogCi1mdW5jdGlvbiBjcmVhdGVDb250ZW50V2l0aFNlbGVjdChzZWxl
Y3QsIGZhbGxiYWNrKSB7CitmdW5jdGlvbiBjcmVhdGVDb250ZW50V2l0aFNlbGVjdChzZWxlY3Qs
IGZhbGxiYWNrVGV4dCkgewogICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRl
bnRFbGVtZW50KGRvY3VtZW50KTsKICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnc2VsZWN0Jywg
c2VsZWN0KTsKLSAgICBpZiAoIWZhbGxiYWNrKQotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgiRkFMTEJBQ0siKSk7CisgICAgaWYgKGZhbGxiYWNrVGV4dCkK
KyAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoZmFsbGJhY2tU
ZXh0KSk7CiAKICAgICByZXR1cm4gY29udGVudDsKIH0KQEAgLTExOCwxMSArMTIwLDE2IEBAIGZ1
bmN0aW9uIGRvVGVzdElmTGVmdChyZXN0VGVzdHMpIHsKIAogZnVuY3Rpb24gZG9uZVRlc3QoKSB7
CiAgICAgbG9nKCJURVNUIENPTVBMRVRFRCIpOworICAgIGlmICh3aW5kb3cudGVhckRvd25PbmNl
KQorICAgICAgICB3aW5kb3cudGVhckRvd25PbmNlKCk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpOwogfQogCiAvLyBBIHRlc3QgZHJpdmVyLiBDYWxsIHRoaXMgYm9keS5v
bmxvYWQuCiBmdW5jdGlvbiBkb1Rlc3QodGVzdHMpIHsKKyAgICBpZiAod2luZG93LnNldFVwT25j
ZSkKKyAgICAgICAgd2luZG93LnNldFVwT25jZSgpOworCiAgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxE
b25lKCk7CiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb250ZW50LWVsZW1lbnQtbW92ZS5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1tb3ZlLmh0
bWwKaW5kZXggOThjNTIwNTc3N2U0MWI5OWYwYjRiZGNmMzExYTlkODNiNTMzMTQwZS4uM2JjMzg3
MmNmOWJjNjFjNjdmZTQ5YWU5YjYxNWYzYzZiZjU2ZGE2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1tb3ZlLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxlbWVudC1tb3ZlLmh0bWwKQEAgLTIyLDcg
KzIyLDcgQEAgZnVuY3Rpb24gdGVzdFJlbW92ZUNvbnRlbnQoY2FsbElmRG9uZSkgewogICAgIHJv
b3QuaW5uZXJIVE1MID0gIjxzcGFuPkxJR0hUPC9zcGFuPiI7CiAKICAgICAvLyBDcmVhdGUgc2hh
ZG93IHRyZWUuCi0gICAgdmFyIGNvbnRlbnQgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3Bh
bicpOworICAgIHZhciBjb250ZW50ID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAn
RkFMTEJBQ0snKTsKICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChyb290
KTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIpKTsKICAg
ICBzci5hcHBlbmRDaGlsZChjb250ZW50KTsKQEAgLTQ4LDggKzQ4LDggQEAgZnVuY3Rpb24gdGVz
dFJlbW92ZUNvbnRlbnRUb1JlY2FsYzEoY2FsbElmRG9uZSkgewogICAgIHJvb3QuaW5uZXJIVE1M
ID0gIjxzcGFuIGNsYXNzPSdjMSc+TElHSFQgMTwvc3Bhbj48c3Bhbj5MSUdIVCAyPC9zcGFuPiI7
CiAKICAgICAvLyBDcmVhdGUgc2hhZG93IHRyZWUuCi0gICAgdmFyIGNvbnRlbnQxID0gY3JlYXRl
Q29udGVudFdpdGhTZWxlY3QoJy5jMScpOwotICAgIHZhciBjb250ZW50MiA9IGNyZWF0ZUNvbnRl
bnRXaXRoU2VsZWN0KCdzcGFuJyk7CisgICAgdmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdp
dGhTZWxlY3QoJy5jMScsICdGQUxMQkFDSycpOworICAgIHZhciBjb250ZW50MiA9IGNyZWF0ZUNv
bnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJyk7CiAgICAgdmFyIHNyID0gaW50ZXJu
YWxzLmVuc3VyZVNoYWRvd1Jvb3Qocm9vdCk7CiAgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCJCRUZPUkUiKSk7CiAgICAgc3IuYXBwZW5kQ2hpbGQoY29udGVudDEpOwpAQCAt
NzcsOCArNzcsOCBAQCBmdW5jdGlvbiB0ZXN0UmVtb3ZlQ29udGVudFRvUmVjYWxjMihjYWxsSWZE
b25lKSB7CiAgICAgcm9vdC5pbm5lckhUTUwgPSAiPHNwYW4+TElHSFQgMTwvc3Bhbj48c3BhbiBj
bGFzcz0nYzEnPkxJR0hUIDI8L3NwYW4+IjsKIAogICAgIC8vIENyZWF0ZSBzaGFkb3cgdHJlZS4K
LSAgICB2YXIgY29udGVudDEgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLmMxJyk7Ci0gICAg
dmFyIGNvbnRlbnQyID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nKTsKKyAgICB2YXIg
Y29udGVudDEgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLmMxJywgJ0ZBTExCQUNLJyk7Cisg
ICAgdmFyIGNvbnRlbnQyID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJB
Q0snKTsKICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChyb290KTsKICAg
ICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIpKTsKICAgICBzci5h
cHBlbmRDaGlsZChjb250ZW50MSk7CkBAIC0xMzMsNyArMTMzLDcgQEAgZnVuY3Rpb24gdGVzdFJl
bW92ZVNoYWRvd1Jvb3QoY2FsbElmRG9uZSkgewogICAgIHJvb3QuaW5uZXJIVE1MID0gIjxzcGFu
PkxJR0hUPC9zcGFuPiI7CiAKICAgICAvLyBDcmVhdGUgc2hhZG93IHRyZWUuCi0gICAgdmFyIGNv
bnRlbnQgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicpOworICAgIHZhciBjb250ZW50
ID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKTsKICAgICB2YXIg
c3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChyb290KTsKICAgICBzci5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIpKTsKICAgICBzci5hcHBlbmRDaGlsZChjb250
ZW50KTsKQEAgLTE1OSw3ICsxNTksNyBAQCBmdW5jdGlvbiB0ZXN0UmVtb3ZlQ29udGVudEFuZFJl
bW92ZVNoYWRvd1Jvb3QxKGNhbGxJZkRvbmUpIHsKICAgICByb290LmlubmVySFRNTCA9ICI8c3Bh
bj5MSUdIVDwvc3Bhbj4iOwogCiAgICAgLy8gQ3JlYXRlIHNoYWRvdyB0cmVlLgotICAgIHZhciBj
b250ZW50ID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nKTsKKyAgICB2YXIgY29udGVu
dCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJyk7CiAgICAgdmFy
IHNyID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3Qocm9vdCk7CiAgICAgc3IuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCJCRUZPUkUiKSk7CiAgICAgc3IuYXBwZW5kQ2hpbGQoY29u
dGVudCk7CkBAIC0xODYsNyArMTg2LDcgQEAgZnVuY3Rpb24gdGVzdFJlbW92ZUNvbnRlbnRBbmRS
ZW1vdmVTaGFkb3dSb290MihjYWxsSWZEb25lKSB7CiAgICAgcm9vdC5pbm5lckhUTUwgPSAiPHNw
YW4+TElHSFQgMTwvc3Bhbj48c3BhbiBjbGFzcz0nYzEnPkxJR0hUIDI8L3NwYW4+IjsKIAogICAg
IC8vIENyZWF0ZSBzaGFkb3cgdHJlZS4KLSAgICB2YXIgY29udGVudCA9IGNyZWF0ZUNvbnRlbnRX
aXRoU2VsZWN0KCcuYzEnKTsKKyAgICB2YXIgY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2Vs
ZWN0KCcuYzEnLCAnRkFMTEJBQ0snKTsKICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hh
ZG93Um9vdChyb290KTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkJF
Rk9SRSIpKTsKICAgICBzci5hcHBlbmRDaGlsZChjb250ZW50KTsKQEAgLTIyMSw3ICsyMjEsNyBA
QCBmdW5jdGlvbiB0ZXN0QXBwZW5kQ29udGVudDEoY2FsbElmRG9uZSkgewogCiAgICAgdmFyIGYg
PSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkgewogICAgICAgICByZXR1cm4gZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICB2YXIgY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdz
cGFuJyk7CisgICAgICAgICAgICB2YXIgY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0
KCdzcGFuJywgJ0ZBTExCQUNLJyk7CiAgICAgICAgICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5z
dXJlU2hhZG93Um9vdChyb290KTsKICAgICAgICAgICAgIHNyLmluc2VydEJlZm9yZShjb250ZW50
LCBzci5sYXN0Q2hpbGQpOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PFNQ
QU4+TElHSFQ8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKQEAgLTI0Nyw4ICsyNDcs
OCBAQCBmdW5jdGlvbiB0ZXN0QXBwZW5kQ29udGVudDIoY2FsbElmRG9uZSkgewogCiAgICAgdmFy
IGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkgewogICAgICAgICByZXR1cm4gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICB2YXIgY29udGVudDEgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVj
dCgnLmMyJyk7Ci0gICAgICAgICAgICB2YXIgY29udGVudDIgPSBjcmVhdGVDb250ZW50V2l0aFNl
bGVjdCgnc3BhbicpOworICAgICAgICAgICAgdmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdp
dGhTZWxlY3QoJy5jMicsICdGQUxMQkFDSycpOworICAgICAgICAgICAgdmFyIGNvbnRlbnQyID0g
Y3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKTsKICAgICAgICAgICAg
IHZhciBzciA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KHJvb3QpOwogICAgICAgICAgICAg
c3IuaW5zZXJ0QmVmb3JlKGNvbnRlbnQxLCBzci5sYXN0Q2hpbGQpOwogICAgICAgICAgICAgc3Iu
aW5zZXJ0QmVmb3JlKGNvbnRlbnQyLCBzci5sYXN0Q2hpbGQpOwpAQCAtMjY5LDE2ICsyNjksMjAg
QEAgZnVuY3Rpb24gdGVzdEFwcGVuZENvbnRlbnQzKGNhbGxJZkRvbmUpIHsKICAgICAvLyBDcmVh
dGUgc2hhZG93IHRyZWUuCiAgICAgdmFyIHNyID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3Qo
cm9vdCk7CiAgICAgdmFyIG1pZCA9IGNyZWF0ZVNwYW5XaXRoVGV4dCgiTUlEIik7CisgICAgdmFy
IGIgPSBjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIpOworICAgIC8vIGIudGl0bGUgPSAiZGVi
dWdzdG9wIjsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIp
KTsKICAgICBzci5hcHBlbmRDaGlsZChtaWQpOwotICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZUNv
bnRlbnRXaXRoU2VsZWN0KCcuYzInKSk7CisgICAgdmFyIGMgPSBjcmVhdGVDb250ZW50V2l0aFNl
bGVjdCgnLmMyJywgJ0ZBTExCQUNLJykKKyAgICBzci5hcHBlbmRDaGlsZChjKTsKICAgICBzci5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkFGVEVSIikpOwogCiAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKIAog
ICAgIHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIG1pZCwgY2FsbElmRG9uZSkgewogICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgY29udGVudCA9IGNyZWF0ZUNvbnRl
bnRXaXRoU2VsZWN0KCdzcGFuJyk7CisgICAgICAgICAgICB2YXIgY29udGVudCA9IGNyZWF0ZUNv
bnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJyk7CisgICAgICAgICAgICBjb250ZW50
LnRpdGxlID0gImRlYnVnc3RvcCI7CiAgICAgICAgICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5z
dXJlU2hhZG93Um9vdChyb290KTsKICAgICAgICAgICAgIHNyLmluc2VydEJlZm9yZShjb250ZW50
LCBtaWQpOwogICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPQpAQCAtMjk4LDggKzMwMiw4IEBAIGZ1bmN0aW9uIHRlc3RDaGFu
Z2VPcmRlck9mQ29udGVudChjYWxsSWZEb25lKSB7CiAKICAgICAvLyBDcmVhdGUgc2hhZG93IHRy
ZWUuCiAgICAgdmFyIHNyID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3Qocm9vdCk7Ci0gICAg
dmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMScpOwotICAgIHZhciBj
b250ZW50MiA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJyk7CisgICAgdmFyIGNvbnRl
bnQxID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMScsICdGQUxMQkFDSycpOworICAgIHZh
ciBjb250ZW50MiA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJyk7
CiAgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCJCRUZPUkUiKSk7CiAgICAg
c3IuYXBwZW5kQ2hpbGQoY29udGVudDEpOwogICAgIHNyLmFwcGVuZENoaWxkKGNvbnRlbnQyKTsK
QEAgLTMzNiw3ICszNDAsNyBAQCBmdW5jdGlvbiB0ZXN0TW92ZUxpZ2h0Q2hpbGRPdXQoY2FsbElm
RG9uZSkgewogCiAgICAgLy8gQ3JlYXRlIHNoYWRvdyB0cmVlIGluICduMScKICAgICB2YXIgc3Ig
PSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChuMSk7Ci0gICAgdmFyIGNvbnRlbnQgPSBjcmVh
dGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicpOworICAgIHZhciBjb250ZW50ID0gY3JlYXRlQ29u
dGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKTsKICAgICBzci5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIpKTsKICAgICBzci5hcHBlbmRDaGlsZChjb250ZW50
KTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkFGVEVSIikpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhM2RlZGRjODU1NmNkN2NlMmJkNzViNjE1
NTNmYzUwZTU4Nzc1ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAor
VGhpcyB0ZXN0IGVuc3VyZSB0aGF0IHRoZSBtdWx0aXBsZSBzaGFkb3cgcm9vdCBpcyBhdmFpbGFi
bGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGludGVybmFscy5zaGFk
b3dSb290KGRpdikgaXMgbnVsbAorUEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIHNo
YWRvd1Jvb3QxCitQQVNTIGludGVybmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDEpIGlz
IG51bGwKK1BBU1MgaW50ZXJuYWxzLnNoYWRvd1Jvb3QoZGl2KSBpcyBzaGFkb3dSb290MgorUEFT
UyBpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QyKSBpcyBzaGFkb3dSb290MQor
UEFTUyBpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIGlzIHNoYWRvd1Jvb3QzCitQQVNTIGludGVy
bmFscy5vbGRlclNoYWRvd1Jvb3Qoc2hhZG93Um9vdDMpIGlzIHNoYWRvd1Jvb3QyCitQQVNTIGlu
dGVybmFscy5zaGFkb3dSb290KGRpdikgaXMgbnVsbAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmct
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiOWYwNTYwYTcxODZiMjI3ZjU5MWU2ODE5YTZiNzUw
ZDlkZDIyZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
bXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTQg
QEAKK3Rlc3REb3VibGVTaGFkb3dTdWJ0cmVlcworUEFTUwordGVzdFRyaXBsZVNoYWRvd1N1YnRy
ZWVzCitQQVNTCit0ZXN0U2hhZG93U3VidHJlZXNXaXRoQ29udGVudAorUEFTUwordGVzdFNoYWRv
d1N1YnRyZWVzV2l0aENvbnRlbnRJbk9sZGVyU3VidHJlZQorUEFTUwordGVzdFNoYWRvd1N1YnRy
ZWVzV2l0aER5bmFtaWNDcmVhdGlvbgorUEFTUwordGVzdFNoYWRvd1N1YnRyZWVzV2l0aER5bmFt
aWNDcmVhdGlvbk91dE9mVHJlZQorUEFTUworVEVTVCBDT01QTEVURUQKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5n
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1y
ZW5kZXJpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZWJkZTI2Mzk5NmU4NmNkYTNlZDU2YWMxODM0NTVh
MjkwZWRjZjNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKQEAgLTAsMCArMSwxNzQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0
aW9uaW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7Cisg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisuc3BhbiB7CisgICAgZGlzcGxheTogYm94ZWQt
aW5saW5lOworICAgIG1hcmdpbjogMnB4OworICAgIGJvcmRlcjogc29saWQ7Cit9Cis8L3N0eWxl
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHNldFVwT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0
TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlYXRE
b3duT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJs
ZWQoZmFsc2UpOworfQorCit2YXIgdGVzdEZ1bmNzID0gW107CisKK3Rlc3RGdW5jcy5wdXNoKGZ1
bmN0aW9uIHRlc3REb3VibGVTaGFkb3dTdWJ0cmVlcyhjYWxsSWZEb25lKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48
c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2
PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCcpKTsKKworICAgIHZh
ciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJF
IFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0JFRk9SRScpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNo
KGZ1bmN0aW9uIHRlc3RUcmlwbGVTaGFkb3dTdWJ0cmVlcyhjYWxsSWZEb25lKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRp
dj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwv
ZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCcpKTsKKworICAg
IHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9U
IEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQ6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNIT1VMRCBO
T1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICB2YXIgc3IzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykp
OworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKyAgICBz
cjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7
CisKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVz
dFNoYWRvd1N1YnRyZWVzV2l0aENvbnRlbnQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+
QkVGT1JFPC9zcGFuPjxzcGFuPkxJR0hUPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7
CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCcpKTsKKworICAgIHZhciBz
cjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkU6IFNIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEOiBTSE9VTEQgTk9UIEJFIFJF
TkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
OiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0JFRk9SRScpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3Qo
J3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgY2FsbElmRG9uZSgpOworfSk7CisK
K3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RTaGFkb3dTdWJ0cmVlc1dpdGhDb250ZW50SW5P
bGRlclN1YnRyZWUoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0gIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxz
cGFuPkxJR0hUIDE8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBy
b290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDEnLCAnYzEnKSk7CisgICAgcm9vdC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDInLCAnYzInKSk7CisKKyAgICB2YXIgc3Ix
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworICAgIHNy
MS5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLmMyJywgJ0ZBTExCQUNLJykp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSOiBTSE9VTEQg
Tk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScp
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMScsICdG
QUxMQkFDSycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNz
LnB1c2goZnVuY3Rpb24gdGVzdFNoYWRvd1N1YnRyZWVzV2l0aER5bmFtaWNDcmVhdGlvbihjYWxs
SWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TElHSFQgMTwvc3Bh
bj48c3Bhbj5MSUdIVCAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2
YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAxJywgJ2MxJykpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdMSUdIVCAyJywgJ2MyJykpOworCisgICAgdmFy
IHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRTogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKyAg
ICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJB
Q0snKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVI6IFNI
T1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgc2V0VGltZW91dCgo
ZnVuY3Rpb24oY2FsbElmRG9uZSwgcm9vdCkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICAgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgICAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKSk7CisgICAg
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAg
ICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKGNhbGxJZkRvbmUsIHJvb3QpLCAwKTsKK30pOwor
Cit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0U2hhZG93U3VidHJlZXNXaXRoRHluYW1pY0Ny
ZWF0aW9uT3V0T2ZUcmVlKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bh
bj48c3Bhbj5MSUdIVCAxPC9zcGFuPjxzcGFuPkxJR0hUIDI8L3NwYW4+PHNwYW4+QUZURVI8L3Nw
YW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDEnLCAn
YzEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0xJR0hUIDIn
LCAnYzInKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFOiBTSE9VTEQgTk9U
IEJFIFJFTkRFUkVEJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNl
bGVjdCgnc3BhbicsICdGQUxMQkFDSycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUjogU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHNldFRp
bWVvdXQoKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgewor
ICAgICAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgICAgIHNy
Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICAgICAgc3Iy
LmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJykp
OworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsK
KworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHJvb3QpOworCisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKGNhbGxJ
ZkRvbmUsIHJvb3QpLCAwKTsKK30pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
ImRvVGVzdCh0ZXN0RnVuY3MpIj4KKworPGRpdiBpZD0iYWN0dWFsLWNvbnRhaW5lciIgY2xhc3M9
ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlkPSJleHBlY3QtY29udGFpbmVyIiBjbGFzcz0iY29u
dGFpbmVyIj48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hh
ZG93cm9vdC1zaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBs
ZS1zaGFkb3dyb290LXNoYWRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZTQ4MTgxZTFhM2M4OWJhNmU0
YzE4NmUwODFhNTZmZTc2NjVmMTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1zaGFkb3cuaHRtbApAQCAtMCwwICsxLDI2
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRp
dmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFp
bmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNwbGF5
OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsKK30K
Kzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkgeworICAgIGludGVy
bmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rp
b24gdGVhckRvd25PbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRy
ZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsKKwordGVzdEZ1bmNz
LnB1c2goZnVuY3Rpb24gdGVzdFdpdGhTaW5nbGVTaGFkb3dSb290KGNhbGxJZkRvbmUpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVI8L3Nw
YW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKwor
ICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7
Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFdpdGhTaW5nbGVTaGFkb3dSb290
V2l0aEZhbGxiYWNrKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48
c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdGQUxMQkFDSycpKTsKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScp
KTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsK
K30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0V2l0aFNpbmdsZVNoYWRvd1Jvb3RX
aXRoRmFsbGJhY2tBbmRGYWxsYmFjayhjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAiPGRpdj48c3Bhbj5CRUZP
UkU8L3NwYW4+PHNwYW4+RkFMTEJBQ0s8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsK
KworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisKKyAgICB2
YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0snKSk7CisgICAgdmFyIHNy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAg
ICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290
KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVz
dFdpdGhEb3VibGVTaGFkb3dSb290KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2Pjxz
cGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48
c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZh
ciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAg
ICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChy
b290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24g
dGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aE9uZVNoYWRvdyhjYWxsSWZEb25lKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQor
ICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48
c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIC8v
IE1JRCB3b24ndCBiZSByZW5kZXJlZC4KKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBz
cjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsK
K30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0V2l0aFRyaXBsZVNoYWRvd1Jvb3Qo
Y2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDM8L3NwYW4+PHNw
YW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bh
bj5NSUQ8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVS
IDI8L3NwYW4+PHNwYW4+QUZURVIgMzwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScp
KTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICB2YXIgc3IzID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQkVGT1JFIDMnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdBRlRFUiAzJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVh
bC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsK
KwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFdpdGhTaW5nbGVTaGFkb3dSb290QmVmb3Jl
Q29udGVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVj
dC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3Nw
YW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPk0gMTwvc3Bhbj48c3Bhbj5DT05URU5UIEZBTExCQUNL
PC9zcGFuPjxzcGFuPk0gMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSycpKTsKKyAgICB2YXIgc3IgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTSAxJykpOworICAgIHNyLmFwcGVuZENoaWxk
KGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQgRkFMTEJBQ0snKSk7Cisg
ICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDInKSk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAg
Y2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoU2lu
Z2xlU2hhZG93Um9vdEFmdGVyQ29udGVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRp
dj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPk0gMTwvc3Bhbj48c3Bh
bj5TSEFET1cgRkFMTEJBQ0s8L3NwYW4+PHNwYW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFu
PjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAg
ICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hh
ZG93LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLJykpOwor
ICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQgRkFMTEJBQ0snKSk7CisgICAg
c3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDEnKSk7CisgICAgc3IuYXBwZW5k
Q2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ00g
MicpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVu
Y3Rpb24gdGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQxKGNhbGxJZkRvbmUpIHsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRN
TCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPk1JRCAyPC9zcGFu
PiIgKworICAgICAgICAiPHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEIDE8L3NwYW4+PHNw
YW4+TUlEIDM8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkFG
VEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCAzJywgJ3NyMycpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
TUlEIDEnLCAnc3IxJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNSUQgMicsICdzcjInKSk7CisKKyAgICB2YXIgc2hhZG93MSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdTSEFET1cgRkFMTEJBQ0sgMScpKTsKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFIDEnKSk7CisgICAgdmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5z
cjEnLCAnQ09OVEVOVCBGQUxMQkFDSyAxJyk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNvbnRlbnQx
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzaGFkb3cyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93Mi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSyAyJykpOworICAgIHZhciBzcjIgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICB2YXIgY29udGVudDsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IyJywgJ0NPTlRFTlQgRkFM
TEJBQ0sgMicpKTsKKyAgICBjb250ZW50LnRpdGxlID0gImRlYnVnc3RvcCI7CisgICAgc3IyLmFw
cGVuZENoaWxkKHNoYWRvdzIpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0
ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0V2l0aERvdWJsZVNoYWRvd1Jvb3RXaXRoQ29udGVu
dDIoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29u
dGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+
PHNwYW4+TUlEIDI8L3NwYW4+PHNwYW4+TUlEIDM8L3NwYW4+PHNwYW4+TUlEIDE8L3NwYW4+IiAr
CisgICAgICAgICI8c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5DT05URU5UIEZBTExCQUNLIDE8
L3NwYW4+PHNwYW4+U0hBRE9XIEZBTExCQUNLIDE8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj4i
ICsKKyAgICAgICAgIjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCAzJywgJ3NyMycpKTsKKyAgICByb290LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDEnLCAnc3IxJykpOworICAgIHJvb3QuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMicsICdzcjInKSk7CisKKyAgICB2YXIgc2hhZG93
MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzEuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMScpKTsKKyAgICB2YXIg
c3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0
ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IxJywgJ0NPTlRFTlQgRkFMTEJBQ0sgMScpKTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzaGFkb3cyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ1NIQURPVyBGQUxMQkFDSyAyJykpOworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3Qo
Jy5zcjInLCAnQ09OVEVOVCBGQUxMQkFDSyAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdDT05URU5UIEZBTExCQUNLIDMnKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKHNoYWRvdzIpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30p
OworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCh0ZXN0RnVuY3MpIj4K
KworPGRpdiBpZD0iYWN0dWFsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8
ZGl2IGlkPSJleHBlY3QtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxwcmUg
aWQ9ImNvbnNvbGUiPjwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MDliZWMwNzZhZTNiMWZjZDEyZTk3NDg0NDM2NjJjODA4MTBiZGZiCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bApAQCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlIHRo
YXQgdGhlIG11bHRpcGxlIHNoYWRvdyByb290IGlzIGF2YWlsYWJsZS4iKTsKKworaW50ZXJuYWxz
LnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworCit2YXIgZGl2ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitzaG91bGRCZSgiaW50ZXJuYWxzLnNoYWRvd1Jv
b3QoZGl2KSIsICJudWxsIik7Cit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChkaXYpOworc2hvdWxkQmUoImludGVybmFscy5zaGFkb3dSb290KGRpdikiLCAic2hhZG93Um9v
dDEiKTsKK3Nob3VsZEJlKCJpbnRlcm5hbHMub2xkZXJTaGFkb3dSb290KHNoYWRvd1Jvb3QxKSIs
ICJudWxsIik7CisKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGRpdikK
K3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgInNoYWRvd1Jvb3QyIik7Citz
aG91bGRCZSgiaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MikiLCAic2hhZG93
Um9vdDEiKTsKKwordmFyIHNoYWRvd1Jvb3QzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsK
K3Nob3VsZEJlKCJpbnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgInNoYWRvd1Jvb3QzIik7Citz
aG91bGRCZSgiaW50ZXJuYWxzLm9sZGVyU2hhZG93Um9vdChzaGFkb3dSb290MykiLCAic2hhZG93
Um9vdDIiKTsKKworaW50ZXJuYWxzLnJlbW92ZVNoYWRvd1Jvb3QoZGl2KTsKK3Nob3VsZEJlKCJp
bnRlcm5hbHMuc2hhZG93Um9vdChkaXYpIiwgIm51bGwiKTsKKworaW50ZXJuYWxzLnNldE11bHRp
cGxlU2hhZG93U3VidHJlZXNFbmFibGVkKGZhbHNlKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L1NraXBwZWQKaW5kZXggMWNhMDZiMDE4OWZmYTUyOWMwOTgyMDc1ZGJjMmIxOGZlMjdmMDg0Mi4u
ZDhlN2U3ODEwYmI3NGQ5ZWMxZmM5N2QxODU0ZTQyODQyZWZkMDI3MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1NraXBwZWQKQEAgLTE5NzgsNiArMTk3OCw5IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290
Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1s
CitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1zaGFkb3cuaHRtbAogCiAjIENT
UyBGaWx0ZXJzIHN1cHBvcnQgbm90IHlldCBlbmFibGVkIChuZWVkcyBFTkFCTEVfQ1NTX0ZJTFRF
UlMpLgogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg0NjkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNDFhODUzNWE0MzYzZTQ0NGY5N2Q0MWFjNGNmMzUy
ODA4YzA5NTlkMi4uMGMxZDdmYzEwY2FiNWE4MThlYmNiYzJhZjVkYjhhY2Q4ODNkMjZlMiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTM2MSw2ICszNjEsOSBAQCBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJs
ZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUt
c2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5k
ZXJpbmcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qtc2hhZG93Lmh0
bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBwb3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtp
dC5vcmcvYi81NzMxMgogZmFzdC9yZWdpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4
IGExZWM2NDE1ZTVkMjkzODhkMGVkNTg2YzNiMzliOTRiYjliOTY2YmYuLmY2Y2NiNmUyODdjMTBh
MTA5ZWNhYTU1YjAyMzA3ODc3M2U1MGI4NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBA
IC00MjksNiArNDI5LDkgQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcu
aHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKK2Zhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290LXNoYWRvdy5odG1sCiAKICMgSlNDIGRvZXMgbm90IHN1cHBv
cnQgc2V0SXNvbGF0ZWRXb3JsZFNlY3VyaXR5T3JpZ2luIChodHRwOi8vd2Via2l0Lm9yZy9iLzYx
NTQwKQogaHR0cC90ZXN0cy9zZWN1cml0eS9pc29sYXRlZFdvcmxkL2Nyb3NzLW9yaWdpbi14aHIu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMjEwNzMzMThkMGZjNTk4ZmViOTE0NDhj
ZjhiZTVlMGMwMGM1ODNhMy4uODRjMjg3YzlkNzI0YTBlMjk1M2Q4MzFjNzI2OWQwMTA0MWE2MTc2
OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xNjUsNiArMTY1LDkgQEAgZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRp
c2FibGUuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qt
cmVuZGVyaW5nLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXNoYWRv
dy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMgc3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93
ZWJraXQub3JnL2IvNTczMTIKIGZhc3QvcmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApp
bmRleCAzMWIyYzI3YmE1MWI1OGRhYjkxNjVkYjJjZTdlOTA1YzlmZjEzZDZkLi44NzQ5NTFjY2Fl
YWFmZGUyNzE2ZjRmYjAwOWZjOTJiODYyZTU0Yjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZApAQCAtMTQ1OCw2ICsxNDU4LDkgQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFw
aS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRtbAogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9v
dC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAorZmFz
dC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKK2Zhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXNoYWRvdy5odG1sCiAKICMgQ1NTIFJlZ2lvbnMg
c3VwcG9ydCBub3QgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNTczMTIKIGZhc3Qv
cmVnaW9ucwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKaW5kZXggZTZlZDg3OWVl
MDlmMTQwNDIxZTdmZjY3NDM0NDhlZWU1ZTZlYmI0Zi4uMjY3MjVlMjI1ZTcyYjEzMTMyMGM3MDZm
MWJmMzMxNTkzZjNiYWRlNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fp
cm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBA
IC0xOTY5LDYgKzE5NjksOSBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5l
dy5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2Rv
bS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAorZmFzdC9kb20vc2hh
ZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qtc2hhZG93Lmh0bWwKIAogIyBDU1MgUmVnaW9ucyBzdXBw
b3J0IG5vdCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi81NzMxMgogZmFzdC9yZWdp
b25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IGQyMjQ3M2IyZWE1NTg4NzIzMmQ0NDc1
NWRlOWQ2OWExNWYzZTMxNzUuLjZjMTc3MjM4NzFlNjUxZTBiOGQwN2YzNjkwZjBlMWUyNjFjMmYx
ZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0xMDc4LDYgKzEwNzgsOSBAQCBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCitmYXN0L2RvbS9zaGFkb3cv
bXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCitmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC1yZW5kZXJpbmcuaHRtbAorZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qt
c2hhZG93Lmh0bWwKIAogIyBXVFIgbmVlZHMgYW4gaW1wbGVtZW50YXRpb24gZm9yIGV2ZW50U2Vu
ZGVyLmNvbnRpbnVvdXNNb3VzZVNjcm9sbEJ5CiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD02OTQxNwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129394</attachid>
            <date>2012-02-28 22:56:17 -0800</date>
            <delta_ts>2012-03-01 00:43:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78596-20120229155615.patch</filename>
            <type>text/plain</type>
            <size>69394</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUxODI5YTgyOGVkMGIx
Njk1NzkzZDI2ODBjZjQwM2ZmNGQwMjA1OS4uZjAwODdhODQzNGIxNzdhYzY2ZTM0NTFhN2RmMDZk
MDVlYWNlZjJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTAyLTI4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBz
aG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgY2hh
bmdlcyB0byBhZGQgPHNoYWRvdz4gZWxlbWVudCBzdXBwb3J0LgorCisgICAgICAgICgxKSBXaGVu
IGF0dGFjaGluZyBhIDxzaGFkb3c+IGVsZW1lbnQsIGlmIHRoZXJlIGlzIGFuIG9sZGVyIHNoYWRv
dyB0cmVlIHdoaWNoIGlzIG5vdCBhc3NpZ25lZAorICAgICAgICB0byBhbnkgPHNoYWRvdz4gZWxl
bWVudCwgdGhlIDxzaGFkb3c+IGVsZW1lbnQgaGFzIGEgcG9pbnRlciB0byB0aGUgb2xkZXIgc2hh
ZG93IHJvb3QgYW5kCisgICAgICAgIHZpY2UgdmVyc2EuCisKKyAgICAgICAgKDIpIE5vZGVSZW5k
ZXJpbmdDb250ZXh0IHN1cHBvcnRzIG5vbi15b3VuZ2VzdCBzaGFkb3cgdHJlZXMuIE5vbi15b3Vu
Z2VzdCBzaGFkb3cgdHJlZXMKKyAgICAgICAgYXNzaWduZWQgdG8gYSA8c2hhZG93PiB0cmVlIGhh
cyBhIERpc3RyaWJ1dGVkIHBoYXNlLgorCisgICAgICAgICgzKSBTaGFkb3dUcmVlIHN1cHBvcnRz
IG5vbi15b3VuZ2VzdCBzaGFkb3cgdHJlZSB1cGRhdGUuIFdoZW4gdXBkYXRlIGlzIGNhdXNlZCBp
biBub24teW91Z2VzdCB0cmVlLAorICAgICAgICBTaGFkb3dUcmVlIHdpbGwgc2V0IGEgZmxhZyB0
byByZS1jcmVhdGUgdGhlIHdob2xlIHNoYWRvdyB0cmVlLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xl
Lmh0bWwKKworICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbik6
CisgICAgICAgICAgUmV0dXJucyB0cnVlIGlmIEluc2VydGlvblBvaW50IHNlbGVjdHMgZWxlbWVu
dHMgZnJvbSBsaWdodCBjaGlsZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdD
b250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0UmVu
ZGVyZXJPZik6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1JlbmRlcmVyT2YpOgorICAgICAg
ICAoV2ViQ29yZTo6Zmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAgIFJl
dHVybnMgdGhlIGZpcnN0IHJlbmRlcmVyIGluIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAg
IChXZWJDb3JlOjpsYXN0UmVuZGVyZXJPZkluc2VydGlvblBvaW50KToKKyAgICAgICAgICBSZXR1
cm5zIHRoZSBsYXN0IHJlbmRlcmVyIGluIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgIChX
ZWJDb3JlOjpmaXJzdFJlbmRlcmVyT2YpOgorICAgICAgICAgIFJldHVybnMgdGhlIGZpcnN0IHJl
bmRlcmVyIG9mIHRoZSBzcGVjaWZpYyBub2RlLgorICAgICAgICAoV2ViQ29yZTo6bGFzdFJlbmRl
cmVyT2YpOgorICAgICAgICAgIFJldHVybnMgdGhlIGxhc3QgcmVuZGVyZXIgb2YgdGhlIHNwZWNp
ZmljIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91
c1JlbmRlcmVyKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jv
b3Q6Omhhc0luc2VydGlvblBvaW50KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OmRpc3RyaWJ1dGVkVG8pOgorICAgICAgICAgIFJldHVybnMgSFRNTFNoYWRv
d0VsZW1lbnQgdG8gd2hpY2ggdGhpcyBzaGFkb3cgcm9vdCBpcyBkaXN0cmlidXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldERpc3RyaWJ1dGVkVG8pOgorICAgICAgICAqIGRv
bS9TaGFkb3dUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGlv
blBvaW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OmNoaWxkTmVlZHNTdHls
ZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpuZWVkc1N0eWxlUmVjYWxj
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRy
ZW5BbmRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aG9zdENoaWxkcmVu
Q2hhbmdlZCk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuaDoKKyAgICAgICAgKFNoYWRvd1Ry
ZWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29udGVudFNlbGVjdG9yOjpzZWxlY3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTaGFkb3dFbGVtZW50OjpIVE1MU2hhZG93RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2hhZG93RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgICBJZiB0aGUgZWxlbWVudCBpcyBp
biB0aGUgb2xkZXN0IHNoYWRvdyB0cmVlLCBpdCB3aWxsIHNlbGVjdCBlbGVtZW50cyBmcm9tIGxp
Z2h0IGNoaWxkcmVuLgorICAgICAgICAgIElmIHRoZSBlbGVtZW50IGlzIGluIG5vbi1vbGRlc3Qg
c2hhZG93IHRyZWUsIGl0IHdpbGwgc2VsZWN0IGEgb2xkZXIgc2hhZG93IHJvb3QgaWYgaXQgaXMg
bm90IGFzc2lnbmVkCisgICAgICAgICAgdG8gYW55IDxzaGFkb3c+IGVsZW1lbnQgeWV0LgorICAg
ICAgICAgIE90aGVyd2lzZSwgaXQgd29uJ3Qgc2VsZWN0IGFueXRoaW5nLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2hhZG93RWxlbWVudDo6ZGV0YWNoKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNo
YWRvd0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OmRpc3Ry
aWJ1dGVkRnJvbSk6CisgICAgICAgICAgUmV0dXJucyBTaGFkb3dSb290IHdoaWNoIGlzIGRpc3Ry
aWJ1dGVkIHRvIHRoaXMgPHNoYWRvdz4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OnNldERpc3RyaWJ1dGVkRnJvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0hUTUxTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2lu
dCk6CisKIDIwMTItMDItMjggIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbRm9ybXNdIFNwaW4gYnV0dG9uIHNvbWV0aW1lcyBpZ25vcmVzIEluZGV0ZXJt
aW5hdGUgb2YgbV91cERvd25TdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggNGJkZWM3ZjgwMTJlMmM2OGE1MzIwNzg1NTk4ZDU0YmExOWE2ZmE0
OS4uMGY1NzA3ODFiOTJmZDQ1YjU0NGZlY2RhN2ZlNTNkNmU1YWJmNWIyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0yOSw2ICsyOSw4IEBACiAj
aW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50RWxlbWVudC5o
IgogI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNp
bmNsdWRlICJSZW5kZXJGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVyRnVsbFNjcmVlbi5o
IgpAQCAtNDMsNiArNDUsMjMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOworCitzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2Yo
Tm9kZSopOworc3RhdGljIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2YoTm9kZSopOworCitz
dGF0aWMgaW5saW5lIGJvb2wgc2VsZWN0c0Zyb21MaWdodENoaWxkcmVuKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCkKK3sKKyAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmlzQ29udGVudEVs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTaGFkb3dSb290KiByb290ID0g
dG9TaGFkb3dSb290KGluc2VydGlvblBvaW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSk7CisgICAg
aWYgKCFyb290KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gcm9vdC0+aXNP
bGRlc3QoKTsKK30KKwogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
KE5vZGUqIG5vZGUpCiAgICAgOiBtX3BoYXNlKEF0dGFjaGluZ05vdEluVHJlZSkKICAgICAsIG1f
bm9kZShub2RlKQpAQCAtNTYsMjYgKzc1LDIzIEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2Rl
UmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAvLyBG
SVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qg
c2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG9kX2J1Z3MuY2dpP2lkPTc4NTk2Ci0gICAgICAgIGlmICh0b1NoYWRvd1Jvb3QocGFy
ZW50KS0+aXNZb3VuZ2VzdCgpKQotICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRv
d0NoaWxkOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90
RGlzdHJpYnV0ZWQ7CisgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFkb3dS
b290KHBhcmVudCktPmlzWW91bmdlc3QoKSkgeworICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5n
U2hhZG93Q2hpbGQ7CiAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0g
cGFyZW50LT5zaGFkb3dIb3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAo
cGFyZW50LT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKHRvRWxlbWVudChwYXJlbnQp
LT5oYXNTaGFkb3dSb290KCkpIHsKKyAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgfHwg
cGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0VsZW1lbnRO
b2RlKCkgJiYgdG9FbGVtZW50KHBhcmVudCktPmhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAg
IG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZSA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dUcmVl
KCk7Ci0gICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNo
YWRvd1RyZWUtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCi0gICAgICAgICAgICAgICAgJiYg
bV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKKyAgICAgICAg
ZWxzZSBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIG1fdmlzdWFsUGFy
ZW50U2hhZG93VHJlZSA9IHRvU2hhZG93Um9vdChwYXJlbnQpLT50cmVlKCk7CiAKLSAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBu
b24teW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAg
ICAgICAgICBpZiAodG9TaGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290
Tm9kZSgpKS0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRv
d1RyZWUpIHsKKyAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFy
ZW50U2hhZG93VHJlZS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkpIHsKKyAgICAgICAgICAg
ICAgICBTaGFkb3dSb290KiBzaGFkb3dUcmVlUm9vdCA9IHRvU2hhZG93Um9vdChtX2luc2VydGlv
blBvaW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoc2hh
ZG93VHJlZVJvb3QtPmlzWW91bmdlc3QoKSB8fCBzaGFkb3dUcmVlUm9vdC0+ZGlzdHJpYnV0ZWRU
bygpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdEaXN0cmlidXRl
ZDsKICAgICAgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUg
PSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVu
ZGVyaW5nQW5kU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtODcsMTEg
KzEwMywyMSBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisKICAgICAgICAgaWYg
KGlzU2hhZG93Qm91bmRhcnkocGFyZW50KSkgewotICAgICAgICAgICAgaWYgKHRvSW5zZXJ0aW9u
UG9pbnQocGFyZW50KS0+aGFzU2VsZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgbV9waGFzZSA9
IEF0dGFjaGluZ05vdEZhbGxiYWNrZWQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbV9waGFzZSA9IEF0dGFjaGluZ0ZhbGxiYWNrZWQ7CisgICAgICAgICAgICBpZiAoc2VsZWN0
c0Zyb21MaWdodENoaWxkcmVuKHRvSW5zZXJ0aW9uUG9pbnQocGFyZW50KSkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodG9JbnNlcnRpb25Qb2ludChwYXJlbnQpLT5oYXNTZWxlY3Rpb24oKSkKKyAg
ICAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdEZhbGxiYWNrZWQ7CisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5n
RmFsbGJhY2tlZDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJU
KHBhcmVudC0+aGFzVGFnTmFtZShzaGFkb3dUYWcpKTsKKyAgICAgICAgICAgICAgICBTaGFkb3dS
b290KiByb290ID0gdG9IVE1MU2hhZG93RWxlbWVudChwYXJlbnQpLT5kaXN0cmlidXRlZEZyb20o
KTsKKyAgICAgICAgICAgICAgICBpZiAocm9vdCAmJiByb290LT5maXJzdENoaWxkKCkpCisgICAg
ICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RGYWxsYmFja2VkOworICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0Zh
bGxiYWNrZWQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KHBhcmVudCkucGFyZW50Tm9kZUZv
clJlbmRlcmluZ0FuZFN0eWxlKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTEyOSwzNSArMTU1LDUzIEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IE5vZGVSZW5kZXJpbmdD
b250ZXh0OjpyZWxlYXNlU3R5bGUoKQogCiBzdGF0aWMgUmVuZGVyT2JqZWN0KiBuZXh0UmVuZGVy
ZXJPZihJbnNlcnRpb25Qb2ludCogcGFyZW50LCBOb2RlKiBjdXJyZW50KQogewotICAgIEhUTUxD
b250ZW50U2VsZWN0aW9uKiBjdXJyZW50U2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCkt
PmZpbmQoY3VycmVudCk7Ci0gICAgaWYgKCFjdXJyZW50U2VsZWN0aW9uKQotICAgICAgICByZXR1
cm4gMDsKKyAgICBBU1NFUlQoY3VycmVudCk7CiAKLSAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uLT5uZXh0KCk7IHNlbGVjdGlvbjsgc2Vs
ZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiByZW5kZXJlcjsKKyAgICBpZiAoc2VsZWN0c0Zyb21MaWdodENoaWxkcmVuKHBhcmVudCkp
IHsKKyAgICAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGN1cnJlbnRTZWxlY3Rpb24gPSBwYXJl
bnQtPnNlbGVjdGlvbnMoKS0+ZmluZChjdXJyZW50KTsKKyAgICAgICAgaWYgKCFjdXJyZW50U2Vs
ZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgZm9yIChIVE1MQ29udGVu
dFNlbGVjdGlvbiogc2VsZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbi0+bmV4dCgpOyBzZWxlY3Rp
b247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAg
ICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVy
biAwOwogICAgIH0KIAotICAgIHJldHVybiAwOworICAgIEFTU0VSVChwYXJlbnQtPmhhc1RhZ05h
bWUoc2hhZG93VGFnKSk7CisgICAgcmV0dXJuIGZpcnN0UmVuZGVyZXJPZihjdXJyZW50LT5uZXh0
U2libGluZygpKTsKIH0KIAogc3RhdGljIFJlbmRlck9iamVjdCogcHJldmlvdXNSZW5kZXJlck9m
KEluc2VydGlvblBvaW50KiBwYXJlbnQsIE5vZGUqIGN1cnJlbnQpCiB7Ci0gICAgUmVuZGVyT2Jq
ZWN0KiBsYXN0UmVuZGVyZXIgPSAwOworICAgIEFTU0VSVChjdXJyZW50KTsKKworICAgIGlmIChz
ZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4ocGFyZW50KSkgeworICAgICAgICBSZW5kZXJPYmplY3Qq
IGxhc3RSZW5kZXJlciA9IDA7CisKKyAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiog
c2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2Vs
ZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb24t
Pm5vZGUoKSA9PSBjdXJyZW50KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICBsYXN0UmVuZGVyZXIgPSByZW5kZXJlcjsKKyAgICAgICAgfQog
Ci0gICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxl
Y3Rpb25zKCktPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0
KCkpIHsKLSAgICAgICAgaWYgKHNlbGVjdGlvbi0+bm9kZSgpID09IGN1cnJlbnQpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rp
b24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIGxhc3RSZW5kZXJlciA9IHJlbmRl
cmVyOworICAgICAgICByZXR1cm4gbGFzdFJlbmRlcmVyOwogICAgIH0KIAotICAgIHJldHVybiBs
YXN0UmVuZGVyZXI7CisgICAgQVNTRVJUKHBhcmVudC0+aGFzVGFnTmFtZShzaGFkb3dUYWcpKTsK
KyAgICByZXR1cm4gbGFzdFJlbmRlcmVyT2YoY3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCkpOwog
fQogCi1zdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2YoSW5zZXJ0aW9uUG9pbnQq
IHBhcmVudCkKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZkluc2VydGlvblBv
aW50KEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgaWYgKHBhcmVudC0+aGFzU2VsZWN0
aW9uKCkpIHsKKyAgICBpZiAoc2VsZWN0c0Zyb21MaWdodENoaWxkcmVuKHBhcmVudCkpIHsKKyAg
ICAgICAgaWYgKCFwYXJlbnQtPmhhc1NlbGVjdGlvbigpKQorICAgICAgICAgICAgcmV0dXJuIGZp
cnN0UmVuZGVyZXJPZihwYXJlbnQtPmZpcnN0Q2hpbGQoKSk7CisKKwogICAgICAgICBmb3IgKEhU
TUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+Zmly
c3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgewogICAgICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVu
ZGVyZXIoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CkBAIC0xNjYsMjEgKzIx
MCw4NCBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2YoSW5zZXJ0aW9uUG9p
bnQqIHBhcmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcmV0dXJuIE5vZGVS
ZW5kZXJpbmdDb250ZXh0KHBhcmVudCkubmV4dFJlbmRlcmVyKCk7CisgICAgQVNTRVJUKHBhcmVu
dC0+aGFzVGFnTmFtZShzaGFkb3dUYWcpKTsKKworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSB0b0hU
TUxTaGFkb3dFbGVtZW50KHBhcmVudCktPmRpc3RyaWJ1dGVkRnJvbSgpOworICAgIGlmICghcm9v
dCB8fCAhcm9vdC0+Zmlyc3RDaGlsZCgpKQorICAgICAgICByZXR1cm4gZmlyc3RSZW5kZXJlck9m
KHBhcmVudC0+Zmlyc3RDaGlsZCgpKTsKKworICAgIGZvciAoTm9kZSogY2hpbGQgPSByb290LT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CisgICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGQtPnJlbmRlcmVyKCkpCisgICAg
ICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKLXN0
YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50KiBwYXJlbnQp
CitzdGF0aWMgUmVuZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXJPZkluc2VydGlvblBvaW50KEluc2Vy
dGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgaWYgKHBhcmVudC0+aGFzU2VsZWN0aW9uKCkpIHsK
LSAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5z
ZWxlY3Rpb25zKCktPmxhc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnBy
ZXZpb3VzKCkpIHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2Vs
ZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRl
cmVyOworICAgIGlmIChzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4ocGFyZW50KSkgeworICAgICAg
ICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgeworICAgICAgICAgICAgZm9yIChIVE1MQ29u
dGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmxhc3QoKTsg
c2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnByZXZpb3VzKCkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5y
ZW5kZXJlcigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbGFzdFJlbmRlcmVy
T2YocGFyZW50LT5sYXN0Q2hpbGQoKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKLSAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0NvbnRleHQocGFyZW50KS5wcmV2aW91
c1JlbmRlcmVyKCk7CisgICAgQVNTRVJUKHBhcmVudC0+aGFzVGFnTmFtZShzaGFkb3dUYWcpKTsK
KworICAgIGlmIChTaGFkb3dSb290KiByb290ID0gdG9IVE1MU2hhZG93RWxlbWVudChwYXJlbnQp
LT5kaXN0cmlidXRlZEZyb20oKSkgeworICAgICAgICBmb3IgKE5vZGUqIGNoaWxkID0gcm9vdC0+
bGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewor
ICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjaGlsZC0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0KKyAgICB9IGVs
c2UKKyAgICAgICAgcmV0dXJuIGxhc3RSZW5kZXJlck9mKHBhcmVudC0+bGFzdENoaWxkKCkpOwor
CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJP
ZihOb2RlKiBub2RlKQoreworICAgIGZvciAoOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxp
bmcoKSkgeworICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgLy8g
RG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBm
bG93LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpICYm
ICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVy
KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSAmJiBu
b2RlLT5zaGFkb3dUcmVlUm9vdE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogZmlyc3QgPSBmaXJzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludCh0b0luc2VydGlvblBvaW50
KG5vZGUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVy
T2YoTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPnByZXZpb3Vz
U2libGluZygpKSB7CisgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpKSB7CisgICAgICAgICAg
ICAvLyBEbyBub3QgcmV0dXJuIGVsZW1lbnRzIHRoYXQgYXJlIGF0dGFjaGVkIHRvIGEgZGlmZmVy
ZW50IGZsb3ctdGhyZWFkLgorICAgICAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCktPnN0eWxl
KCkgJiYgIW5vZGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmZsb3dUaHJlYWQoKS5pc0VtcHR5KCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICByZXR1cm4gbm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUp
ICYmIG5vZGUtPnNoYWRvd1RyZWVSb290Tm9kZSgpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludCh0b0luc2VydGlvblBv
aW50KG5vZGUpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbGFzdDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHJldHVybiAwOwogfQogCiBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdApAQCAtMjAzLDIxICszMTAsNyBAQCBSZW5kZXJPYmpl
Y3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgIGlmICht
X25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKSAmJiAhbV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkt
PmF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgZm9yIChOb2RlKiBub2RlID0g
bV9ub2RlLT5uZXh0U2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkg
ewotICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgLy8gRG8gbm90
IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBmbG93LXRo
cmVhZC4KLSAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpICYmICFub2Rl
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSkgewotICAgICAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogZmlyc3QgPSBmaXJzdFJlbmRlcmVyT2YodG9JbnNlcnRp
b25Qb2ludChub2RlKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZpcnN0UmVuZGVyZXJPZihtX25v
ZGUtPm5leHRTaWJsaW5nKCkpOwogfQogCiBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250
ZXh0OjpwcmV2aW91c1JlbmRlcmVyKCkgY29uc3QKQEAgLTIzOCwyMCArMzMxLDcgQEAgUmVuZGVy
T2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAK
ICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgdGhlIHNhbWUgTyhOXjIpIGF2b2lkYW5jZSBh
cyBuZXh0UmVuZGVyZXIgZG9lcwogICAgIC8vIGhvd2V2ZXIsIHdoZW4gSSB0cmllZCBhZGRpbmcg
aXQsIHNldmVyYWwgdGVzdHMgZmFpbGVkLgotICAgIGZvciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKSkg
ewotICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgLy8gRG8gbm90
IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBmbG93LXRo
cmVhZC4KLSAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpICYmICFub2Rl
LT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKLSAgICAgICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIGxhc3QgPSBsYXN0UmVuZGVyZXJPZih0b0luc2VydGlvblBv
aW50KG5vZGUpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbGFzdDsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBsYXN0UmVuZGVyZXJPZihtX25vZGUtPnBy
ZXZpb3VzU2libGluZygpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4
dDo6cGFyZW50UmVuZGVyZXIoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4
IGY3NjhlNzczZGIyMGJhZjM5ODAyOTBhOWQwNzA0NTE2NzJiMmFlYjMuLjg0ZmQ1NjUwZjRjOGRh
MzgyYmM4MzBiOGQ4MTViZmU0OTk4NjM0NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
QEAgLTQ4LDYgKzQ4LDcgQEAgU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1l
bnQpCiAgICAgLCBUcmVlU2NvcGUodGhpcykKICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0
KDApCisgICAgLCBtX3NoYWRvd0VsZW1lbnREaXN0cmlidXRlZFRvKDApCiAgICAgLCBtX2FwcGx5
QXV0aG9yU2hlZXRzKGZhbHNlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CkBAIC0xNjQsMTAg
KzE2NSwxMCBAQCBTaGFkb3dUcmVlKiBTaGFkb3dSb290Ojp0cmVlKCkgY29uc3QKICAgICByZXR1
cm4gMDsKIH0KIAotYm9vbCBTaGFkb3dSb290OjpoYXNDb250ZW50RWxlbWVudCgpIGNvbnN0Citi
b29sIFNoYWRvd1Jvb3Q6Omhhc0luc2VydGlvblBvaW50KCkgY29uc3QKIHsKICAgICBmb3IgKE5v
ZGUqIG4gPSBmaXJzdENoaWxkKCk7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHRoaXMpKSB7
Ci0gICAgICAgIGlmIChuLT5pc0NvbnRlbnRFbGVtZW50KCkpCisgICAgICAgIGlmIChpc0luc2Vy
dGlvblBvaW50KG4pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaAppbmRleCBiN2JhNzBjZDU5ODc1OWM2M2ZkM2QxZTg0NWMwNmNmMDgxNDJl
ZjE0Li41NTQyYWJjZjlhMmY0ODdiZGRhMTAzMTNhYjM4N2M1MDQ1MDUwNGRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVu
dFNlbGVjdG9yOworY2xhc3MgSFRNTFNoYWRvd0VsZW1lbnQ7CiBjbGFzcyBJbnNlcnRpb25Qb2lu
dDsKIGNsYXNzIFNoYWRvd1RyZWU7CiAKQEAgLTc2LDcgKzc3LDEwIEBAIHB1YmxpYzoKICAgICBi
b29sIGlzWW91bmdlc3QoKSBjb25zdCB7IHJldHVybiAheW91bmdlclNoYWRvd1Jvb3QoKTsgfQog
ICAgIGJvb2wgaXNPbGRlc3QoKSBjb25zdCB7IHJldHVybiAhb2xkZXJTaGFkb3dSb290KCk7IH0K
IAotICAgIGJvb2wgaGFzQ29udGVudEVsZW1lbnQoKSBjb25zdDsKKyAgICBib29sIGhhc0luc2Vy
dGlvblBvaW50KCkgY29uc3Q7CisKKyAgICBIVE1MU2hhZG93RWxlbWVudCogZGlzdHJpYnV0ZWRU
bygpIGNvbnN0OworICAgIHZvaWQgc2V0RGlzdHJpYnV0ZWRUbyhIVE1MU2hhZG93RWxlbWVudCop
OwogCiBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QoRG9jdW1lbnQqKTsKQEAgLTg4LDkgKzkyLDIx
IEBAIHByaXZhdGU6CiAKICAgICBTaGFkb3dSb290KiBtX3ByZXY7CiAgICAgU2hhZG93Um9vdCog
bV9uZXh0OworICAgIEhUTUxTaGFkb3dFbGVtZW50KiBtX3NoYWRvd0VsZW1lbnREaXN0cmlidXRl
ZFRvOwogICAgIGJvb2wgbV9hcHBseUF1dGhvclNoZWV0cyA6IDE7CiB9OwogCitpbmxpbmUgSFRN
TFNoYWRvd0VsZW1lbnQqIFNoYWRvd1Jvb3Q6OmRpc3RyaWJ1dGVkVG8oKSBjb25zdAoreworICAg
IHJldHVybiBtX3NoYWRvd0VsZW1lbnREaXN0cmlidXRlZFRvOworfQorCitpbmxpbmUgdm9pZCBT
aGFkb3dSb290OjpzZXREaXN0cmlidXRlZFRvKEhUTUxTaGFkb3dFbGVtZW50KiBzaGFkb3dFbGVt
ZW50KQoreworICAgIEFTU0VSVCghbV9zaGFkb3dFbGVtZW50RGlzdHJpYnV0ZWRUbyB8fCAhc2hh
ZG93RWxlbWVudCk7CisgICAgbV9zaGFkb3dFbGVtZW50RGlzdHJpYnV0ZWRUbyA9IHNoYWRvd0Vs
ZW1lbnQ7Cit9CisKIGlubGluZSBjb25zdCBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3QoY29uc3Qg
Tm9kZSogbm9kZSkKIHsKICAgICBBU1NFUlQoIW5vZGUgfHwgbm9kZS0+aXNTaGFkb3dSb290KCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCmluZGV4IGIyOGRmMDUyM2EwZmM5ZDA3MDA3NDk1
M2UwZWI3MWQ5NDhlODg0N2EuLjQ3ZTA4OTRmYjZiNDRhZWMxOGIxZTdmMWRkYWQ4NWExZTdjODg4
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ29u
dGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtMTgxLDYgKzE4MiwxNSBAQCB2
b2lkIFNoYWRvd1RyZWU6OmRldGFjaCgpCiAKIEluc2VydGlvblBvaW50KiBTaGFkb3dUcmVlOjpp
bnNlcnRpb25Qb2ludEZvcihOb2RlKiBub2RlKSBjb25zdAogeworICAgIEFTU0VSVChub2RlICYm
IG5vZGUtPnBhcmVudE5vZGUoKSk7CisKKyAgICBpZiAobm9kZS0+cGFyZW50Tm9kZSgpLT5pc1No
YWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAoSFRNTFNoYWRvd0VsZW1lbnQqIHNoYWRvd0VsZW1l
bnQgPSB0b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKS0+ZGlzdHJpYnV0ZWRUbygpKQor
ICAgICAgICAgICAgcmV0dXJuIHNoYWRvd0VsZW1lbnQ7CisKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorCiAgICAgaWYgKCFtX3NlbGVjdG9yKQogICAgICAgICByZXR1cm4gMDsKICAgICBIVE1M
Q29udGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOwpAQCAt
MTg5LDExICsxOTksNiBAQCBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9p
bnRGb3IoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50
KCk7CiB9CiAKLWJvb2wgU2hhZG93VHJlZTo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwotfQot
CiB2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkKIHsKICAgICBkZXRhY2goKTsKQEAgLTIwMywx
OSArMjA4LDIxIEBAIHZvaWQgU2hhZG93VHJlZTo6cmVhdHRhY2goKQogYm9vbCBTaGFkb3dUcmVl
OjpjaGlsZE5lZWRzU3R5bGVSZWNhbGMoKQogewogICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jv
b3QoKSk7Ci0gICAgaWYgKCF5b3VuZ2VzdFNoYWRvd1Jvb3QoKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGZvciAoU2hhZG93Um9vdCogcm9vdCA9IHlvdW5nZXN0U2hhZG93Um9vdCgpOyBy
b290OyByb290ID0gcm9vdC0+b2xkZXJTaGFkb3dSb290KCkpCisgICAgICAgIGlmIChyb290LT5j
aGlsZE5lZWRzU3R5bGVSZWNhbGMoKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAg
cmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5jaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgU2hhZG93VHJlZTo6bmVlZHNTdHlsZVJlY2FsYygp
CiB7CiAgICAgQVNTRVJUKHlvdW5nZXN0U2hhZG93Um9vdCgpKTsKLSAgICBpZiAoIXlvdW5nZXN0
U2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZm9yIChTaGFkb3dSb290
KiByb290ID0geW91bmdlc3RTaGFkb3dSb290KCk7IHJvb3Q7IHJvb3QgPSByb290LT5vbGRlclNo
YWRvd1Jvb3QoKSkKKyAgICAgICAgaWYgKHJvb3QtPm5lZWRzU3R5bGVSZWNhbGMoKSkKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIHlvdW5nZXN0U2hhZG93Um9vdCgpLT5u
ZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFNoYWRvd1Ry
ZWU6OnJlY2FsY1NoYWRvd1RyZWVTdHlsZShOb2RlOjpTdHlsZUNoYW5nZSBjaGFuZ2UpCkBAIC0y
NDQsMTQgKzI1MSwxNCBAQCB2b2lkIFNoYWRvd1RyZWU6OnJlY2FsY1NoYWRvd1RyZWVTdHlsZShO
b2RlOjpTdHlsZUNoYW5nZSBjaGFuZ2UpCiAKIGJvb2wgU2hhZG93VHJlZTo6bmVlZHNSZWF0dGFj
aEhvc3RDaGlsZHJlbkFuZFNoYWRvdygpCiB7Ci0gICAgcmV0dXJuIG1fbmVlZHNSZWNhbGN1bGF0
ZUNvbnRlbnQgfHwgKHlvdW5nZXN0U2hhZG93Um9vdCgpICYmIHlvdW5nZXN0U2hhZG93Um9vdCgp
LT5oYXNDb250ZW50RWxlbWVudCgpKTsKKyAgICByZXR1cm4gbV9uZWVkc1JlY2FsY3VsYXRlQ29u
dGVudCB8fCAoeW91bmdlc3RTaGFkb3dSb290KCkgJiYgeW91bmdlc3RTaGFkb3dSb290KCktPmhh
c0luc2VydGlvblBvaW50KCkpOwogfQogCiB2b2lkIFNoYWRvd1RyZWU6Omhvc3RDaGlsZHJlbkNo
YW5nZWQoKQogewogICAgIEFTU0VSVCh5b3VuZ2VzdFNoYWRvd1Jvb3QoKSk7CiAKLSAgICBpZiAo
IXlvdW5nZXN0U2hhZG93Um9vdCgpLT5oYXNDb250ZW50RWxlbWVudCgpKQorICAgIGlmICgheW91
bmdlc3RTaGFkb3dSb290KCktPmhhc0luc2VydGlvblBvaW50KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFRoaXMgcmVzdWx0cyBpbiBmb3JjZWQgZGV0YWNoaW5nL2F0dGFjaGluZyBvZiB0
aGUgc2hhZG93IHJlbmRlciB0cmVlLiBTZWUgU2hhZG93Um9vdDo6cmVjYWxjU3R5bGUoKS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93VHJlZS5oCmluZGV4IDkyZTliMTNkOGQ3NzQxZWU1Y2I0MmY3MTQwYTdlZDFh
YzYyNGEwNGEuLmQ5MTEyMzg4ZDAxODQyOTgxZTg0MzM0OGI3MWI1NjgzNzg0YWY4NzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtNzcsOCArNzcsNiBAQCBwdWJsaWM6CiAgICAgSFRNTENv
bnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKICAgICBIVE1MQ29udGVudFNlbGVjdG9y
KiBlbnN1cmVTZWxlY3RvcigpOwogCi0gICAgYm9vbCBpc1NlbGVjdG9yQWN0aXZlKCkgY29uc3Q7
Ci0KIHByaXZhdGU6CiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAppbmRleCBlMDU4YWZh
YTEwODQ3OTNhY2ZlMWM0OWFiYTU2YTljMmU3MjJkNzc1Li41ZjZkNzc5MTk1OTBjMmY4MjdjZWYx
ZmVhYWE4N2Q4ODY5MmQ1YjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5jcHAKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBIVE1MQ29udGVu
dEVsZW1lbnQ6OmRldGFjaCgpCiAgICAgICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QoJm1fc2Vs
ZWN0aW9ucyk7CiAKICAgICAgICAgLy8gV2hlbiBjb250ZW50IGVsZW1lbnQgaXMgZGV0YWNoZWQs
IHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3VsYXRlIHNlbGVjdG9y
IGZvcgotICAgICAgICAvLyBvdGhlciBjb250ZW50IGVsZW1lbnRzLgorICAgICAgICAvLyBvdGhl
ciBpbnNlcnRpb24gcG9pbnRzLgogICAgICAgICByb290LT50cmVlKCktPnNldE5lZWRzUmVhdHRh
Y2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHAKaW5kZXggNWMzMGZmNmUxNDM0
ZTJhOTE3MWI1YjE5MzA2NzdiZmRkNjc2OTY3YS4uZTRlZGU4MGNkYzgxNGMyM2Y0OGY4MzAxZjA2
MGNlNzlkODk2YjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRN
TENvbnRlbnRTZWxlY3Rvci5jcHAKQEAgLTEwOCwxOSArMTA4LDIyIEBAIEhUTUxDb250ZW50U2Vs
ZWN0b3I6On5IVE1MQ29udGVudFNlbGVjdG9yKCkKICAgICBBU1NFUlQobV9jYW5kaWRhdGVzLmlz
RW1wdHkoKSk7CiB9CiAKLXZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6c2VsZWN0KEhUTUxDb250
ZW50RWxlbWVudCogY29udGVudEVsZW1lbnQsIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCogc2Vs
ZWN0aW9ucykKK3ZvaWQgSFRNTENvbnRlbnRTZWxlY3Rvcjo6c2VsZWN0KEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCwgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0KiBzZWxlY3Rpb25zKQog
ewogICAgIEFTU0VSVChzZWxlY3Rpb25zLT5pc0VtcHR5KCkpOwogCi0gICAgQ29udGVudFNlbGVj
dG9yUXVlcnkgcXVlcnkoY29udGVudEVsZW1lbnQpOworICAgIE93blB0cjxDb250ZW50U2VsZWN0
b3JRdWVyeT4gcXVlcnk7CisgICAgaWYgKGluc2VydGlvblBvaW50LT5pc0NvbnRlbnRFbGVtZW50
KCkpCisgICAgICAgIHF1ZXJ5ID0gYWRvcHRQdHIobmV3IENvbnRlbnRTZWxlY3RvclF1ZXJ5KHRv
SFRNTENvbnRlbnRFbGVtZW50KGluc2VydGlvblBvaW50KSkpOworCiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2NhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgTm9kZSogY2hp
bGQgPSBtX2NhbmRpZGF0ZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmICghY2hpbGQpCiAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKKyAgICAg
ICAgaWYgKHF1ZXJ5ICYmICFxdWVyeS0+bWF0Y2hlcyhjaGlsZCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBSZWZQdHI8SFRNTENvbnRlbnRTZWxlY3Rpb24+IHNlbGVjdGlvbiA9
IEhUTUxDb250ZW50U2VsZWN0aW9uOjpjcmVhdGUoY29udGVudEVsZW1lbnQsIGNoaWxkKTsKKyAg
ICAgICAgUmVmUHRyPEhUTUxDb250ZW50U2VsZWN0aW9uPiBzZWxlY3Rpb24gPSBIVE1MQ29udGVu
dFNlbGVjdGlvbjo6Y3JlYXRlKGluc2VydGlvblBvaW50LCBjaGlsZCk7CiAKICAgICAgICAgc2Vs
ZWN0aW9ucy0+YXBwZW5kKHNlbGVjdGlvbik7CiAgICAgICAgIG1fc2VsZWN0aW9uU2V0LmFkZChz
ZWxlY3Rpb24uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTENvbnRlbnRTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENv
bnRlbnRTZWxlY3Rvci5oCmluZGV4IDI5YmQ2MTYzZjUxMmFiNDNkZmI1N2Y3NjEzYzdhYTc3ZDI2
ZDhmNTguLjE0ZWEwNTdhMGE1ZWQ1NzQ3Y2RjYTk4OThkMmE1ZTVmYTUzYzU4NzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50U2VsZWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudFNlbGVjdG9yLmgKQEAgLTEz
MCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgSFRNTENvbnRlbnRTZWxlY3RvcigpOwogICAgIH5I
VE1MQ29udGVudFNlbGVjdG9yKCk7CiAKLSAgICB2b2lkIHNlbGVjdChIVE1MQ29udGVudEVsZW1l
bnQqLCBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3QqKTsKKyAgICB2b2lkIHNlbGVjdChJbnNlcnRp
b25Qb2ludCosIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCopOwogICAgIHZvaWQgdW5zZWxlY3Qo
SFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0Kik7CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGZp
bmRGb3IoTm9kZSoga2V5KSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGNiMDFjZDIxZmUwZTAwOWE1ZThlMDAzYWI5
Yjg0YjY4ZmRkNDI5MzAuLmI1MjkxZmVlYmVlYTE3MGI1NzEzNDgzNzc5NjA4Yjc4NjkzNjhjNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5j
cHAKQEAgLTM1LDEzICszNSwxNiBAQAogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAK
ICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVk
ZSAiU2hhZG93VHJlZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50
OwogCiBpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQ6OkhUTUxTaGFkb3dFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IEhUTUxFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAgIDogSW5zZXJ0aW9uUG9pbnQodGFnTmFtZSwgZG9j
dW1lbnQpCisgICAgLCBkaXN0cmlidXRlZFNoYWRvd1Jvb3QoMCkKIHsKICAgICBBU1NFUlQoaGFz
VGFnTmFtZShIVE1MTmFtZXM6OnNoYWRvd1RhZykpOwogfQpAQCAtNTUsNiArNTgsNTcgQEAgSFRN
TFNoYWRvd0VsZW1lbnQ6On5IVE1MU2hhZG93RWxlbWVudCgpCiB7CiB9CiAKK3ZvaWQgSFRNTFNo
YWRvd0VsZW1lbnQ6OmF0dGFjaCgpCit7CisgICAgU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93
Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSk7CisgICAgYm9vbCBzaGFkb3dEaXN0cmlidXRpb24g
PSBmYWxzZTsKKworICAgIGlmIChyb290KSB7CisgICAgICAgIC8vIFdoZW4gcm9vdCBpcyB0aGUg
b2xkZXN0IHNoYWRvdyByb290LCA8c2hhZG93PiBzaG91bGQgYmVoYXZlIGxpa2UgPGNvbnRlbnQ+
CisgICAgICAgIGlmIChyb290LT5pc09sZGVzdCgpKSB7CisgICAgICAgICAgICBIVE1MQ29udGVu
dFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnRyZWUoKS0+ZW5zdXJlU2VsZWN0b3IoKTsKKyAg
ICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsKKyAgICAgICAgICAg
IHNlbGVjdG9yLT5zZWxlY3QodGhpcywgJm1fc2VsZWN0aW9ucyk7CisgICAgICAgIH0gZWxzZSBp
ZiAoIXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5kaXN0cmlidXRlZFRvKCkpIHsKKyAgICAgICAg
ICAgIHNoYWRvd0Rpc3RyaWJ1dGlvbiA9IHRydWU7CisgICAgICAgICAgICBzZXREaXN0cmlidXRl
ZEZyb20ocm9vdC0+b2xkZXJTaGFkb3dSb290KCkpOworICAgICAgICAgICAgcm9vdC0+b2xkZXJT
aGFkb3dSb290KCktPnNldERpc3RyaWJ1dGVkVG8odGhpcyk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKCk7CisKKyAgICBpZiAocm9vdCkgeworICAgICAg
ICBpZiAocm9vdC0+aXNPbGRlc3QoKSkgeworICAgICAgICAgICAgZm9yIChIVE1MQ29udGVudFNl
bGVjdGlvbiogc2VsZWN0aW9uID0gbV9zZWxlY3Rpb25zLmZpcnN0KCk7IHNlbGVjdGlvbjsgc2Vs
ZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCisgICAgICAgICAgICAgICAgc2VsZWN0aW9uLT5u
b2RlKCktPmF0dGFjaCgpOworICAgICAgICB9IGVsc2UgaWYgKHNoYWRvd0Rpc3RyaWJ1dGlvbikg
eworICAgICAgICAgICAgQVNTRVJUKCFyb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoZWQo
KSk7CisgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoKCk7CisgICAg
ICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSFRNTFNoYWRvd0VsZW1lbnQ6OmRldGFjaCgpCit7Cisg
ICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2Rl
KCkpKSB7CisgICAgICAgIGlmIChyb290LT5pc09sZGVzdCgpKSB7CisgICAgICAgICAgICBpZiAo
SFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT50cmVlKCktPnNlbGVjdG9yKCkp
CisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMpOworICAg
ICAgICB9IGVsc2UgaWYgKFNoYWRvd1Jvb3QqIGRpc3RyaWJ1dGVkU2hhZG93Um9vdCA9IGRpc3Ry
aWJ1dGVkRnJvbSgpKSB7CisgICAgICAgICAgICBkaXN0cmlidXRlZFNoYWRvd1Jvb3QtPnNldERp
c3RyaWJ1dGVkVG8oMCk7CisgICAgICAgICAgICBzZXREaXN0cmlidXRlZEZyb20oMCk7CisgICAg
ICAgIH0KKworICAgICAgICAvLyBXaGVuIHNoYWRvdyBlbGVtZW50IGlzIGRldGFjaGVkLCBzaGFk
b3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxlY3RvciBmb3IK
KyAgICAgICAgLy8gb3RoZXIgaW5zZXJ0aW9uIHBvaW50cy4KKyAgICAgICAgcm9vdC0+dHJlZSgp
LT5zZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93KCk7CisgICAgfQorCisgICAg
QVNTRVJUKG1fc2VsZWN0aW9ucy5pc0VtcHR5KCkpOworICAgIEluc2VydGlvblBvaW50OjpkZXRh
Y2goKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNI
QURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hh
ZG93RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1l
bnQuaAppbmRleCAxNTFjN2EyYWJiZDZjNTA1Nzg5NDNmZDZkY2NmZmYwNWM5YzlmZmY3Li43ZWJk
ZGVmMjgxZTVhMDQ3NjM4ZjM0YzAzNDVlMTA1ZDRhYzMwZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKQEAgLTMzLDIxICszMyw0NiBAQAog
CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAKLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
SFRNTFNoYWRvd0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgSFRNTFNoYWRv
d0VsZW1lbnQgOiBwdWJsaWMgSW5zZXJ0aW9uUG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEhUTUxTaGFkb3dFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIH5IVE1MU2hhZG93RWxlbWVudCgpOwogCisgICAg
dmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKworICAg
IFNoYWRvd1Jvb3QqIGRpc3RyaWJ1dGVkRnJvbSgpIGNvbnN0OworICAgIHZvaWQgc2V0RGlzdHJp
YnV0ZWRGcm9tKFNoYWRvd1Jvb3QqKTsKKwogcHJpdmF0ZToKICAgICBIVE1MU2hhZG93RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNT
aGFkb3dFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgU2hhZG93Um9vdCog
ZGlzdHJpYnV0ZWRTaGFkb3dSb290OwogfTsKIAoraW5saW5lIFNoYWRvd1Jvb3QqIEhUTUxTaGFk
b3dFbGVtZW50OjpkaXN0cmlidXRlZEZyb20oKSBjb25zdAoreworICAgIHJldHVybiBkaXN0cmli
dXRlZFNoYWRvd1Jvb3Q7Cit9CisKK2lubGluZSB2b2lkIEhUTUxTaGFkb3dFbGVtZW50OjpzZXRE
aXN0cmlidXRlZEZyb20oU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK3sKKyAgICBBU1NFUlQoIWRp
c3RyaWJ1dGVkU2hhZG93Um9vdCB8fCAhc2hhZG93Um9vdCk7CisgICAgZGlzdHJpYnV0ZWRTaGFk
b3dSb290ID0gc2hhZG93Um9vdDsKK30KKworaW5saW5lIEhUTUxTaGFkb3dFbGVtZW50KiB0b0hU
TUxTaGFkb3dFbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzaGFkb3dUYWcpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SFRNTFNoYWRvd0VsZW1lbnQqPihub2RlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCBkYjVhM2QwNzI1YzYyMDMwYWE2M2U5NTQ3Y2Vl
NzBkZDRhYmVkODRlLi4wNGY5MTJiZTIxNzNkYTEyOGZkZjZmOWQ4ZWZjYTA3ODgxMTYyN2Q1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKICNpbmNsdWRlICJI
VE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUzLDkgKzU0LDcgQEAgcHJvdGVjdGVkOgogCiBpbmxpbmUgYm9vbCBpc0luc2Vy
dGlvblBvaW50KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IDxzaGFkb3c+IHNob3VsZCBh
bHNvIGJlIEluc2VydGlvblBvaW50LgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODU5NgotICAgIGlmICghbm9kZSB8fCBub2RlLT5pc0NvbnRlbnRFbGVt
ZW50KCkpCisgICAgaWYgKCFub2RlIHx8IG5vZGUtPmlzQ29udGVudEVsZW1lbnQoKSB8fCBub2Rl
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2hhZG93VGFnKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzU5YTZjNjU1OGU1ODlmYWIxNjU4N2M1MWE2
ZGRiYmVjMGNkMWNjOS4uNmQ0MTQwZjBmODA0OTc5OWEyM2UyYzAzMWQxNTg2MjlkZTNkNmI4YSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAyLTI4ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlu
eWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBzaG91bGQgYmUgcmVuZGVyZWQg
Y29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanM6CisgICAgICAgIChj
cmVhdGVDb250ZW50V2l0aFNlbGVjdCk6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2NvbnRl
bnQtZWxlbWVudC1tb3ZlLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmlu
Zy1zaW5nbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDItMjggIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2lu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbRm9ybXNdIFNwaW4gYnV0dG9uIHNvbWV0aW1lcyBp
Z25vcmVzIEluZGV0ZXJtaW5hdGUgb2YgbV91cERvd25TdGF0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMKaW5kZXggMGZmNWQ0
MDU4ZTIwN2MxZDBiMjlmMjE4YjAyOTEyY2ZjYjViOTBmMC4uYzk5YjYzOGYyYWU4NjIxMjRmMDY3
OGY1MjZiNGQ5YjQ5NGNlMjRlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVz
b3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9y
ZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzCkBAIC02MSwxMSArNjEsMTEgQEAgZnVuY3Rp
b24gY3JlYXRlU3BhbldpdGhUZXh0KHRleHQsIGNsYXNzTmFtZSkgewogICAgIHJldHVybiBzcGFu
OwogfQogCi1mdW5jdGlvbiBjcmVhdGVDb250ZW50V2l0aFNlbGVjdChzZWxlY3QsIGZhbGxiYWNr
KSB7CitmdW5jdGlvbiBjcmVhdGVDb250ZW50V2l0aFNlbGVjdChzZWxlY3QsIGZhbGxiYWNrVGV4
dCkgewogICAgIHZhciBjb250ZW50ID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRv
Y3VtZW50KTsKICAgICBjb250ZW50LnNldEF0dHJpYnV0ZSgnc2VsZWN0Jywgc2VsZWN0KTsKLSAg
ICBpZiAoIWZhbGxiYWNrKQotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgiRkFMTEJBQ0siKSk7CisgICAgaWYgKGZhbGxiYWNrVGV4dCkKKyAgICAgICAgY29u
dGVudC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoZmFsbGJhY2tUZXh0KSk7CiAKICAg
ICByZXR1cm4gY29udGVudDsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9jb250ZW50LWVsZW1lbnQtbW92ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2NvbnRlbnQtZWxlbWVudC1tb3ZlLmh0bWwKaW5kZXggOThjNTIwNTc3N2U0MWI5OWYwYjRi
ZGNmMzExYTlkODNiNTMzMTQwZS4uM2JjMzg3MmNmOWJjNjFjNjdmZTQ5YWU5YjYxNWYzYzZiZjU2
ZGE2MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQtZWxl
bWVudC1tb3ZlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbnRlbnQt
ZWxlbWVudC1tb3ZlLmh0bWwKQEAgLTIyLDcgKzIyLDcgQEAgZnVuY3Rpb24gdGVzdFJlbW92ZUNv
bnRlbnQoY2FsbElmRG9uZSkgewogICAgIHJvb3QuaW5uZXJIVE1MID0gIjxzcGFuPkxJR0hUPC9z
cGFuPiI7CiAKICAgICAvLyBDcmVhdGUgc2hhZG93IHRyZWUuCi0gICAgdmFyIGNvbnRlbnQgPSBj
cmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicpOworICAgIHZhciBjb250ZW50ID0gY3JlYXRl
Q29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKTsKICAgICB2YXIgc3IgPSBpbnRl
cm5hbHMuZW5zdXJlU2hhZG93Um9vdChyb290KTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoIkJFRk9SRSIpKTsKICAgICBzci5hcHBlbmRDaGlsZChjb250ZW50KTsKQEAg
LTQ4LDggKzQ4LDggQEAgZnVuY3Rpb24gdGVzdFJlbW92ZUNvbnRlbnRUb1JlY2FsYzEoY2FsbElm
RG9uZSkgewogICAgIHJvb3QuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdjMSc+TElHSFQgMTwv
c3Bhbj48c3Bhbj5MSUdIVCAyPC9zcGFuPiI7CiAKICAgICAvLyBDcmVhdGUgc2hhZG93IHRyZWUu
Ci0gICAgdmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMScpOwotICAg
IHZhciBjb250ZW50MiA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJyk7CisgICAgdmFy
IGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMScsICdGQUxMQkFDSycpOwor
ICAgIHZhciBjb250ZW50MiA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExC
QUNLJyk7CiAgICAgdmFyIHNyID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3Qocm9vdCk7CiAg
ICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCJCRUZPUkUiKSk7CiAgICAgc3Iu
YXBwZW5kQ2hpbGQoY29udGVudDEpOwpAQCAtNzcsOCArNzcsOCBAQCBmdW5jdGlvbiB0ZXN0UmVt
b3ZlQ29udGVudFRvUmVjYWxjMihjYWxsSWZEb25lKSB7CiAgICAgcm9vdC5pbm5lckhUTUwgPSAi
PHNwYW4+TElHSFQgMTwvc3Bhbj48c3BhbiBjbGFzcz0nYzEnPkxJR0hUIDI8L3NwYW4+IjsKIAog
ICAgIC8vIENyZWF0ZSBzaGFkb3cgdHJlZS4KLSAgICB2YXIgY29udGVudDEgPSBjcmVhdGVDb250
ZW50V2l0aFNlbGVjdCgnLmMxJyk7Ci0gICAgdmFyIGNvbnRlbnQyID0gY3JlYXRlQ29udGVudFdp
dGhTZWxlY3QoJ3NwYW4nKTsKKyAgICB2YXIgY29udGVudDEgPSBjcmVhdGVDb250ZW50V2l0aFNl
bGVjdCgnLmMxJywgJ0ZBTExCQUNLJyk7CisgICAgdmFyIGNvbnRlbnQyID0gY3JlYXRlQ29udGVu
dFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJBQ0snKTsKICAgICB2YXIgc3IgPSBpbnRlcm5hbHMu
ZW5zdXJlU2hhZG93Um9vdChyb290KTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoIkJFRk9SRSIpKTsKICAgICBzci5hcHBlbmRDaGlsZChjb250ZW50MSk7CkBAIC0xMzMs
NyArMTMzLDcgQEAgZnVuY3Rpb24gdGVzdFJlbW92ZVNoYWRvd1Jvb3QoY2FsbElmRG9uZSkgewog
ICAgIHJvb3QuaW5uZXJIVE1MID0gIjxzcGFuPkxJR0hUPC9zcGFuPiI7CiAKICAgICAvLyBDcmVh
dGUgc2hhZG93IHRyZWUuCi0gICAgdmFyIGNvbnRlbnQgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVj
dCgnc3BhbicpOworICAgIHZhciBjb250ZW50ID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3Nw
YW4nLCAnRkFMTEJBQ0snKTsKICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9v
dChyb290KTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIp
KTsKICAgICBzci5hcHBlbmRDaGlsZChjb250ZW50KTsKQEAgLTE1OSw3ICsxNTksNyBAQCBmdW5j
dGlvbiB0ZXN0UmVtb3ZlQ29udGVudEFuZFJlbW92ZVNoYWRvd1Jvb3QxKGNhbGxJZkRvbmUpIHsK
ICAgICByb290LmlubmVySFRNTCA9ICI8c3Bhbj5MSUdIVDwvc3Bhbj4iOwogCiAgICAgLy8gQ3Jl
YXRlIHNoYWRvdyB0cmVlLgotICAgIHZhciBjb250ZW50ID0gY3JlYXRlQ29udGVudFdpdGhTZWxl
Y3QoJ3NwYW4nKTsKKyAgICB2YXIgY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdz
cGFuJywgJ0ZBTExCQUNLJyk7CiAgICAgdmFyIHNyID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jv
b3Qocm9vdCk7CiAgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCJCRUZPUkUi
KSk7CiAgICAgc3IuYXBwZW5kQ2hpbGQoY29udGVudCk7CkBAIC0xODYsNyArMTg2LDcgQEAgZnVu
Y3Rpb24gdGVzdFJlbW92ZUNvbnRlbnRBbmRSZW1vdmVTaGFkb3dSb290MihjYWxsSWZEb25lKSB7
CiAgICAgcm9vdC5pbm5lckhUTUwgPSAiPHNwYW4+TElHSFQgMTwvc3Bhbj48c3BhbiBjbGFzcz0n
YzEnPkxJR0hUIDI8L3NwYW4+IjsKIAogICAgIC8vIENyZWF0ZSBzaGFkb3cgdHJlZS4KLSAgICB2
YXIgY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuYzEnKTsKKyAgICB2YXIgY29u
dGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuYzEnLCAnRkFMTEJBQ0snKTsKICAgICB2
YXIgc3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChyb290KTsKICAgICBzci5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIpKTsKICAgICBzci5hcHBlbmRDaGlsZChj
b250ZW50KTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBmdW5jdGlvbiB0ZXN0QXBwZW5kQ29udGVudDEo
Y2FsbElmRG9uZSkgewogCiAgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkg
ewogICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgY29udGVudCA9
IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJyk7CisgICAgICAgICAgICB2YXIgY29udGVu
dCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJyk7CiAgICAgICAg
ICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChyb290KTsKICAgICAgICAg
ICAgIHNyLmluc2VydEJlZm9yZShjb250ZW50LCBzci5sYXN0Q2hpbGQpOwogICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPSAi
PGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PFNQQU4+TElHSFQ8L3NwYW4+PHNwYW4+QUZURVI8L3Nw
YW4+PC9kaXY+IjsKQEAgLTI0Nyw4ICsyNDcsOCBAQCBmdW5jdGlvbiB0ZXN0QXBwZW5kQ29udGVu
dDIoY2FsbElmRG9uZSkgewogCiAgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9u
ZSkgewogICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgY29udGVu
dDEgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLmMyJyk7Ci0gICAgICAgICAgICB2YXIgY29u
dGVudDIgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicpOworICAgICAgICAgICAgdmFy
IGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5jMicsICdGQUxMQkFDSycpOwor
ICAgICAgICAgICAgdmFyIGNvbnRlbnQyID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4n
LCAnRkFMTEJBQ0snKTsKICAgICAgICAgICAgIHZhciBzciA9IGludGVybmFscy5lbnN1cmVTaGFk
b3dSb290KHJvb3QpOwogICAgICAgICAgICAgc3IuaW5zZXJ0QmVmb3JlKGNvbnRlbnQxLCBzci5s
YXN0Q2hpbGQpOwogICAgICAgICAgICAgc3IuaW5zZXJ0QmVmb3JlKGNvbnRlbnQyLCBzci5sYXN0
Q2hpbGQpOwpAQCAtMjY5LDE2ICsyNjksMjAgQEAgZnVuY3Rpb24gdGVzdEFwcGVuZENvbnRlbnQz
KGNhbGxJZkRvbmUpIHsKICAgICAvLyBDcmVhdGUgc2hhZG93IHRyZWUuCiAgICAgdmFyIHNyID0g
aW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3Qocm9vdCk7CiAgICAgdmFyIG1pZCA9IGNyZWF0ZVNw
YW5XaXRoVGV4dCgiTUlEIik7CisgICAgdmFyIGIgPSBjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9S
RSIpOworICAgIC8vIGIudGl0bGUgPSAiZGVidWdzdG9wIjsKICAgICBzci5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIpKTsKICAgICBzci5hcHBlbmRDaGlsZChtaWQpOwot
ICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuYzInKSk7CisgICAg
dmFyIGMgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLmMyJywgJ0ZBTExCQUNLJykKKyAgICBz
ci5hcHBlbmRDaGlsZChjKTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
IkFGVEVSIikpOwogCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZChyb290KTsKIAogICAgIHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIG1p
ZCwgY2FsbElmRG9uZSkgewogICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICB2YXIgY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJyk7CisgICAgICAg
ICAgICB2YXIgY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0ZBTExC
QUNLJyk7CisgICAgICAgICAgICBjb250ZW50LnRpdGxlID0gImRlYnVnc3RvcCI7CiAgICAgICAg
ICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChyb290KTsKICAgICAgICAg
ICAgIHNyLmluc2VydEJlZm9yZShjb250ZW50LCBtaWQpOwogICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQpAQCAtMjk4LDgg
KzMwMiw4IEBAIGZ1bmN0aW9uIHRlc3RDaGFuZ2VPcmRlck9mQ29udGVudChjYWxsSWZEb25lKSB7
CiAKICAgICAvLyBDcmVhdGUgc2hhZG93IHRyZWUuCiAgICAgdmFyIHNyID0gaW50ZXJuYWxzLmVu
c3VyZVNoYWRvd1Jvb3Qocm9vdCk7Ci0gICAgdmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdp
dGhTZWxlY3QoJy5jMScpOwotICAgIHZhciBjb250ZW50MiA9IGNyZWF0ZUNvbnRlbnRXaXRoU2Vs
ZWN0KCdzcGFuJyk7CisgICAgdmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3Qo
Jy5jMScsICdGQUxMQkFDSycpOworICAgIHZhciBjb250ZW50MiA9IGNyZWF0ZUNvbnRlbnRXaXRo
U2VsZWN0KCdzcGFuJywgJ0ZBTExCQUNLJyk7CiAgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCJCRUZPUkUiKSk7CiAgICAgc3IuYXBwZW5kQ2hpbGQoY29udGVudDEpOwogICAg
IHNyLmFwcGVuZENoaWxkKGNvbnRlbnQyKTsKQEAgLTMzNiw3ICszNDAsNyBAQCBmdW5jdGlvbiB0
ZXN0TW92ZUxpZ2h0Q2hpbGRPdXQoY2FsbElmRG9uZSkgewogCiAgICAgLy8gQ3JlYXRlIHNoYWRv
dyB0cmVlIGluICduMScKICAgICB2YXIgc3IgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChu
MSk7Ci0gICAgdmFyIGNvbnRlbnQgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicpOwor
ICAgIHZhciBjb250ZW50ID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnRkFMTEJB
Q0snKTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoIkJFRk9SRSIpKTsK
ICAgICBzci5hcHBlbmRDaGlsZChjb250ZW50KTsKICAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoIkFGVEVSIikpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRp
cGxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWRhYzIwZmRmM2FhZWRhNjMwMjljZjY4ZGJi
ODU4NzRjOTYyNTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzMiBAQAorcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdAorUEFTUworcmVuZGVyaW5nRG91
YmxlU2hhZG93Um9vdFdpdGhPbmVTaGFkb3dFbGVtZW50CitQQVNTCityZW5kZXJpbmdUcmlwbGVT
aGFkb3dSb290CitQQVNTCityZW5kZXJpbmdUd29TaGFkb3dSb290cworUEFTUwordGVzdFdpdGhE
b3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQxCitQQVNTCit0ZXN0V2l0aERvdWJsZVNoYWRvd1Jv
b3RXaXRoQ29udGVudDIKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxs
eUFkZGVkMQorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5QWRkZWQy
CitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDMKK1BBU1MK
K3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseVJlbW92ZWQxCitQQVNTCityZW5k
ZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlSZW1vdmVkMgorUEFTUworcmVuZGVyaW5n
TGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ09sZGVyU2hhZG93
Um9vdENvbnRlbnREeW5hbWljYWxseUFkZGVkCitQQVNTCityZW5kZXJpbmdMaWdodENoaWxkcmVu
RHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCityZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50
RHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCitURVNUIENPTVBMRVRFRAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRp
cGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVu
ZGVyaW5nLW11bHRpcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVkZTgxODEzMGIyZDNhNmQ3ZWRjZWMw
Y2NjY2NkMzljODMyNWY3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbApAQCAtMCwwICsx
LDQ0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVs
YXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29u
dGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNw
bGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsK
K30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZl
ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkgeworICAgIGlu
dGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK30KKworZnVu
Y3Rpb24gdGVhckRvd25PbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1
YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsKKwordGVzdEZ1
bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdChjYWxsSWZEb25lKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwv
c3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9z
cGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisK
KyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rl
c3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RXaXRoT25lU2hh
ZG93RWxlbWVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUg
Mjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFG
VEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIC8vIE1JRCB3b24ndCBiZSByZW5kZXJlZC4KKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicp
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jykp
OworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENo
aWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5j
dGlvbiByZW5kZXJpbmdUcmlwbGVTaGFkb3dSb290KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAg
ICI8ZGl2PjxzcGFuPkJFRk9SRSAzPC9zcGFuPjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJF
Rk9SRSAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+TUlEPC9zcGFuPiIgKworICAgICAgICAi
PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjxzcGFuPkFGVEVSIDM8L3Nw
YW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKwor
ICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdBRlRFUiAyJykpOworCisgICAgdmFyIHNyMyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAzJykpOwor
ICAgIHNyMy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7Cisg
ICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMycpKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
cm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9u
IHJlbmRlcmluZ1R3b1NoYWRvd1Jvb3RzKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2
PjxzcGFuPkJFRk9SRSAyPC9zcGFuPiIgKworICAgICAgICAgICAgIjxzcGFuPkJFRk9SRSAxPC9z
cGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPiIgKworICAgICAgICAgICAg
IjxzcGFuPkZBTExCQUNLIDItMjwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkFGVEVSIDI8L3Nw
YW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKwor
ICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgdmFyIHNoYWRvdzIxID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdGQUxMQkFDSyAyLTEnKSk7CisgICAgdmFyIHNoYWRvdzIyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdGQUxMQkFDSyAyLTInKSk7CisKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoc2hhZG93MjEp
OworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyMik7CisgICAgc3IyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9u
ZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91YmxlU2hhZG93
Um9vdFdpdGhDb250ZW50MShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5C
RUZPUkUgMjwvc3Bhbj48c3Bhbj5NSUQgMjwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkJFRk9S
RSAxPC9zcGFuPjxzcGFuPk1JRCAxPC9zcGFuPjxzcGFuPk1JRCAzPC9zcGFuPjxzcGFuPkFGVEVS
IDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMycsICdzcjMnKSk7CisgICAgcm9vdC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAxJywgJ3NyMScpKTsKKyAgICByb290
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDInLCAnc3IyJykpOworCisgICAg
dmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFk
b3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDEnKSk7
CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHZhciBjb250ZW50
MSA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IxJywgJ0NPTlRFTlQgRkFMTEJBQ0sgMScp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjb250ZW50MSk7CisgICAgc3IxLmFwcGVuZENoaWxkKHNo
YWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEn
KSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
OworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFM
TEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAg
dmFyIGNvbnRlbnQ7CisgICAgc3IyLmFwcGVuZENoaWxkKGNvbnRlbnQgPSBjcmVhdGVDb250ZW50
V2l0aFNlbGVjdCgnLnNyMicsICdDT05URU5UIEZBTExCQUNLIDInKSk7CisgICAgY29udGVudC50
aXRsZSA9ICJkZWJ1Z3N0b3AiOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyKTsKKyAgICBz
cjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290
KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVz
dFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQyKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAg
ICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPk1JRCAyPC9zcGFuPjxzcGFuPk1J
RCAzPC9zcGFuPjxzcGFuPk1JRCAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QkVGT1JFIDE8
L3NwYW4+PHNwYW4+Q09OVEVOVCBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPlNIQURPVyBGQUxMQkFD
SyAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAy
PC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMycs
ICdzcjMnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAx
JywgJ3NyMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlE
IDInLCAnc3IyJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
U0hBRE9XIEZBTExCQUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAx
JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMScs
ICdDT05URU5UIEZBTExCQUNLIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKHNoYWRvdzEpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAg
ICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNo
YWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMicp
KTsKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IyJywgJ0NPTlRFTlQgRkFMTEJBQ0sg
MicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4n
LCAnQ09OVEVOVCBGQUxMQkFDSyAzJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyKTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGls
ZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rp
b24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5QWRkZWQxKGNhbGxJZkRvbmUp
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVy
SFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAx
PC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8
L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsK
KworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAg
dmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICAgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgICAg
IHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAg
ICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkocm9vdCwgY2FsbElmRG9uZSk7CisKKyAgICBz
ZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmlu
Z0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMihjYWxsSWZEb25lKSB7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAg
ICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bh
bj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2
PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIg
c3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
IDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicp
LmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IyLCBjYWxsSWZE
b25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgICAgICBzcjIuaW5zZXJ0QmVmb3JlKHNoYWRv
dywgc3IyLmxhc3RDaGlsZCk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpCisgICAgfTt9KShzcjIs
IGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3Mu
cHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDMo
Y2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNw
YW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNw
YW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2
YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0g
KGZ1bmN0aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICAgICAg
c3IxLmluc2VydEJlZm9yZShzaGFkb3csIHNyMS5sYXN0Q2hpbGQpOworCisgICAgICAgIGNhbGxJ
ZkRvbmUoKQorICAgIH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwg
MCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93
Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDEoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+
PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IyLCBjYWxsSWZEb25lKSB7IHJldHVy
biBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IyLnJlbW92ZUNoaWxkKHNyMi5maXJzdENoaWxkLm5l
eHRTaWJsaW5nKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkoc3IyLCBjYWxsSWZE
b25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVu
Y3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDIoY2FsbElm
RG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVG
T1JFIDE8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2
PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIg
c3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
aGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIg
MicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRv
bmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBzcjEucmVtb3ZlQ2hpbGQoc3IxLmZp
cnN0Q2hpbGQubmV4dFNpYmxpbmcpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShz
cjEsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlBZGRlZChj
YWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bh
bj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bh
bj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJv
b3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykp
OworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKwor
ICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFy
IGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAg
ICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHJvb3QsIGNhbGxJZkRvbmUpOworCisgICAgc2V0
VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdP
bGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQor
ICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48
c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwv
ZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2
YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRh
aW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IxLCBj
YWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOwor
ICAgIH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsK
KwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNh
bGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUg
Mjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFG
VEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3Iy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fj
dHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0
aW9uKHJvb3QsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICByb290
LnJlbW92ZUNoaWxkKHJvb3QuZmlyc3RDaGlsZCk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAg
ICB9O30pKHJvb3QsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOwor
Cit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50
RHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFu
PkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bh
bj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBy
b290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hPVUxE
IE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUg
MicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93
JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IxLCBjYWxsSWZEb25lKSB7
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IxLnJlbW92ZUNoaWxkKHNyMS5sYXN0Q2hp
bGQpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjEsIGNhbGxJZkRvbmUpOwor
CisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8ZGl2IGlkPSJhY3R1YWwtY29udGFpbmVy
IiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1jb250YWluZXIiIGNs
YXNzPSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zYjEwY2NiYjA5NDc0N2M5NTM3MWZhOTIzYjFiYTRlYzIzYjY0MjcwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVt
ZW50LXJlbmRlcmluZy1zaW5nbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK3JlbmRl
cmluZ1NpbmdsZVNoYWRvd1Jvb3QKK1BBU1MKK3JlbmRlcmluZ05vdEZhbGxiYWNrZWQKK1BBU1MK
K3JlbmRlcmluZ0ZhbGxiYWNrZWQKK1BBU1MKK3JlbmRlcmluZ01peGVkT2ZGYWxsYmFja0FuZE5v
bkZhbGxiYWNrCitQQVNTCityZW5kZXJpbmdTaGFkb3dSb290QmVmb3JlQ29udGVudAorUEFTUwor
cmVuZGVyaW5nU2hhZG93Um9vdEFmdGVyQ29udGVudAorUEFTUworcmVuZGVyaW5nU2hhZG93RWxl
bWVudER5bmFtaWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ1NoYWRvd0VsZW1lbnREeW5hbWlj
YWxseVJlbW92ZWQKK1BBU1MKK3JlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVk
CitQQVNTCityZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCitU
RVNUIENPTVBMRVRFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNGU4MDZmOTVhMTg2YzdiYzQ2MTgwODAzOTg1Y2YxOGI5N2QxYTMyCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmlu
Zy1zaW5nbGUuaHRtbApAQCAtMCwwICsxLDI0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5
aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Cit9CisKKy5zcGFuIHsKKyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAy
cHg7CisgICAgYm9yZGVyOiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rp
b24gc2V0VXBPbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVz
RW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gdGVhckRvd25PbmNlKCkgeworICAgIGludGVy
bmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0
ZXN0RnVuY3MgPSBbXTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2luZ2xl
U2hhZG93Um9vdChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8
L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2
YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzaGFkb3cnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5w
dXNoKGZ1bmN0aW9uIHJlbmRlcmluZ05vdEZhbGxiYWNrZWQoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRF
Ujwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykp
OworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOwor
ICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLJykpOwor
ICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNo
YWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1
bmN0aW9uIHJlbmRlcmluZ0ZhbGxiYWNrZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxk
aXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkZBTExCQUNLPC9zcGFuPjxzcGFuPkFGVEVSPC9z
cGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
OworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLJykp
OworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxk
KHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicp
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNo
KGZ1bmN0aW9uIHJlbmRlcmluZ01peGVkT2ZGYWxsYmFja0FuZE5vbkZhbGxiYWNrKGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3Nw
YW4+PHNwYW4+RkFMTEJBQ0sgMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisg
ICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRvdzEg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sgMScpKTsKKyAgICB2YXIgc2hhZG93MiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyJykpOworCisgICAgdmFyIHNyID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3Iu
YXBwZW5kQ2hpbGQoc2hhZG93Mik7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rl
c3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1NoYWRvd1Jvb3RCZWZvcmVDb250ZW50KGNh
bGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5l
cicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5N
SUQ8L3NwYW4+PHNwYW4+TSAxPC9zcGFuPjxzcGFuPkNPTlRFTlQgRkFMTEJBQ0s8L3NwYW4+PHNw
YW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdNIDEnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlQ29u
dGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnQ09OVEVOVCBGQUxMQkFDSycpKTsKKyAgICBzci5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ00gMicpKTsKKyAgICBzci5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25l
KCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hhZG93Um9vdEFm
dGVyQ29udGVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8
L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPk0gMTwvc3Bhbj48c3Bhbj5TSEFET1cgRkFMTEJB
Q0s8L3NwYW4+PHNwYW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRo
U2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQgRkFMTEJBQ0snKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdNIDEnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsK
KyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ00gMicpKTsKKyAgICBzci5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAg
ICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5n
U2hhZG93RWxlbWVudER5bmFtaWNhbGx5QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAg
IjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bh
bj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKwor
ICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1
bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QsIHNyKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgICAg
ICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0p
KGNhbGxJZkRvbmUsIHJvb3QsIHNyKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwor
dGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5
UmVtb3ZlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVj
dC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3Nw
YW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIg
ZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCBzciwgc2hhZG93KSB7IHJldHVybiBmdW5jdGlvbigp
IHsKKyAgICAgICAgc3IucmVtb3ZlQ2hpbGQoc2hhZG93KTsKKyAgICAgICAgY2FsbElmRG9uZSgp
OworICAgIH19KShjYWxsSWZEb25lLCBzciwgc2hhZG93KTsKKworICAgIHNldFRpbWVvdXQoZiwg
MCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGlsZHJl
bkR5bmFtaWNhbGx5QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+
QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisK
KyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFy
IHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFs
LWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24o
Y2FsbElmRG9uZSwgcm9vdCkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAgICAgIGNhbGxJZkRvbmUo
KTsKKyAgICB9fSkoY2FsbElmRG9uZSwgcm9vdCk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOwor
fSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5h
bWljYWxseVJlbW92ZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVG
T1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOwor
CisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAg
IHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZh
ciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7
CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
cm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7IHJldHVy
biBmdW5jdGlvbigpIHsKKyAgICAgICAgcm9vdC5yZW1vdmVDaGlsZChyb290LmZpcnN0Q2hpbGQp
OworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3QpOworCisg
ICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8ZGl2IGlkPSJhY3R1YWwtY29udGFpbmVyIiBj
bGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1jb250YWluZXIiIGNsYXNz
PSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggMDY3YmQwMDEwZTY4NjE1NWIx
NjkwNTgyNzVjZWY1ZGM0Y2VkYmMwNS4uYjViZDFlMDI2MWUyNTA1ZDU1NWI1MWNkMjNhNmQ2MTE5
Yjg2ZTNlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTIwOTIsNiArMjA5Miw4IEBA
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hl
ZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QtcmVuZGVyaW5nLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCAyMjg3
MTA1MDk5ZDQ4YjczNDRlOTIxNTY4MzU0NWZiYWFkNDAxYWQxLi4xMjdkNjlmYjIxNWY0Y2NhYWU4
NDBiYzZlODM2Mzc4YzQ4YTY5OTUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtNDMx
LDYgKzQzMSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKK2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXgg
Zjc4ZWU0ZDg1MjVkY2NlM2YzOTY5ZWFjYjQxZWI4MzBlOGIzN2MwNi4uMzExNzQ2ZmE0YjYwODVk
NmM1YmNiYzM3ZWZiODY1ZDdjYmQ3Njk3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0x
NjksNiArMTY5LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1vbi1pbWFnZS5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKK2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApp
bmRleCAxMzM1MDk1NDE0ZWI4M2FiMDBmYmY1ODU2ZDdjMDljN2RiYzJmNzFiLi45M2U5MWQ2OGMz
M2Q0YThkN2RiZTdhMjg4Y2YyNmM0NDFmY2UxNWE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBl
ZApAQCAtMTQ1Nyw2ICsxNDU3LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGku
aHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRt
bAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luY2Fpcm8vU2tpcHBlZAppbmRleCA0NmM1NzM4YzllMTM1NWQ3MzhkN2U5ZDZkNmQ1Mzc3MGIy
ZDJlNzQ2Li4yYjM5YzNlNjAyZTBmNjZhNjNmMTgzOTgxOTk5NWI2ZmY0Y2Q5YjczIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5NzAsNiArMTk3MCw4IEBAIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3Qt
cmVuZGVyaW5nLmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCA0YWE3NzBjMzI0
NjQwZTFkZDgyNTQ2ZGE5ZjYyODU1Y2M0YTg3NzYwLi4zMWE0NmFmN2ZmYjgxNmEyNmM1NmMyNmUw
ODJhMDQ4M2M2MWE0ZTg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTA3MSw2ICsx
MDcxLDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJv
b3QtbmV3Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAorZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hh
ZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129654</attachid>
            <date>2012-03-01 00:43:57 -0800</date>
            <delta_ts>2012-03-01 01:02:43 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-78596-20120301174356.patch</filename>
            <type>text/plain</type>
            <size>59821</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk5NDM5Y2U1ODRkNjkz
ZTQ1MTQyMzY2ZTc0MWQwNWM2ZTdjMGMxOS4uMTg3NzgxNTUxNjNjZGM4MmNlZWZhOGNkNDlkZmY5
MjQ2NTY1MzM5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTAyLTI4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBz
aG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgY2hh
bmdlcyB0byBhZGQgPHNoYWRvdz4gZWxlbWVudCBzdXBwb3J0LgorCisgICAgICAgICgxKSBXaGVu
IGF0dGFjaGluZyBhIDxzaGFkb3c+IGVsZW1lbnQsIGlmIHRoZXJlIGlzIGFuIG9sZGVyIHNoYWRv
dyB0cmVlIHdoaWNoIGlzIG5vdCBhc3NpZ25lZAorICAgICAgICB0byBhbnkgPHNoYWRvdz4gZWxl
bWVudCwgdGhlIDxzaGFkb3c+IGVsZW1lbnQgaGFzIGEgcG9pbnRlciB0byB0aGUgb2xkZXIgc2hh
ZG93IHJvb3QgYW5kCisgICAgICAgIHZpY2UgdmVyc2EuCisKKyAgICAgICAgKDIpIE5vZGVSZW5k
ZXJpbmdDb250ZXh0IHN1cHBvcnRzIG5vbi15b3VuZ2VzdCBzaGFkb3cgdHJlZXMuIE5vbi15b3Vu
Z2VzdCBzaGFkb3cgdHJlZXMKKyAgICAgICAgYXNzaWduZWQgdG8gYSA8c2hhZG93PiB0cmVlIGhh
cyBhIERpc3RyaWJ1dGVkIHBoYXNlLgorCisgICAgICAgICgzKSBTaGFkb3dUcmVlIHN1cHBvcnRz
IG5vbi15b3VuZ2VzdCBzaGFkb3cgdHJlZSB1cGRhdGUuIFdoZW4gdXBkYXRlIGlzIGNhdXNlZCBp
biBub24teW91Z2VzdCB0cmVlLAorICAgICAgICBTaGFkb3dUcmVlIHdpbGwgc2V0IGEgZmxhZyB0
byByZS1jcmVhdGUgdGhlIHdob2xlIHNoYWRvdyB0cmVlLgorCisgICAgICAgIFRlc3RzOiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xl
Lmh0bWwKKworICAgICAgICAqIGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbik6
CisgICAgICAgICAgUmV0dXJucyB0cnVlIGlmIEluc2VydGlvblBvaW50IHNlbGVjdHMgZWxlbWVu
dHMgZnJvbSBsaWdodCBjaGlsZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdD
b250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0UmVu
ZGVyZXJPZik6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1JlbmRlcmVyT2YpOgorICAgICAg
ICAoV2ViQ29yZTo6Zmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAgIFJl
dHVybnMgdGhlIGZpcnN0IHJlbmRlcmVyIGluIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAg
IChXZWJDb3JlOjpsYXN0UmVuZGVyZXJPZkluc2VydGlvblBvaW50KToKKyAgICAgICAgICBSZXR1
cm5zIHRoZSBsYXN0IHJlbmRlcmVyIGluIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgIChX
ZWJDb3JlOjpmaXJzdFJlbmRlcmVyT2YpOgorICAgICAgICAgIFJldHVybnMgdGhlIGZpcnN0IHJl
bmRlcmVyIG9mIHRoZSBzcGVjaWZpYyBub2RlLgorICAgICAgICAoV2ViQ29yZTo6bGFzdFJlbmRl
cmVyT2YpOgorICAgICAgICAgIFJldHVybnMgdGhlIGxhc3QgcmVuZGVyZXIgb2YgdGhlIHNwZWNp
ZmljIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJl
bmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91
c1JlbmRlcmVyKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jv
b3Q6Omhhc0luc2VydGlvblBvaW50KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OmRpc3RyaWJ1dGVkVG8pOgorICAgICAgICAgIFJldHVybnMgSFRNTFNoYWRv
d0VsZW1lbnQgdG8gd2hpY2ggdGhpcyBzaGFkb3cgcm9vdCBpcyBkaXN0cmlidXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OnNldERpc3RyaWJ1dGVkVG8pOgorICAgICAgICAqIGRv
bS9TaGFkb3dUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGlv
blBvaW50Rm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6OmNoaWxkTmVlZHNTdHls
ZVJlY2FsYyk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dUcmVlOjpuZWVkc1N0eWxlUmVjYWxj
KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Om5lZWRzUmVhdHRhY2hIb3N0Q2hpbGRy
ZW5BbmRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aG9zdENoaWxkcmVu
Q2hhbmdlZCk6CisgICAgICAgICogZG9tL1NoYWRvd1RyZWUuaDoKKyAgICAgICAgKFNoYWRvd1Ry
ZWUpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OmRldGFjaCk6CisgICAgICAgICogaHRt
bC9zaGFkb3cvSFRNTENvbnRlbnRTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Q29udGVudFNlbGVjdG9yOjpzZWxlY3QpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250
ZW50U2VsZWN0b3IuaDoKKyAgICAgICAgKEhUTUxDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAq
IGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTaGFkb3dFbGVtZW50OjpIVE1MU2hhZG93RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MU2hhZG93RWxlbWVudDo6YXR0YWNoKToKKyAgICAgICAgICBJZiB0aGUgZWxlbWVudCBpcyBp
biB0aGUgb2xkZXN0IHNoYWRvdyB0cmVlLCBpdCB3aWxsIHNlbGVjdCBlbGVtZW50cyBmcm9tIGxp
Z2h0IGNoaWxkcmVuLgorICAgICAgICAgIElmIHRoZSBlbGVtZW50IGlzIGluIG5vbi1vbGRlc3Qg
c2hhZG93IHRyZWUsIGl0IHdpbGwgc2VsZWN0IGEgb2xkZXIgc2hhZG93IHJvb3QgaWYgaXQgaXMg
bm90IGFzc2lnbmVkCisgICAgICAgICAgdG8gYW55IDxzaGFkb3c+IGVsZW1lbnQgeWV0LgorICAg
ICAgICAgIE90aGVyd2lzZSwgaXQgd29uJ3Qgc2VsZWN0IGFueXRoaW5nLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2hhZG93RWxlbWVudDo6ZGV0YWNoKToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oOgorICAgICAgICAoSFRNTFNo
YWRvd0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OmRpc3Ry
aWJ1dGVkRnJvbSk6CisgICAgICAgICAgUmV0dXJucyBTaGFkb3dSb290IHdoaWNoIGlzIGRpc3Ry
aWJ1dGVkIHRvIHRoaXMgPHNoYWRvdz4gZWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OnNldERpc3RyaWJ1dGVkRnJvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjp0b0hUTUxTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2lu
dCk6CisKIDIwMTItMDItMjkgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3Jn
PiAKIAogICAgICAgICBGYWxsYmFjayBlbGVtZW50cyBpbiBub24teW91bmdlc3Qgc2hhZG93IHRy
ZWUgc2hvdWxkIG5vdCBiZSByZW5kZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwCmluZGV4IDAxZGE4NmQ1NDdlODk1NTMwMTZhY2NkYjhhZWRkYWYxOGQw
MjJhYzguLjc1ZTA0OGM0YjQ4NTlkZjkxZjlhYzIxODJiNjIwOThhZjk0ZjgxOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjksNiArMjksOCBA
QAogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCisjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3Jl
ZW4uaCIKQEAgLTQzLDYgKzQ1LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKKworc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJl
ck9mKE5vZGUqKTsKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKE5vZGUqKTsK
Kworc3RhdGljIGlubGluZSBib29sIHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbihJbnNlcnRpb25Q
b2ludCogaW5zZXJ0aW9uUG9pbnQpCit7CisgICAgaWYgKGluc2VydGlvblBvaW50LT5pc0NvbnRl
bnRFbGVtZW50KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgU2hhZG93Um9vdCogcm9v
dCA9IHRvU2hhZG93Um9vdChpbnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpOwor
ICAgIGlmICghcm9vdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHJvb3Qt
PmlzT2xkZXN0KCk7Cit9CisKIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29u
dGV4dChOb2RlKiBub2RlKQogICAgIDogbV9waGFzZShBdHRhY2hpbmdOb3RJblRyZWUpCiAgICAg
LCBtX25vZGUobm9kZSkKQEAgLTU2LDMwICs3NSwyNiBAQCBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
Tm9kZVJlbmRlcmluZ0NvbnRleHQoTm9kZSogbm9kZSkKICAgICBpZiAoIXBhcmVudCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkpIHsKLSAgICAgICAg
Ly8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUgbm9uLXlvdW5n
ZXN0IHNoYWRvdyB3b24ndCBiZSByZW5kZXJlZC4KLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvZF9idWdzLmNnaT9pZD03ODU5NgotICAgICAgICBpZiAodG9TaGFkb3dSb290
KHBhcmVudCktPmlzWW91bmdlc3QoKSkKLSAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdT
aGFkb3dDaGlsZDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGlu
Z05vdERpc3RyaWJ1dGVkOworICAgIGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpICYmIHRvU2hh
ZG93Um9vdChwYXJlbnQpLT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgbV9waGFzZSA9IEF0dGFj
aGluZ1NoYWRvd0NoaWxkOwogICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHls
ZSA9IHBhcmVudC0+c2hhZG93SG9zdCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgpKSB7Ci0gICAgICAgIGlmICh0b0VsZW1lbnQocGFy
ZW50KS0+aGFzU2hhZG93Um9vdCgpKSB7CisgICAgaWYgKHBhcmVudC0+aXNFbGVtZW50Tm9kZSgp
IHx8IHBhcmVudC0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKHBhcmVudC0+aXNFbGVt
ZW50Tm9kZSgpICYmIHRvRWxlbWVudChwYXJlbnQpLT5oYXNTaGFkb3dSb290KCkpCiAgICAgICAg
ICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUgPSB0b0VsZW1lbnQocGFyZW50KS0+c2hhZG93
VHJlZSgpOwotICAgICAgICAgICAgaWYgKChtX2luc2VydGlvblBvaW50ID0gbV92aXN1YWxQYXJl
bnRTaGFkb3dUcmVlLT5pbnNlcnRpb25Qb2ludEZvcihtX25vZGUpKQotICAgICAgICAgICAgICAg
ICYmIG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZS0+aXNTZWxlY3RvckFjdGl2ZSgpKSB7Ci0KLSAg
ICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNv
IHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAg
ICAgICAgICAgICAgICBpZiAodG9TaGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1Ry
ZWVSb290Tm9kZSgpKS0+aXNZb3VuZ2VzdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fcGhh
c2UgPSBBdHRhY2hpbmdEaXN0cmlidXRlZDsKLSAgICAgICAgICAgICAgICAgICAgbV9wYXJlbnRO
b2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlv
blBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKLSAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocGFyZW50
LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZSA9
IHRvU2hhZG93Um9vdChwYXJlbnQpLT50cmVlKCk7CisKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFy
ZW50U2hhZG93VHJlZSkgeworICAgICAgICAgICAgbV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFs
UGFyZW50U2hhZG93VHJlZS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKTsKKyAgICAgICAgICAg
IFNoYWRvd1Jvb3QqIHNoYWRvd1RyZWVSb290ID0gbV9pbnNlcnRpb25Qb2ludCA/IHRvU2hhZG93
Um9vdChtX2luc2VydGlvblBvaW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSkgOiAwOworCisgICAg
ICAgICAgICBpZiAoc2hhZG93VHJlZVJvb3QgJiYgKHNoYWRvd1RyZWVSb290LT5pc1lvdW5nZXN0
KCkgfHwgc2hhZG93VHJlZVJvb3QtPmRpc3RyaWJ1dGVkVG8oKSkpIHsKKyAgICAgICAgICAgICAg
ICBtX3BoYXNlID0gQXR0YWNoaW5nRGlzdHJpYnV0ZWQ7CisgICAgICAgICAgICAgICAgbV9wYXJl
bnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChtX2luc2Vy
dGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRh
Y2hpbmdOb3REaXN0cmlidXRlZDsKQEAgLTg3LDE5ICsxMDIsMjggQEAgTm9kZVJlbmRlcmluZ0Nv
bnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNTaGFkb3dCb3VuZGFyeShwYXJlbnQpKSB7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNv
IHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWdzLmNnaT9pZD03ODU5NgotICAgICAg
ICAgICAgaWYgKCF0b1NoYWRvd1Jvb3QocGFyZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSktPmlz
WW91bmdlc3QoKSkgeworICAgICAgICBpZiAoaXNTaGFkb3dCb3VuZGFyeShwYXJlbnQpKSAgewor
ICAgICAgICAgICAgU2hhZG93Um9vdCogc2hhZG93VHJlZVJvb3QgPSB0b1NoYWRvd1Jvb3QocGFy
ZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSk7CisgICAgICAgICAgICBBU1NFUlQoc2hhZG93VHJl
ZVJvb3QpOworICAgICAgICAgICAgaWYgKCEoc2hhZG93VHJlZVJvb3QtPmlzWW91bmdlc3QoKSB8
fCBzaGFkb3dUcmVlUm9vdC0+ZGlzdHJpYnV0ZWRUbygpKSkgewogICAgICAgICAgICAgICAgIG1f
cGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZDsKICAgICAgICAgICAgICAgICBtX3BhcmVu
dE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudDsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBh
cmVudCktPmhhc1NlbGVjdGlvbigpKQotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hp
bmdOb3RGYWxsYmFja2VkOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fcGhh
c2UgPSBBdHRhY2hpbmdGYWxsYmFja2VkOworICAgICAgICAgICAgaWYgKHNlbGVjdHNGcm9tTGln
aHRDaGlsZHJlbih0b0luc2VydGlvblBvaW50KHBhcmVudCkpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHRvSW5zZXJ0aW9uUG9pbnQocGFyZW50KS0+aGFzU2VsZWN0aW9uKCkpCisgICAgICAgICAg
ICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RGYWxsYmFja2VkOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0ZhbGxiYWNr
ZWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChwYXJlbnQt
Pmhhc1RhZ05hbWUoc2hhZG93VGFnKSk7CisgICAgICAgICAgICAgICAgU2hhZG93Um9vdCogcm9v
dCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocGFyZW50KS0+ZGlzdHJpYnV0ZWRGcm9tKCk7CisgICAg
ICAgICAgICAgICAgaWYgKHJvb3QgJiYgcm9vdC0+Zmlyc3RDaGlsZCgpKQorICAgICAgICAgICAg
ICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RmFsbGJhY2tlZDsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdGYWxsYmFja2Vk
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5k
U3R5bGUgPSBOb2RlUmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLnBhcmVudE5vZGVGb3JSZW5kZXJp
bmdBbmRTdHlsZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMzcsMzUg
KzE2MSw1MyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6
cmVsZWFzZVN0eWxlKCkKIAogc3RhdGljIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyT2YoSW5z
ZXJ0aW9uUG9pbnQqIHBhcmVudCwgTm9kZSogY3VycmVudCkKIHsKLSAgICBIVE1MQ29udGVudFNl
bGVjdGlvbiogY3VycmVudFNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maW5kKGN1
cnJlbnQpOwotICAgIGlmICghY3VycmVudFNlbGVjdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgQVNTRVJUKGN1cnJlbnQpOwogCi0gICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2Vs
ZWN0aW9uID0gY3VycmVudFNlbGVjdGlvbi0+bmV4dCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9
IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZXR1cm4gcmVu
ZGVyZXI7CisgICAgaWYgKHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbihwYXJlbnQpKSB7CisgICAg
ICAgIEhUTUxDb250ZW50U2VsZWN0aW9uKiBjdXJyZW50U2VsZWN0aW9uID0gcGFyZW50LT5zZWxl
Y3Rpb25zKCktPmZpbmQoY3VycmVudCk7CisgICAgICAgIGlmICghY3VycmVudFNlbGVjdGlvbikK
KyAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rp
b24qIHNlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb24tPm5leHQoKTsgc2VsZWN0aW9uOyBzZWxl
Y3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKICAg
ICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQocGFyZW50LT5oYXNUYWdOYW1lKHNoYWRv
d1RhZykpOworICAgIHJldHVybiBmaXJzdFJlbmRlcmVyT2YoY3VycmVudC0+bmV4dFNpYmxpbmco
KSk7CiB9CiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIHByZXZpb3VzUmVuZGVyZXJPZihJbnNlcnRp
b25Qb2ludCogcGFyZW50LCBOb2RlKiBjdXJyZW50KQogewotICAgIFJlbmRlck9iamVjdCogbGFz
dFJlbmRlcmVyID0gMDsKKyAgICBBU1NFUlQoY3VycmVudCk7CisKKyAgICBpZiAoc2VsZWN0c0Zy
b21MaWdodENoaWxkcmVuKHBhcmVudCkpIHsKKyAgICAgICAgUmVuZGVyT2JqZWN0KiBsYXN0UmVu
ZGVyZXIgPSAwOworCisgICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlv
biA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9
IHNlbGVjdGlvbi0+bmV4dCgpKSB7CisgICAgICAgICAgICBpZiAoc2VsZWN0aW9uLT5ub2RlKCkg
PT0gY3VycmVudCkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAg
ICAgICAgICAgICAgbGFzdFJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgICAgIH0KIAotICAgIGZv
ciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygp
LT5maXJzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7Ci0g
ICAgICAgIGlmIChzZWxlY3Rpb24tPm5vZGUoKSA9PSBjdXJyZW50KQotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2Rl
KCktPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBsYXN0UmVuZGVyZXIgPSByZW5kZXJlcjsKKyAg
ICAgICAgcmV0dXJuIGxhc3RSZW5kZXJlcjsKICAgICB9CiAKLSAgICByZXR1cm4gbGFzdFJlbmRl
cmVyOworICAgIEFTU0VSVChwYXJlbnQtPmhhc1RhZ05hbWUoc2hhZG93VGFnKSk7CisgICAgcmV0
dXJuIGxhc3RSZW5kZXJlck9mKGN1cnJlbnQtPnByZXZpb3VzU2libGluZygpKTsKIH0KIAotc3Rh
dGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50KiBwYXJlbnQp
CitzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNl
cnRpb25Qb2ludCogcGFyZW50KQogewotICAgIGlmIChwYXJlbnQtPmhhc1NlbGVjdGlvbigpKSB7
CisgICAgaWYgKHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbihwYXJlbnQpKSB7CisgICAgICAgIGlm
ICghcGFyZW50LT5oYXNTZWxlY3Rpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBmaXJzdFJlbmRl
cmVyT2YocGFyZW50LT5maXJzdENoaWxkKCkpOworCisKICAgICAgICAgZm9yIChIVE1MQ29udGVu
dFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZpcnN0KCk7IHNl
bGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKICAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOwpAQCAtMTc0LDIxICsyMTYsODQgQEAg
c3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50KiBwYXJl
bnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBOb2RlUmVuZGVyaW5n
Q29udGV4dChwYXJlbnQpLm5leHRSZW5kZXJlcigpOworICAgIEFTU0VSVChwYXJlbnQtPmhhc1Rh
Z05hbWUoc2hhZG93VGFnKSk7CisKKyAgICBTaGFkb3dSb290KiByb290ID0gdG9IVE1MU2hhZG93
RWxlbWVudChwYXJlbnQpLT5kaXN0cmlidXRlZEZyb20oKTsKKyAgICBpZiAoIXJvb3QgfHwgIXJv
b3QtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgcmV0dXJuIGZpcnN0UmVuZGVyZXJPZihwYXJlbnQt
PmZpcnN0Q2hpbGQoKSk7CisKKyAgICBmb3IgKE5vZGUqIGNoaWxkID0gcm9vdC0+Zmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGNoaWxkLT5yZW5kZXJlcigpKQorICAgICAgICAgICAg
cmV0dXJuIHJlbmRlcmVyOworICAgIH0KKworICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgUmVu
ZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXJPZihJbnNlcnRpb25Qb2ludCogcGFyZW50KQorc3RhdGlj
IFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2lu
dCogcGFyZW50KQogewotICAgIGlmIChwYXJlbnQtPmhhc1NlbGVjdGlvbigpKSB7Ci0gICAgICAg
IGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9u
cygpLT5sYXN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5wcmV2aW91cygp
KSB7Ci0gICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+
bm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAg
ICBpZiAoc2VsZWN0c0Zyb21MaWdodENoaWxkcmVuKHBhcmVudCkpIHsKKyAgICAgICAgaWYgKHBh
cmVudC0+aGFzU2VsZWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxl
Y3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5sYXN0KCk7IHNlbGVjdGlv
bjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5wcmV2aW91cygpKSB7CisgICAgICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICAgICAgfQor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxhc3RSZW5kZXJlck9mKHBhcmVu
dC0+bGFzdENoaWxkKCkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KHBhcmVudCkucHJldmlvdXNSZW5kZXJl
cigpOworICAgIEFTU0VSVChwYXJlbnQtPmhhc1RhZ05hbWUoc2hhZG93VGFnKSk7CisKKyAgICBp
ZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvSFRNTFNoYWRvd0VsZW1lbnQocGFyZW50KS0+ZGlzdHJp
YnV0ZWRGcm9tKCkpIHsKKyAgICAgICAgZm9yIChOb2RlKiBjaGlsZCA9IHJvb3QtPmxhc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlvdXNTaWJsaW5nKCkpIHsKKyAgICAgICAg
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY2hpbGQtPnJlbmRlcmVyKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAg
ICAgIHJldHVybiBsYXN0UmVuZGVyZXJPZihwYXJlbnQtPmxhc3RDaGlsZCgpKTsKKworICAgIHJl
dHVybiAwOworfQorCitzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2YoTm9kZSog
bm9kZSkKK3sKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsK
KyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIC8vIERvIG5vdCBy
ZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10aHJl
YWQuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9kZS0+
cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkgJiYgbm9kZS0+c2hh
ZG93VHJlZVJvb3ROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZpcnN0
ID0gZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQodG9JbnNlcnRpb25Qb2ludChub2RlKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKE5vZGUq
IG5vZGUpCit7CisgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmco
KSkgeworICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgLy8gRG8g
bm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZlcmVudCBmbG93
LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpICYmICFu
b2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRlcmVyKCk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSAmJiBub2Rl
LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
bGFzdCA9IGxhc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQodG9JbnNlcnRpb25Qb2ludChub2Rl
KSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gMDsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4
dFJlbmRlcmVyKCkgY29uc3QKQEAgLTIxMSwyMSArMzE2LDcgQEAgUmVuZGVyT2JqZWN0KiBOb2Rl
UmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICBpZiAobV9ub2RlLT5w
YXJlbnRPckhvc3ROb2RlKCkgJiYgIW1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpLT5hdHRhY2hl
ZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9IG1fbm9kZS0+
bmV4dFNpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5vdCByZXR1cm4g
ZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10aHJlYWQuCi0g
ICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9kZS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKLSAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIGZpcnN0ID0gZmlyc3RSZW5kZXJlck9mKHRvSW5zZXJ0aW9uUG9pbnQo
bm9kZSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiAwOworICAgIHJldHVybiBmaXJzdFJlbmRlcmVyT2YobV9ub2RlLT5uZXh0
U2libGluZygpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6cHJl
dmlvdXNSZW5kZXJlcigpIGNvbnN0CkBAIC0yNDYsMjAgKzMzNyw3IEBAIFJlbmRlck9iamVjdCog
Tm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAogCiAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9pZGFuY2UgYXMgbmV4dFJl
bmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQgYWRkaW5nIGl0LCBzZXZl
cmFsIHRlc3RzIGZhaWxlZC4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX25vZGUtPnByZXZpb3Vz
U2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpIHsKLSAgICAg
ICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5vdCByZXR1cm4g
ZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10aHJlYWQuCi0g
ICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9kZS0+cmVuZGVy
ZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwotICAgICAgICB9
Ci0gICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7Ci0gICAgICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVyT2YodG9JbnNlcnRpb25Qb2ludChub2Rl
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gbGFzdFJlbmRlcmVyT2YobV9ub2RlLT5wcmV2aW91c1Np
YmxpbmcoKSk7CiB9CiAKIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnBhcmVu
dFJlbmRlcmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dS
b290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCBmNzZjYjIw
OTIzZTM3MmFlYzBjMmNlNjdiNjlhMzMwMTc5MmVlYjczLi41NTk5ZWM3NzMyOGUyMDc4Y2VkOGE2
N2FhZTg1ZTA3NjU4MTg3ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01MSw2
ICs1MSw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
ICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fYXBwbHlBdXRob3JTaGVldHMo
ZmFsc2UpCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBtX3NoYWRvd0VsZW1lbnREaXN0
cmlidXRlZFRvKDApCisjZW5kaWYKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKaW5kZXggNjRkZGZhODJmOTUyYjI1MjBiZGUyMGYzYmYxODZjMTFm
MTI2Y2JkYi4uODc3NTdkNzM4ZjNlNTViMGRkNTc0ZTU5ZjMyMWRlYjcxYjRlNjhmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwogY2xhc3MgSFRNTENv
bnRlbnRTZWxlY3RvcjsKK2NsYXNzIEhUTUxTaGFkb3dFbGVtZW50OwogY2xhc3MgSW5zZXJ0aW9u
UG9pbnQ7CiBjbGFzcyBTaGFkb3dUcmVlOwogCkBAIC04MSw2ICs4MiwxMSBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGhhc0luc2VydGlvblBvaW50KCkgY29uc3Q7CiAKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICBIVE1MU2hhZG93RWxlbWVudCogZGlzdHJpYnV0ZWRUbygpIGNvbnN0OworICAg
IHZvaWQgc2V0RGlzdHJpYnV0ZWRUbyhIVE1MU2hhZG93RWxlbWVudCopOworI2VuZGlmCisKIHBy
aXZhdGU6CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflNoYWRvd1Jv
b3QoKTsKQEAgLTkyLDggKzk4LDI0IEBAIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdCogbV9wcmV2
OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAgICBib29sIG1fYXBwbHlBdXRob3JTaGVldHMg
OiAxOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIEhUTUxTaGFkb3dFbGVtZW50KiBtX3No
YWRvd0VsZW1lbnREaXN0cmlidXRlZFRvOworI2VuZGlmCiB9OwogCisjaWYgRU5BQkxFKFNIQURP
V19ET00pCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIFNoYWRvd1Jvb3Q6OmRpc3RyaWJ1dGVk
VG8oKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYWRvd0VsZW1lbnREaXN0cmlidXRlZFRvOwor
fQorCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpzZXREaXN0cmlidXRlZFRvKEhUTUxTaGFkb3dF
bGVtZW50KiBzaGFkb3dFbGVtZW50KQoreworICAgIEFTU0VSVCghbV9zaGFkb3dFbGVtZW50RGlz
dHJpYnV0ZWRUbyB8fCAhc2hhZG93RWxlbWVudCk7CisgICAgbV9zaGFkb3dFbGVtZW50RGlzdHJp
YnV0ZWRUbyA9IHNoYWRvd0VsZW1lbnQ7Cit9CisjZW5kaWYKKwogaW5saW5lIGNvbnN0IFNoYWRv
d1Jvb3QqIHRvU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghbm9k
ZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5k
ZXggMmNjZTk5N2NhNjE3MWNhZDBkMTEwNzBmYjk0MjJmMDY0Yzk4MTU0Yi4uMjk0YWU0ZThlN2Vh
NTQxNzQ0ODY0ZmFjYjhmNTZiNWRmMTRiNjc5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJIVE1M
U2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCkBAIC0xOTcsNiArMTk4LDE1IEBAIHZvaWQgU2hhZG93VHJlZTo6ZGV0YWNoSG9zdChFbGVt
ZW50KiBob3N0KQogCiBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRG
b3IoTm9kZSogbm9kZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5wYXJlbnRO
b2RlKCkpOworCisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsK
KyAgICAgICAgaWYgKEhUTUxTaGFkb3dFbGVtZW50KiBzaGFkb3dFbGVtZW50ID0gdG9TaGFkb3dS
b290KG5vZGUtPnBhcmVudE5vZGUoKSktPmRpc3RyaWJ1dGVkVG8oKSkKKyAgICAgICAgICAgIHJl
dHVybiBzaGFkb3dFbGVtZW50OworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIGlm
ICghbV9zZWxlY3RvcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rp
b24qIGZvdW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKQEAgLTIwNSwxMSArMjE1LDYg
QEAgSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKE5vZGUqIG5v
ZGUpIGNvbnN0CiAgICAgcmV0dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOwogfQogCi1ib29s
IFNoYWRvd1RyZWU6OmlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3Nl
bGVjdG9yICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKTsKLX0KLQogdm9pZCBTaGFkb3dU
cmVlOjpyZWF0dGFjaCgpCiB7CiAgICAgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApp
bmRleCAwZWZiZGIxMzY3NDMwM2ZmNjdhNzFlMTBlY2M1NTFhNWE0NzU0ODRmLi41NGM0MWJiZTQx
OWY1YzNiMTJlNzg2ODJiNmQ0OTIyNWQ0NmY5YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgK
QEAgLTgyLDggKzgyLDYgQEAgcHVibGljOgogICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVj
dG9yKCkgY29uc3Q7CiAgICAgSFRNTENvbnRlbnRTZWxlY3RvciogZW5zdXJlU2VsZWN0b3IoKTsK
IAotICAgIGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIEVs
ZW1lbnQqIGhvc3QoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
SFRNTFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGNiMDFjZDIxZmUwZTAwOWE1ZThlMDAzYWI5Yjg0
YjY4ZmRkNDI5MzAuLjBmM2Q5MmI2NWY0YTIxZDc1MDI3MTA4N2Y0YzBiMGFjODM0ZTgzYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAK
QEAgLTI1LDcgKzI1LDcgQEAKICAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQogICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUI1kgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgpAQCAtMzUsMTMgKzM1LDE3IEBACiAjaW5jbHVkZSAiSFRNTFNoYWRvd0Vs
ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3Qu
aCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKIGlubGlu
ZSBIVE1MU2hhZG93RWxlbWVudDo6SFRNTFNoYWRvd0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpCisgICAgOiBJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1bWVudCkKKyAg
ICAsIGRpc3RyaWJ1dGVkU2hhZG93Um9vdCgwKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKEhU
TUxOYW1lczo6c2hhZG93VGFnKSk7CiB9CkBAIC01NSw2ICs1OSw2MiBAQCBIVE1MU2hhZG93RWxl
bWVudDo6fkhUTUxTaGFkb3dFbGVtZW50KCkKIHsKIH0KIAordm9pZCBIVE1MU2hhZG93RWxlbWVu
dDo6YXR0YWNoKCkKK3sKKyAgICBTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRv
d1RyZWVSb290Tm9kZSgpKTsKKyAgICBib29sIHNoYWRvd0Rpc3RyaWJ1dGlvbiA9IGZhbHNlOwor
CisgICAgaWYgKHJvb3QpIHsKKyAgICAgICAgLy8gV2hlbiByb290IGlzIHRoZSBvbGRlc3Qgc2hh
ZG93IHJvb3QsIDxzaGFkb3c+IHNob3VsZCBiZWhhdmUgbGlrZSA8Y29udGVudD4KKyAgICAgICAg
aWYgKHJvb3QtPmlzT2xkZXN0KCkpIHsKKyAgICAgICAgICAgIEhUTUxDb250ZW50U2VsZWN0b3Iq
IHNlbGVjdG9yID0gcm9vdC0+dHJlZSgpLT5lbnN1cmVTZWxlY3RvcigpOworICAgICAgICAgICAg
c2VsZWN0b3ItPnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMpOworICAgICAgICAgICAgc2VsZWN0b3It
PnNlbGVjdCh0aGlzLCAmbV9zZWxlY3Rpb25zKTsKKyAgICAgICAgfSBlbHNlIGlmICghcm9vdC0+
b2xkZXJTaGFkb3dSb290KCktPmRpc3RyaWJ1dGVkVG8oKSkgeworICAgICAgICAgICAgc2hhZG93
RGlzdHJpYnV0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHNldERpc3RyaWJ1dGVkRnJvbShyb290
LT5vbGRlclNoYWRvd1Jvb3QoKSk7CisgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3Qo
KS0+c2V0RGlzdHJpYnV0ZWRUbyh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEluc2Vy
dGlvblBvaW50OjphdHRhY2goKTsKKworICAgIGlmIChyb290KSB7CisgICAgICAgIGlmIChyb290
LT5pc09sZGVzdCgpKSB7CisgICAgICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBz
ZWxlY3Rpb24gPSBtX3NlbGVjdGlvbnMuZmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBz
ZWxlY3Rpb24tPm5leHQoKSkKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb24tPm5vZGUoKS0+YXR0
YWNoKCk7CisgICAgICAgIH0gZWxzZSBpZiAoc2hhZG93RGlzdHJpYnV0aW9uKSB7CisgICAgICAg
ICAgICBBU1NFUlQoIXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5hdHRhY2hlZCgpKTsKKyAgICAg
ICAgICAgIHJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5hdHRhY2goKTsKKyAgICAgICAgfQorICAg
IH0KK30KKwordm9pZCBIVE1MU2hhZG93RWxlbWVudDo6ZGV0YWNoKCkKK3sKKyAgICBpZiAoU2hh
ZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKKyAg
ICAgICAgaWYgKHJvb3QtPmlzT2xkZXN0KCkpIHsKKyAgICAgICAgICAgIGlmIChIVE1MQ29udGVu
dFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnRyZWUoKS0+c2VsZWN0b3IoKSkKKyAgICAgICAg
ICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QoJm1fc2VsZWN0aW9ucyk7CisgICAgICAgIH0gZWxz
ZSBpZiAoU2hhZG93Um9vdCogZGlzdHJpYnV0ZWRTaGFkb3dSb290ID0gZGlzdHJpYnV0ZWRGcm9t
KCkpIHsKKyAgICAgICAgICAgIGRpc3RyaWJ1dGVkU2hhZG93Um9vdC0+c2V0RGlzdHJpYnV0ZWRU
bygwKTsKKyAgICAgICAgICAgIHNldERpc3RyaWJ1dGVkRnJvbSgwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIC8vIFdoZW4gc2hhZG93IGVsZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNo
b3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3VsYXRlIHNlbGVjdG9yIGZvcgorICAgICAgICAv
LyBvdGhlciBpbnNlcnRpb24gcG9pbnRzLgorICAgICAgICByb290LT50cmVlKCktPnNldE5lZWRz
UmVhdHRhY2hIb3N0Q2hpbGRyZW5BbmRTaGFkb3coKTsKKyAgICB9CisKKyAgICBBU1NFUlQobV9z
ZWxlY3Rpb25zLmlzRW1wdHkoKSk7CisgICAgSW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCgpOworfQor
Citjb25zdCBBdG9taWNTdHJpbmcmIEhUTUxTaGFkb3dFbGVtZW50OjpzZWxlY3QoKSBjb25zdAor
eworICAgICByZXR1cm4gbnVsbEF0b207Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKaW5kZXggMTUxYzdhMmFiYmQ2YzUwNTc4OTQzZmQ2ZGNj
ZmZmMDVjOWM5ZmZmNy4uODc1NTk4YTM4ZTU1M2NhNDgzNWZkMjlkMGQ2OWY5NzdjNDE2MzQwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCkBA
IC0zMywyMSArMzMsNDkgQEAKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogCi0jaW5jbHVkZSAi
SFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSFRNTFNoYWRvd0Vs
ZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xhc3MgSFRNTFNoYWRvd0VsZW1lbnQgOiBw
dWJsaWMgSW5zZXJ0aW9uUG9pbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhU
TUxTaGFkb3dFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
CiAKICAgICB2aXJ0dWFsIH5IVE1MU2hhZG93RWxlbWVudCgpOwogCisgICAgdmlydHVhbCB2b2lk
IGF0dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKworICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgc2VsZWN0KCkgY29uc3Q7CisKKyAgICBTaGFkb3dSb290KiBkaXN0cmlidXRlZEZy
b20oKSBjb25zdDsKKyAgICB2b2lkIHNldERpc3RyaWJ1dGVkRnJvbShTaGFkb3dSb290Kik7CisK
IHByaXZhdGU6CiAgICAgSFRNTFNoYWRvd0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAgICAgdmlydHVhbCBib29sIGlzU2hhZG93RWxlbWVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKworICAgIFNoYWRvd1Jvb3QqIGRpc3RyaWJ1dGVkU2hhZG93Um9vdDsKIH07
CiAKK2lubGluZSBTaGFkb3dSb290KiBIVE1MU2hhZG93RWxlbWVudDo6ZGlzdHJpYnV0ZWRGcm9t
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZGlzdHJpYnV0ZWRTaGFkb3dSb290OworfQorCitpbmxp
bmUgdm9pZCBIVE1MU2hhZG93RWxlbWVudDo6c2V0RGlzdHJpYnV0ZWRGcm9tKFNoYWRvd1Jvb3Qq
IHNoYWRvd1Jvb3QpCit7CisgICAgQVNTRVJUKCFkaXN0cmlidXRlZFNoYWRvd1Jvb3QgfHwgIXNo
YWRvd1Jvb3QpOworICAgIGRpc3RyaWJ1dGVkU2hhZG93Um9vdCA9IHNoYWRvd1Jvb3Q7Cit9CisK
K2lubGluZSBIVE1MU2hhZG93RWxlbWVudCogdG9IVE1MU2hhZG93RWxlbWVudChOb2RlKiBub2Rl
KQoreworICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2hh
ZG93VGFnKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxTaGFkb3dFbGVtZW50Kj4obm9k
ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTSEFE
T1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5k
ZXggYzRjMWEyZDVjZDc5NjA4OTVlMDRkMmJmNjM2ZmU5YjZiZmIxMzJmZi4uYzdlNWZiYzkxNjEx
YjNlYjUwYTA3YTlkZjQ5ZTA0MDMyNzBmNzQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRlICJIVE1M
Q29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01NiwxMCArNTcsMTIgQEAgcHJvdGVjdGVkOgogCiBpbmxpbmUgYm9vbCBpc0luc2Vy
dGlvblBvaW50KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8gRklYTUU6IDxzaGFkb3c+IHNob3VsZCBh
bHNvIGJlIEluc2VydGlvblBvaW50LgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODU5NgogICAgIGlmICghbm9kZSB8fCBub2RlLT5pc0NvbnRlbnRFbGVt
ZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2hhZG93VGFnKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKIAogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ZWMzMzFk
M2IwYzRjNzMwMzk4ZGI0MWUzNjhiMTlmODRjODZlNjk2Li5lMDcwMmUyMzNjNTljMGZkY2JhZDgx
ZjcxYWRlMmRlMDRmZWM5MjM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDItMjggIFNo
aW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIDxzaGFkb3c+
IHNob3VsZCBiZSByZW5kZXJlZCBjb3JyZWN0bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRy
aXZlci5qczoKKyAgICAgICAgKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KToKKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvY29udGVudC1lbGVtZW50LW1vdmUuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRl
cmluZy1tdWx0aXBsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAg
ICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tp
cHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoKKwogMjAxMi0wMi0yOSAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+IAogCiAgICAgICAgIEZhbGxiYWNr
IGVsZW1lbnRzIGluIG5vbi15b3VuZ2VzdCBzaGFkb3cgdHJlZSBzaG91bGQgbm90IGJlIHJlbmRl
cmVkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVt
ZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YWRhYzIwZmRmM2FhZWRhNjMwMjljZjY4ZGJiODU4NzRjOTYyNTNhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50
LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorcmVuZGVy
aW5nRG91YmxlU2hhZG93Um9vdAorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdFdpdGhP
bmVTaGFkb3dFbGVtZW50CitQQVNTCityZW5kZXJpbmdUcmlwbGVTaGFkb3dSb290CitQQVNTCity
ZW5kZXJpbmdUd29TaGFkb3dSb290cworUEFTUwordGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0
aENvbnRlbnQxCitQQVNTCit0ZXN0V2l0aERvdWJsZVNoYWRvd1Jvb3RXaXRoQ29udGVudDIKK1BB
U1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMQorUEFTUworcmVu
ZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5QWRkZWQyCitQQVNTCityZW5kZXJpbmdE
b3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDMKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNo
YWRvd1Jvb3REeW5hbWljYWxseVJlbW92ZWQxCitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dS
b290RHluYW1pY2FsbHlSZW1vdmVkMgorUEFTUworcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFt
aWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ09sZGVyU2hhZG93Um9vdENvbnRlbnREeW5hbWlj
YWxseUFkZGVkCitQQVNTCityZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVk
CitQQVNTCityZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlSZW1vdmVk
CitQQVNTCitURVNUIENPTVBMRVRFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMmVkZTgxODEzMGIyZDNhNmQ3ZWRjZWMwY2NjY2NkMzljODMyNWY3Ygot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxl
bWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbApAQCAtMCwwICsxLDQ0NiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcg
ZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3Np
dGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7
CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBs
ZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gdGVhckRvd25PbmNl
KCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxz
ZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24g
cmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRp
dj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3Nw
YW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJv
b3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykp
OworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hp
bGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0
aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RXaXRoT25lU2hhZG93RWxlbWVudChjYWxsSWZE
b25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZP
UkUgMTwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+
IjsKKworICAgIC8vIE1JRCB3b24ndCBiZSByZW5kZXJlZC4KKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEn
KSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsK
KworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNh
bGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdUcmlw
bGVTaGFkb3dSb290KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9S
RSAzPC9zcGFuPjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPiIgKwor
ICAgICAgICAiPHNwYW4+TUlEPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QUZURVIgMTwvc3Bh
bj48c3Bhbj5BRlRFUiAyPC9zcGFuPjxzcGFuPkFGVEVSIDM8L3NwYW4+PC9kaXY+IjsKKworICAg
IHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisg
ICAgdmFyIHNyMyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMy5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAzJykpOworICAgIHNyMy5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IzLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMycpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElm
RG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1R3b1NoYWRv
d1Jvb3RzKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0
LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9z
cGFuPiIgKworICAgICAgICAgICAgIjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bh
bj48c3Bhbj5BRlRFUiAxPC9zcGFuPiIgKworICAgICAgICAgICAgIjxzcGFuPkZBTExCQUNLIDIt
Mjwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAg
IHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgdmFyIHNoYWRvdzIxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7
CisgICAgc2hhZG93MjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAy
LTEnKSk7CisgICAgdmFyIHNoYWRvdzIyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93
Jyk7CisgICAgc2hhZG93MjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFD
SyAyLTInKSk7CisKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZP
UkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoc2hhZG93MjEpOworICAgIHNyMi5hcHBlbmRD
aGlsZChzaGFkb3cyMik7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFp
bmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RG
dW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MShj
YWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bh
bj5NSUQgMjwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1J
RCAxPC9zcGFuPjxzcGFuPk1JRCAzPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAg
ICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQgMycsICdzcjMnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ01JRCAxJywgJ3NyMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnTUlEIDInLCAnc3IyJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHZhciBjb250ZW50MSA9IGNyZWF0ZUNvbnRlbnRX
aXRoU2VsZWN0KCcuc3IxJywgJ0NPTlRFTlQgRkFMTEJBQ0sgMScpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjb250ZW50MSk7CisgICAgc3IxLmFwcGVuZENoaWxkKHNoYWRvdzEpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc2hh
ZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMicpKTsKKyAgICB2
YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgdmFyIGNvbnRlbnQ7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNvbnRlbnQgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMics
ICdDT05URU5UIEZBTExCQUNLIDInKSk7CisgICAgY29udGVudC50aXRsZSA9ICJkZWJ1Z3N0b3Ai
OworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25l
KCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFdpdGhEb3VibGVTaGFkb3dS
b290V2l0aENvbnRlbnQyKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJF
Rk9SRSAyPC9zcGFuPjxzcGFuPk1JRCAyPC9zcGFuPjxzcGFuPk1JRCAzPC9zcGFuPjxzcGFuPk1J
RCAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+Q09OVEVO
VCBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPlNIQURPVyBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPkFG
VEVSIDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisK
KyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMycsICdzcjMnKSk7CisgICAgcm9v
dC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAxJywgJ3NyMScpKTsKKyAgICBy
b290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDInLCAnc3IyJykpOworCisg
ICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBz
aGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDEn
KSk7CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBl
bmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMScsICdDT05URU5UIEZBTExCQUNL
IDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKHNoYWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRl
bnRXaXRoU2VsZWN0KCcuc3IyJywgJ0NPTlRFTlQgRkFMTEJBQ0sgMicpKTsKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnQ09OVEVOVCBGQUxMQkFD
SyAzJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyKTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxs
SWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91Ymxl
U2hhZG93Um9vdER5bmFtaWNhbGx5QWRkZWQxKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8
ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwv
c3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKwor
ICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFs
LWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24o
cm9vdCwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzcjIg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICAgICAgY2FsbElmRG9uZSgp
OworICAgIH07fSkocm9vdCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOwor
fSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RE
eW5hbWljYWxseUFkZGVkMihjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5C
RUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+
QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9v
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNy
Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3Qp
OworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IyLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5j
dGlvbigpIHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3No
YWRvdycpOworICAgICAgICBzcjIuaW5zZXJ0QmVmb3JlKHNoYWRvdywgc3IyLmxhc3RDaGlsZCk7
CisKKyAgICAgICAgY2FsbElmRG9uZSgpCisgICAgfTt9KShzcjIsIGNhbGxJZkRvbmUpOworCisg
ICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5k
ZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDMoY2FsbElmRG9uZSkgeworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0K
KyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+
PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48
L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAg
dmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHNyMSwgY2Fs
bElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzaGFkb3cgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICAgICAgc3IxLmluc2VydEJlZm9yZShz
aGFkb3csIHNyMS5sYXN0Q2hpbGQpOworCisgICAgICAgIGNhbGxJZkRvbmUoKQorICAgIH07fSko
c3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1
bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5UmVt
b3ZlZDEoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3Nw
YW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJv
b3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykp
OworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKwor
ICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFy
IGYgPSAoZnVuY3Rpb24oc3IyLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgc3IyLnJlbW92ZUNoaWxkKHNyMi5maXJzdENoaWxkLm5leHRTaWJsaW5nKTsKKyAgICAg
ICAgY2FsbElmRG9uZSgpOworICAgIH07fSkoc3IyLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRp
bWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91
YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDIoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+
QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9v
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNy
Mi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7
CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0
aW9uKCkgeworICAgICAgICBzcjEucmVtb3ZlQ2hpbGQoc3IxLmZpcnN0Q2hpbGQubmV4dFNpYmxp
bmcpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjEsIGNhbGxJZkRvbmUpOwor
CisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiBy
ZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQor
ICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48
c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwv
ZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9v
dCwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsK
KyAgICB9O30pKHJvb3QsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30p
OworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250
ZW50RHluYW1pY2FsbHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNw
YW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIg
cm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NoYWRvdycpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IxLCBjYWxsSWZEb25lKSB7IHJldHVy
biBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMScpKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkoc3IxLCBjYWxs
SWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2go
ZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZE
b25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZP
UkUgMTwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+
IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
cm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBz
cjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3No
YWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAy
JykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5h
cHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIGNhbGxJZkRv
bmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICByb290LnJlbW92ZUNoaWxkKHJvb3Qu
Zmlyc3RDaGlsZCk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHJvb3QsIGNhbGxJ
ZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChm
dW5jdGlvbiByZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlSZW1vdmVk
KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRh
aW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxz
cGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxz
cGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAg
ICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcp
KTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisg
ICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IxLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigp
IHsKKyAgICAgICAgc3IxLnJlbW92ZUNoaWxkKHNyMS5sYXN0Q2hpbGQpOworICAgICAgICBjYWxs
SWZEb25lKCk7CisgICAgfTt9KShzcjEsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChm
LCAwKTsKK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRl
c3RGdW5jcykiPgorCis8ZGl2IGlkPSJhY3R1YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVy
Ij48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwv
ZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJp
bmctc2luZ2xlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjEw
Y2NiYjA5NDc0N2M5NTM3MWZhOTIzYjFiYTRlYzIzYjY0MjcwCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5n
bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK3JlbmRlcmluZ1NpbmdsZVNoYWRvd1Jv
b3QKK1BBU1MKK3JlbmRlcmluZ05vdEZhbGxiYWNrZWQKK1BBU1MKK3JlbmRlcmluZ0ZhbGxiYWNr
ZWQKK1BBU1MKK3JlbmRlcmluZ01peGVkT2ZGYWxsYmFja0FuZE5vbkZhbGxiYWNrCitQQVNTCity
ZW5kZXJpbmdTaGFkb3dSb290QmVmb3JlQ29udGVudAorUEFTUworcmVuZGVyaW5nU2hhZG93Um9v
dEFmdGVyQ29udGVudAorUEFTUworcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5QWRk
ZWQKK1BBU1MKK3JlbmRlcmluZ1NoYWRvd0VsZW1lbnREeW5hbWljYWxseVJlbW92ZWQKK1BBU1MK
K3JlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVkCitQQVNTCityZW5kZXJpbmdM
aWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCitURVNUIENPTVBMRVRFRAorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVu
ZGVyaW5nLXNpbmdsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGU4MDZmOTVhMTg2Yzdi
YzQ2MTgwODAzOTg1Y2YxOGI5N2QxYTMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbApAQCAt
MCwwICsxLDI0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgor
LyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICov
CisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAg
ICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBz
b2xpZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10ZXN0
LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkgewor
ICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK30K
KworZnVuY3Rpb24gdGVhckRvd25PbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNo
YWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsKKwor
dGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2luZ2xlU2hhZG93Um9vdChjYWxsSWZE
b25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9z
cGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAg
ICBzci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
c3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7
CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRl
cmluZ05vdEZhbGxiYWNrZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+
QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOwor
CisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRv
dyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAg
Y2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0Zh
bGxiYWNrZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBl
Y3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9z
cGFuPjxzcGFuPkZBTExCQUNLPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNo
YWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3Iu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7Cisg
ICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmlu
Z01peGVkT2ZGYWxsYmFja0FuZE5vbkZhbGxiYWNrKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAg
ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+RkFMTEJBQ0sg
Mjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnRkFMTEJBQ0sgMScpKTsKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdGQUxMQkFDSyAyJykpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7
CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93
Mik7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hp
bGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0
aW9uIHJlbmRlcmluZ1NoYWRvd1Jvb3RCZWZvcmVDb250ZW50KGNhbGxJZkRvbmUpIHsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9Cisg
ICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+TSAx
PC9zcGFuPjxzcGFuPkNPTlRFTlQgRkFMTEJBQ0s8L3NwYW4+PHNwYW4+TSAyPC9zcGFuPjxzcGFu
PkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93
Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZB
TExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFw
cGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNIDEnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3Nw
YW4nLCAnQ09OVEVOVCBGQUxMQkFDSycpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ00gMicpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1
bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hhZG93Um9vdEFmdGVyQ29udGVudChjYWxsSWZE
b25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9z
cGFuPjxzcGFuPk0gMTwvc3Bhbj48c3Bhbj5TSEFET1cgRkFMTEJBQ0s8L3NwYW4+PHNwYW4+TSAy
PC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnU0hBRE9XIEZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NP
TlRFTlQgRkFMTEJBQ0snKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNIDEnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ00gMicpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fj
dHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9
KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFt
aWNhbGx5QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JF
PC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAgICB2
YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIHZhciBzciA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
TUlEJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXIn
KS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKGNhbGxJZkRvbmUs
IHJvb3QsIHNyKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgICAgICBzci5hcHBlbmRDaGlsZChz
aGFkb3cpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3Qs
IHNyKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVu
Y3Rpb24gcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25l
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5l
ckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+QUZURVI8L3Nw
YW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hPVUxEIE5PVCBC
RSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzaGFkb3cnKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNy
LmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxs
SWZEb25lLCBzciwgc2hhZG93KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IucmVt
b3ZlQ2hpbGQoc2hhZG93KTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH19KShjYWxsSWZE
b25lLCBzciwgc2hhZG93KTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1
bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQo
Y2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFu
Pk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hh
ZG93JykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oY2FsbElmRG9uZSwgcm9vdCkg
eyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQnKSk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9fSkoY2FsbElm
RG9uZSwgcm9vdCk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5w
dXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQoY2Fs
bElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVy
JykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1J
RDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNoYWRvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIg
ZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgcm9vdC5yZW1vdmVDaGlsZChyb290LmZpcnN0Q2hpbGQpOworICAgICAgICBjYWxsSWZE
b25lKCk7CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3QpOworCisgICAgc2V0VGltZW91dChmLCAw
KTsKK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RG
dW5jcykiPgorCis8ZGl2IGlkPSJhY3R1YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48
L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2
PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1NraXBwZWQKaW5kZXggMGJmZmUxYmM2ZDcxZTViNTk5ZDYyZjJlMGUzMDE5YjY4Nzg2
NmQ3My4uMGI1MjBhOGJlNzFhNWRkZWZmZTc4ZjRkMTVjZmI4ZTc4NDQ4YzdlNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL1NraXBwZWQKQEAgLTIwOTIsNiArMjA5Miw4IEBAIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1qcy1hcGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVu
dC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1y
ZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jv
b3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1NraXBwZWQKaW5kZXggYWQ3MWRjMDkxY2U4OGFlZDQ1YmM4NWUwN2M3ZDg0NGU2
ZjM4NjFhNi4uZjAxZWE5YjI1ZWRiOTNhMjM2NWIwMWI3NWQ3OTAxMDA4NzI4NTI4ZSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQzNSw2ICs0MzUsOCBAQCBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlu
bmVySFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVt
ZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50
LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcu
aHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQKaW5kZXggZjU2NzM5NjNhMjk0OWM5NDZjZWE3Y2YxOTNjNDUwZDk3
MGZhOGZjZi4uN2VjNmZjZjZjNDMxOTQ5NWZkMTBjYWU2NzIzNDE1MjA2MjFkZjdhOCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0xNzMsNiArMTczLDggQEAgZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1pbm5l
ckhUTUwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVu
dC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1y
ZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jv
b3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQKaW5kZXggNGUzZDFhNWI3YTQ0N2JiZDg1MTllNDhhZDk0ZmU5YTMw
MmE1YjRmMS4uZmY2NDVmZjlhMzZkOTVlODE4ZGNiYmUwMDJlMGQ4Mjk4MDZhYjU4NiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTE0NjEsNiArMTQ2MSw4IEBAIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3Qt
aW5uZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy11bC1saS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVs
ZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1l
bnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmlu
Zy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCA5MWQ3ZDQ0YjRkY2EwZGU0MDBj
M2U5ODBkNWQ3Yjk1NGNkOTljMzRhLi43NjFmNTc0N2I1ODdkYTE0YzFjZGJkNGNkM2M4ODgwMDk2
OGFlYWUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVk
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5NzQsNiAr
MTk3NCw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
b290LWlubmVySFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwK
K2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFz
dC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211
bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBs
ZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKaW5kZXggM2E5
ZjE0NzNlM2MwMjhiMjQxZWI1NDI1NjViMWYwMzBmYzExZDYzNC4uMTQyNDczNjUyYTRlZWM1NDJi
OWFlY2JkMjgyMmQxOTU5ZjdiZmIyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQKQEAgLTEw
NzIsNiArMTA3Miw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy11bC1saS5o
dG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1s
CitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVs
dGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129658</attachid>
            <date>2012-03-01 01:02:54 -0800</date>
            <delta_ts>2012-03-01 01:15:40 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-78596-20120301180252.patch</filename>
            <type>text/plain</type>
            <size>59364</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk5NDM5Y2U1ODRkNjkz
ZTQ1MTQyMzY2ZTc0MWQwNWM2ZTdjMGMxOS4uYjdjY2VkMTRiZWQ5ZGMyODdiYTkwNTE1MjAxZDBh
YjRhN2QyNDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTAxICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBz
aG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIDxzaGFkb3c+IGVsZW1lbnQg
cmVuZGVyaW5nLgorCisgICAgICAgIFdoZW4gYXR0YWNoaW5nIDxzaGFkb3c+IGVsZW1lbnQsIGl0
IGNhbGN1bGF0ZXMgdGhlIGFzc2lnbmluZyBzaGFkb3cgcm9vdC4gSXQgaXMgYmFzaWNhbGx5Cisg
ICAgICAgIHRoZSBvbGRlciBzaGFkb3cgZWxlbWVudCwgYnV0IGlmIGl0IGlzIGFzc2lnbmVkIHRv
IGFub3RoZXIgPHNoYWRvdz4gZWxlbWVudCwgPHNoYWRvdz4gd29uJ3QKKyAgICAgICAgaGFzIGFu
eSBhc3NpZ25pbmcgc2hhZG93IHJvb3QuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQg
c3VwcG9ydHMgPHNoYWRvdz4gZWxlbWVudCByZW5kZXJpbmcuIEl0IGlzIHNpbWlsYXIgdG8gPGNv
bnRlbnQ+IGVsZW1lbnQsCisgICAgICAgIGJ1dCBzdXBwb3J0cyByZW5kZXJpbmcgbm9uLXlvdW5n
ZXN0IHNoYWRvdyB0cmVlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKKworICAgICAgICAq
IGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbik6CisgICAgICAgICAgUmV0dXJu
cyB0cnVlIGlmIEluc2VydGlvblBvaW50IHNlbGVjdHMgZWxlbWVudHMgZnJvbSBsaWdodCBjaGls
ZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0UmVuZGVyZXJPZik6CisgICAgICAg
IChXZWJDb3JlOjpwcmV2aW91c1JlbmRlcmVyT2YpOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RS
ZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAgIFJldHVybnMgdGhlIGZpcnN0IHJl
bmRlcmVyIGluIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgIChXZWJDb3JlOjpsYXN0UmVu
ZGVyZXJPZkluc2VydGlvblBvaW50KToKKyAgICAgICAgICBSZXR1cm5zIHRoZSBsYXN0IHJlbmRl
cmVyIGluIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgIChXZWJDb3JlOjpmaXJzdFJlbmRl
cmVyT2YpOgorICAgICAgICAgIFJldHVybnMgdGhlIGZpcnN0IHJlbmRlcmVyIG9mIHRoZSBzcGVj
aWZpYyBub2RlLgorICAgICAgICAoV2ViQ29yZTo6bGFzdFJlbmRlcmVyT2YpOgorICAgICAgICAg
IFJldHVybnMgdGhlIGxhc3QgcmVuZGVyZXIgb2YgdGhlIHNwZWNpZmljIG5vZGUuCisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKToKKyAgICAg
ICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpT
aGFkb3dSb290KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
OmRpc3RyaWJ1dGVkVG8pOgorICAgICAgICAgIFJldHVybnMgSFRNTFNoYWRvd0VsZW1lbnQgdG8g
d2hpY2ggdGhpcyBzaGFkb3cgcm9vdCBpcyBkaXN0cmlidXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OnNldERpc3RyaWJ1dGVkVG8pOgorICAgICAgICAqIGRvbS9TaGFkb3dUcmVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKToK
KyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgorICAgICAgICAoU2hhZG93VHJlZSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OkhUTUxTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTaGFkb3dFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAgIElmIHRoZSBlbGVtZW50
IGlzIGluIHRoZSBvbGRlc3Qgc2hhZG93IHRyZWUsIGl0IHdpbGwgc2VsZWN0IGVsZW1lbnRzIGZy
b20gbGlnaHQgY2hpbGRyZW4uCisgICAgICAgICAgSWYgdGhlIGVsZW1lbnQgaXMgaW4gbm9uLW9s
ZGVzdCBzaGFkb3cgdHJlZSwgaXQgd2lsbCBzZWxlY3QgYSBvbGRlciBzaGFkb3cgcm9vdCBpZiBp
dCBpcyBub3QgYXNzaWduZWQKKyAgICAgICAgICB0byBhbnkgPHNoYWRvdz4gZWxlbWVudCB5ZXQu
CisgICAgICAgICAgT3RoZXJ3aXNlLCBpdCB3b24ndCBzZWxlY3QgYW55dGhpbmcuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50OjpkZXRhY2gp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OnNlbGVjdCk6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxTaGFkb3dF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50OjpkaXN0cmlidXRl
ZEZyb20pOgorICAgICAgICAgIFJldHVybnMgU2hhZG93Um9vdCB3aGljaCBpcyBkaXN0cmlidXRl
ZCB0byB0aGlzIDxzaGFkb3c+IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50OjpzZXREaXN0cmlidXRlZEZyb20pOgorICAgICAg
ICAoV2ViQ29yZTo6dG9IVE1MU2hhZG93RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5zZXJ0aW9uUG9pbnQpOgor
CiAyMDEyLTAyLTI5ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4gCiAK
ICAgICAgICAgRmFsbGJhY2sgZWxlbWVudHMgaW4gbm9uLXlvdW5nZXN0IHNoYWRvdyB0cmVlIHNo
b3VsZCBub3QgYmUgcmVuZGVyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCAwMWRhODZkNTQ3ZTg5NTUzMDE2YWNjZGI4YWVkZGFmMThkMDIyYWM4
Li4xZTA4ODdhN2YyZDY0YzFmZTYxODQ0NmU5ZjMwMDY1ZGQ1OGNmMDU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNp
bmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgi
CkBAIC00Myw2ICs0NSwyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZihO
b2RlKik7CitzdGF0aWMgUmVuZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXJPZihOb2RlKik7CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCBzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4oSW5zZXJ0aW9uUG9pbnQq
IGluc2VydGlvblBvaW50KQoreworICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aXNDb250ZW50RWxl
bWVudCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSB0
b1NoYWRvd1Jvb3QoaW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKTsKKyAgICBp
ZiAoIXJvb3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiByb290LT5pc09s
ZGVzdCgpOworfQorCiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQo
Tm9kZSogbm9kZSkKICAgICA6IG1fcGhhc2UoQXR0YWNoaW5nTm90SW5UcmVlKQogICAgICwgbV9u
b2RlKG5vZGUpCkBAIC01Niw1MCArNzUsNzQgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVS
ZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBXZSBkb24ndCBzdXBwb3J0IDxzaGFkb3c+IHlldCwgc28gdGhlIG5vbi15b3VuZ2VzdCBz
aGFkb3cgd29uJ3QgYmUgcmVuZGVyZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob2RfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAgaWYgKHRvU2hhZG93Um9vdChwYXJl
bnQpLT5pc1lvdW5nZXN0KCkpCi0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hhZG93
Q2hpbGQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RE
aXN0cmlidXRlZDsKKyAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSAmJiB0b1NoYWRvd1Jv
b3QocGFyZW50KS0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdT
aGFkb3dDaGlsZDsKICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBw
YXJlbnQtPnNoYWRvd0hvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChw
YXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICBpZiAodG9FbGVtZW50KHBhcmVudCkt
Pmhhc1NoYWRvd1Jvb3QoKSkgeworICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSB8fCBw
YXJlbnQtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5v
ZGUoKSAmJiB0b0VsZW1lbnQocGFyZW50KS0+aGFzU2hhZG93Um9vdCgpKQogICAgICAgICAgICAg
bV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1RyZWUo
KTsKLSAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hh
ZG93VHJlZS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAmJiBt
X3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUtPmlzU2VsZWN0b3JBY3RpdmUoKSkgewotCi0gICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUg
bm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSByZW5kZXJlZC4KLSAgICAgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Z3MuY2dpP2lkPTc4NTk2Ci0gICAgICAg
ICAgICAgICAgaWYgKHRvU2hhZG93Um9vdChtX2luc2VydGlvblBvaW50LT5zaGFkb3dUcmVlUm9v
dE5vZGUoKSktPmlzWW91bmdlc3QoKSkgewotICAgICAgICAgICAgICAgICAgICBtX3BoYXNlID0g
QXR0YWNoaW5nRGlzdHJpYnV0ZWQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZv
clJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2lu
dCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHBhcmVudC0+aXNT
aGFkb3dSb290KCkpCisgICAgICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUgPSB0b1No
YWRvd1Jvb3QocGFyZW50KS0+dHJlZSgpOworCisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNo
YWRvd1RyZWUpIHsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVu
dFNoYWRvd1RyZWUtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSk7CisgICAgICAgICAgICBTaGFk
b3dSb290KiBzaGFkb3dUcmVlUm9vdCA9IG1faW5zZXJ0aW9uUG9pbnQgPyB0b1NoYWRvd1Jvb3Qo
bV9pbnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpIDogMDsKKworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgICAgICAgICAgaWYgKHNoYWRvd1RyZWVSb290ICYmIChzaGFkb3dU
cmVlUm9vdC0+aXNZb3VuZ2VzdCgpIHx8IHNoYWRvd1RyZWVSb290LT5kaXN0cmlidXRlZFRvKCkp
KSB7CisgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOworICAg
ICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRl
cmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2ludCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgICAgIGlmIChzaGFkb3dUcmVlUm9vdCAmJiAoc2hhZG93VHJlZVJvb3QtPmlzWW91bmdl
c3QoKSkpIHsKKyAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRGlzdHJpYnV0ZWQ7
CisgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2Rl
UmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5n
QW5kU3R5bGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisjZW5k
aWYKIAogICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkOwogICAg
ICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQ7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNTaGFkb3dCb3VuZGFy
eShwYXJlbnQpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hh
ZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgot
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWdzLmNnaT9pZD03
ODU5NgotICAgICAgICAgICAgaWYgKCF0b1NoYWRvd1Jvb3QocGFyZW50LT5zaGFkb3dUcmVlUm9v
dE5vZGUoKSktPmlzWW91bmdlc3QoKSkgeworICAgICAgICBpZiAoaXNTaGFkb3dCb3VuZGFyeShw
YXJlbnQpKSAgeworICAgICAgICAgICAgU2hhZG93Um9vdCogc2hhZG93VHJlZVJvb3QgPSB0b1No
YWRvd1Jvb3QocGFyZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSk7CisgICAgICAgICAgICBBU1NF
UlQoc2hhZG93VHJlZVJvb3QpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAg
aWYgKCEoc2hhZG93VHJlZVJvb3QtPmlzWW91bmdlc3QoKSB8fCBzaGFkb3dUcmVlUm9vdC0+ZGlz
dHJpYnV0ZWRUbygpKSkgewogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RE
aXN0cmlidXRlZDsKICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSA9IHBhcmVudDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhhc1NlbGVjdGlvbigp
KQotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RGYWxsYmFja2VkOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdGYWxsYmFj
a2VkOworI2Vsc2UKKyAgICAgICAgICAgIGlmICghc2hhZG93VHJlZVJvb3QtPmlzWW91bmdlc3Qo
KSkgeworICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZDsK
KyAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVu
dDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAg
ICAgICAgIGlmIChzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4odG9JbnNlcnRpb25Qb2ludChwYXJl
bnQpKSkgeworICAgICAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhh
c1NlbGVjdGlvbigpKQorICAgICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90
RmFsbGJhY2tlZDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1f
cGhhc2UgPSBBdHRhY2hpbmdGYWxsYmFja2VkOworICAgICAgICAgICAgfSBlbHNlIHsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgICAgICBBU1NFUlQocGFyZW50LT5oYXNUYWdO
YW1lKHNoYWRvd1RhZykpOworICAgICAgICAgICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSB0b0hU
TUxTaGFkb3dFbGVtZW50KHBhcmVudCktPmRpc3RyaWJ1dGVkRnJvbSgpOworICAgICAgICAgICAg
ICAgIGlmIChyb290ICYmIHJvb3QtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgICAgICAgICAgICAg
bV9waGFzZSA9IEF0dGFjaGluZ05vdEZhbGxiYWNrZWQ7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRmFsbGJhY2tlZDsKKyNlbHNl
CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk6CisjZW5kaWYKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9k
ZVJlbmRlcmluZ0NvbnRleHQocGFyZW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTM3LDM1ICsxODAsNTMgQEAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlbGVhc2VTdHls
ZSgpCiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlck9mKEluc2VydGlvblBvaW50
KiBwYXJlbnQsIE5vZGUqIGN1cnJlbnQpCiB7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGN1
cnJlbnRTZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+ZmluZChjdXJyZW50KTsKLSAg
ICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCi0gICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChj
dXJyZW50KTsKIAotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IGN1
cnJlbnRTZWxlY3Rpb24tPm5leHQoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24t
Pm5leHQoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlv
bi0+bm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAg
IGlmIChzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4ocGFyZW50KSkgeworICAgICAgICBIVE1MQ29u
dGVudFNlbGVjdGlvbiogY3VycmVudFNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5m
aW5kKGN1cnJlbnQpOworICAgICAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCisgICAgICAgICAg
ICByZXR1cm4gMDsKKworICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rp
b24gPSBjdXJyZW50U2VsZWN0aW9uLT5uZXh0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2Vs
ZWN0aW9uLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlbmRlcmVyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
cmV0dXJuIDA7CisgICAgQVNTRVJUKHBhcmVudC0+aGFzVGFnTmFtZShzaGFkb3dUYWcpKTsKKyAg
ICByZXR1cm4gZmlyc3RSZW5kZXJlck9mKGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpOwogfQogCiBz
dGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyT2YoSW5zZXJ0aW9uUG9pbnQqIHBh
cmVudCwgTm9kZSogY3VycmVudCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlciA9
IDA7CisgICAgQVNTRVJUKGN1cnJlbnQpOworCisgICAgaWYgKHNlbGVjdHNGcm9tTGlnaHRDaGls
ZHJlbihwYXJlbnQpKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyID0gMDsK
KworICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQt
PnNlbGVjdGlvbnMoKS0+Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24t
Pm5leHQoKSkgeworICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi0+bm9kZSgpID09IGN1cnJlbnQp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAg
IGxhc3RSZW5kZXJlciA9IHJlbmRlcmVyOworICAgICAgICB9CiAKLSAgICBmb3IgKEhUTUxDb250
ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+Zmlyc3QoKTsg
c2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgewotICAgICAgICBpZiAo
c2VsZWN0aW9uLT5ub2RlKCkgPT0gY3VycmVudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJl
cigpKQotICAgICAgICAgICAgbGFzdFJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgICAgIHJldHVy
biBsYXN0UmVuZGVyZXI7CiAgICAgfQogCi0gICAgcmV0dXJuIGxhc3RSZW5kZXJlcjsKKyAgICBB
U1NFUlQocGFyZW50LT5oYXNUYWdOYW1lKHNoYWRvd1RhZykpOworICAgIHJldHVybiBsYXN0UmVu
ZGVyZXJPZihjdXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSk7CiB9CiAKLXN0YXRpYyBSZW5kZXJP
YmplY3QqIGZpcnN0UmVuZGVyZXJPZihJbnNlcnRpb25Qb2ludCogcGFyZW50KQorc3RhdGljIFJl
bmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
IHBhcmVudCkKIHsKLSAgICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgeworICAgIGlmIChz
ZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4ocGFyZW50KSkgeworICAgICAgICBpZiAoIXBhcmVudC0+
aGFzU2VsZWN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmlyc3RSZW5kZXJlck9mKHBhcmVu
dC0+Zmlyc3RDaGlsZCgpKTsKKworCiAgICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNl
bGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZW5kZXJlcjsKQEAgLTE3NCwyMSArMjM1LDkzIEBAIHN0YXRpYyBSZW5k
ZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZihJbnNlcnRpb25Qb2ludCogcGFyZW50KQogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0NvbnRleHQocGFy
ZW50KS5uZXh0UmVuZGVyZXIoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBBU1NFUlQo
cGFyZW50LT5oYXNUYWdOYW1lKHNoYWRvd1RhZykpOworCisgICAgU2hhZG93Um9vdCogcm9vdCA9
IHRvSFRNTFNoYWRvd0VsZW1lbnQocGFyZW50KS0+ZGlzdHJpYnV0ZWRGcm9tKCk7CisgICAgaWYg
KCFyb290IHx8ICFyb290LT5maXJzdENoaWxkKCkpCisgICAgICAgIHJldHVybiBmaXJzdFJlbmRl
cmVyT2YocGFyZW50LT5maXJzdENoaWxkKCkpOworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IHJv
b3QtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsK
KyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjaGlsZC0+cmVuZGVyZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICB9CisjZWxzZQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworI2VuZGlmCisKKyAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFJlbmRl
ck9iamVjdCogbGFzdFJlbmRlcmVyT2YoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCkKK3N0YXRpYyBS
ZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
IHBhcmVudCkKIHsKLSAgICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgewotICAgICAgICBm
b3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMo
KS0+bGFzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkg
ewotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5v
ZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAg
aWYgKHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbihwYXJlbnQpKSB7CisgICAgICAgIGlmIChwYXJl
bnQtPmhhc1NlbGVjdGlvbigpKSB7CisgICAgICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+bGFzdCgpOyBzZWxlY3Rpb247
IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkgeworICAgICAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBsYXN0UmVuZGVyZXJPZihwYXJlbnQt
Pmxhc3RDaGlsZCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLnByZXZpb3VzUmVuZGVyZXIo
KTsKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIEFTU0VSVChwYXJlbnQtPmhhc1RhZ05h
bWUoc2hhZG93VGFnKSk7CisKKyAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvSFRNTFNoYWRv
d0VsZW1lbnQocGFyZW50KS0+ZGlzdHJpYnV0ZWRGcm9tKCkpIHsKKyAgICAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IHJvb3QtPmxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlv
dXNTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
Y2hpbGQtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAg
ICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBsYXN0UmVuZGVyZXJPZihwYXJlbnQt
Pmxhc3RDaGlsZCgpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYK
KworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVy
T2YoTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIC8v
IERvIG5vdCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQg
Zmxvdy10aHJlYWQuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAm
JiAhbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJl
cigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkgJiYg
bm9kZS0+c2hhZG93VHJlZVJvb3ROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIGZpcnN0ID0gZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQodG9JbnNlcnRpb25Qb2lu
dChub2RlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJl
ck9mKE5vZGUqIG5vZGUpCit7CisgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91
c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICAg
ICAgLy8gRG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZl
cmVudCBmbG93LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHls
ZSgpICYmICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJl
bmRlcmVyKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2Rl
KSAmJiBub2RlLT5zaGFkb3dUcmVlUm9vdE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRl
ck9iamVjdCogbGFzdCA9IGxhc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQodG9JbnNlcnRpb25Q
b2ludChub2RlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKQEAgLTIxMSwyMSArMzQ0LDcgQEAgUmVuZGVyT2Jq
ZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICBpZiAo
bV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkgJiYgIW1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
LT5hdHRhY2hlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9
IG1fbm9kZS0+bmV4dFNpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5v
dCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10
aHJlYWQuCi0gICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9k
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKLSAgICAg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZpcnN0ID0gZmlyc3RSZW5kZXJlck9mKHRvSW5zZXJ0
aW9uUG9pbnQobm9kZSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBmaXJzdFJlbmRlcmVyT2YobV9u
b2RlLT5uZXh0U2libGluZygpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CkBAIC0yNDYsMjAgKzM2NSw3IEBAIFJlbmRl
ck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9pZGFuY2Ug
YXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQgYWRkaW5n
IGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX25vZGUt
PnByZXZpb3VzU2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5v
dCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10
aHJlYWQuCi0gICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9k
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7Ci0gICAgICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVyT2YodG9JbnNlcnRpb25Q
b2ludChub2RlKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbGFzdFJlbmRlcmVyT2YobV9ub2RlLT5w
cmV2aW91c1NpYmxpbmcoKSk7CiB9CiAKIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRl
eCBmNzZjYjIwOTIzZTM3MmFlYzBjMmNlNjdiNjlhMzMwMTc5MmVlYjczLi41NTk5ZWM3NzMyOGUy
MDc4Y2VkOGE2N2FhZTg1ZTA3NjU4MTg3ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CkBAIC01MSw2ICs1MSw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fYXBwbHlBdXRo
b3JTaGVldHMoZmFsc2UpCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBtX3NoYWRvd0Vs
ZW1lbnREaXN0cmlidXRlZFRvKDApCisjZW5kaWYKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggNjRkZGZhODJmOTUyYjI1MjBiZGUyMGYz
YmYxODZjMTFmMTI2Y2JkYi4uODc3NTdkNzM4ZjNlNTViMGRkNTc0ZTU5ZjMyMWRlYjcxYjRlNjhm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwogY2xh
c3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKK2NsYXNzIEhUTUxTaGFkb3dFbGVtZW50OwogY2xhc3Mg
SW5zZXJ0aW9uUG9pbnQ7CiBjbGFzcyBTaGFkb3dUcmVlOwogCkBAIC04MSw2ICs4MiwxMSBAQCBw
dWJsaWM6CiAKICAgICBib29sIGhhc0luc2VydGlvblBvaW50KCkgY29uc3Q7CiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKyAgICBIVE1MU2hhZG93RWxlbWVudCogZGlzdHJpYnV0ZWRUbygpIGNv
bnN0OworICAgIHZvaWQgc2V0RGlzdHJpYnV0ZWRUbyhIVE1MU2hhZG93RWxlbWVudCopOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwogICAgIHZpcnR1YWwg
flNoYWRvd1Jvb3QoKTsKQEAgLTkyLDggKzk4LDI0IEBAIHByaXZhdGU6CiAgICAgU2hhZG93Um9v
dCogbV9wcmV2OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAgICBib29sIG1fYXBwbHlBdXRo
b3JTaGVldHMgOiAxOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIEhUTUxTaGFkb3dFbGVt
ZW50KiBtX3NoYWRvd0VsZW1lbnREaXN0cmlidXRlZFRvOworI2VuZGlmCiB9OwogCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIFNoYWRvd1Jvb3Q6OmRp
c3RyaWJ1dGVkVG8oKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYWRvd0VsZW1lbnREaXN0cmli
dXRlZFRvOworfQorCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpzZXREaXN0cmlidXRlZFRvKEhU
TUxTaGFkb3dFbGVtZW50KiBzaGFkb3dFbGVtZW50KQoreworICAgIEFTU0VSVCghbV9zaGFkb3dF
bGVtZW50RGlzdHJpYnV0ZWRUbyB8fCAhc2hhZG93RWxlbWVudCk7CisgICAgbV9zaGFkb3dFbGVt
ZW50RGlzdHJpYnV0ZWRUbyA9IHNoYWRvd0VsZW1lbnQ7Cit9CisjZW5kaWYKKwogaW5saW5lIGNv
bnN0IFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFT
U0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJl
ZS5jcHAKaW5kZXggMmNjZTk5N2NhNjE3MWNhZDBkMTEwNzBmYjk0MjJmMDY0Yzk4MTU0Yi4uNjE5
ODM3Y2ZlNTkxODgxYjM1OTIyMTVhYTJlMWMwNzk5Zjc2ZWNjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dUcmVlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNs
dWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCkBAIC0xOTcsNiArMTk4LDE3IEBAIHZvaWQgU2hhZG93VHJlZTo6ZGV0YWNo
SG9zdChFbGVtZW50KiBob3N0KQogCiBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0
aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobm9kZSAmJiBub2Rl
LT5wYXJlbnROb2RlKCkpOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKG5vZGUt
PnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKEhUTUxTaGFkb3dF
bGVtZW50KiBzaGFkb3dFbGVtZW50ID0gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSkt
PmRpc3RyaWJ1dGVkVG8oKSkKKyAgICAgICAgICAgIHJldHVybiBzaGFkb3dFbGVtZW50OworCisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFtX3NlbGVjdG9yKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3Nl
bGVjdG9yLT5maW5kRm9yKG5vZGUpOwpAQCAtMjA1LDExICsyMTcsNiBAQCBJbnNlcnRpb25Qb2lu
dCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKICAgICBy
ZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7CiB9CiAKLWJvb2wgU2hhZG93VHJlZTo6aXNT
ZWxlY3RvckFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxl
Y3Rvci0+aGFzQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkK
IHsKICAgICBkZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dU
cmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCmluZGV4IDBlZmJkYjEzNjc0
MzAzZmY2N2E3MWUxMGVjYzU1MWE1YTQ3NTQ4NGYuLjU0YzQxYmJlNDE5ZjVjM2IxMmU3ODY4MmI2
ZDQ5MjI1ZDQ2ZjliOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtODIsOCArODIsNiBA
QCBwdWJsaWM6CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKICAg
ICBIVE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwogCi0gICAgYm9vbCBpc1Nl
bGVjdG9yQWN0aXZlKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgRWxlbWVudCogaG9zdCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVu
dC5jcHAKaW5kZXggY2IwMWNkMjFmZTBlMDA5YTVlOGUwMDNhYjliODRiNjhmZGQ0MjkzMC4uOTU0
NzZmMDA1MTJmMzNmNmE1ZGIyYTM2NzBiZDhlODI4YTcxOWY3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcApAQCAtMzUsMTMgKzM1LDE3
IEBACiAjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRG9jdW1lbnQ7CiAKIGlubGluZSBIVE1MU2hhZG93RWxlbWVudDo6SFRNTFNoYWRv
d0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgOiBJbnNlcnRpb25Q
b2ludCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIGRpc3RyaWJ1dGVkU2hhZG93Um9vdCgwKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKEhUTUxOYW1lczo6c2hhZG93VGFnKSk7CiB9CkBAIC01
NSw2ICs1OSw2MiBAQCBIVE1MU2hhZG93RWxlbWVudDo6fkhUTUxTaGFkb3dFbGVtZW50KCkKIHsK
IH0KIAordm9pZCBIVE1MU2hhZG93RWxlbWVudDo6YXR0YWNoKCkKK3sKKyAgICBTaGFkb3dSb290
KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKTsKKyAgICBib29sIHNo
YWRvd0Rpc3RyaWJ1dGlvbiA9IGZhbHNlOworCisgICAgaWYgKHJvb3QpIHsKKyAgICAgICAgLy8g
V2hlbiByb290IGlzIHRoZSBvbGRlc3Qgc2hhZG93IHJvb3QsIDxzaGFkb3c+IHNob3VsZCBiZWhh
dmUgbGlrZSA8Y29udGVudD4uCisgICAgICAgIGlmIChyb290LT5pc09sZGVzdCgpKSB7CisgICAg
ICAgICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnRyZWUoKS0+ZW5z
dXJlU2VsZWN0b3IoKTsKKyAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rp
b25zKTsKKyAgICAgICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgJm1fc2VsZWN0aW9ucyk7
CisgICAgICAgIH0gZWxzZSBpZiAoIXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5kaXN0cmlidXRl
ZFRvKCkpIHsKKyAgICAgICAgICAgIHNoYWRvd0Rpc3RyaWJ1dGlvbiA9IHRydWU7CisgICAgICAg
ICAgICBzZXREaXN0cmlidXRlZEZyb20ocm9vdC0+b2xkZXJTaGFkb3dSb290KCkpOworICAgICAg
ICAgICAgcm9vdC0+b2xkZXJTaGFkb3dSb290KCktPnNldERpc3RyaWJ1dGVkVG8odGhpcyk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKCk7CisKKyAgICBp
ZiAocm9vdCkgeworICAgICAgICBpZiAocm9vdC0+aXNPbGRlc3QoKSkgeworICAgICAgICAgICAg
Zm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gbV9zZWxlY3Rpb25zLmZpcnN0
KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCisgICAgICAgICAg
ICAgICAgc2VsZWN0aW9uLT5ub2RlKCktPmF0dGFjaCgpOworICAgICAgICB9IGVsc2UgaWYgKHNo
YWRvd0Rpc3RyaWJ1dGlvbikgeworICAgICAgICAgICAgQVNTRVJUKCFyb290LT5vbGRlclNoYWRv
d1Jvb3QoKS0+YXR0YWNoZWQoKSk7CisgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3Qo
KS0+YXR0YWNoKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSFRNTFNoYWRvd0VsZW1l
bnQ6OmRldGFjaCgpCit7CisgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qo
c2hhZG93VHJlZVJvb3ROb2RlKCkpKSB7CisgICAgICAgIGlmIChyb290LT5pc09sZGVzdCgpKSB7
CisgICAgICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT50
cmVlKCktPnNlbGVjdG9yKCkpCisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KCZt
X3NlbGVjdGlvbnMpOworICAgICAgICB9IGVsc2UgaWYgKFNoYWRvd1Jvb3QqIGRpc3RyaWJ1dGVk
U2hhZG93Um9vdCA9IGRpc3RyaWJ1dGVkRnJvbSgpKSB7CisgICAgICAgICAgICBkaXN0cmlidXRl
ZFNoYWRvd1Jvb3QtPnNldERpc3RyaWJ1dGVkVG8oMCk7CisgICAgICAgICAgICBzZXREaXN0cmli
dXRlZEZyb20oMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXaGVuIHNoYWRvdyBlbGVtZW50
IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1
bGF0ZSBzZWxlY3RvciBmb3IKKyAgICAgICAgLy8gb3RoZXIgaW5zZXJ0aW9uIHBvaW50cy4KKyAg
ICAgICAgcm9vdC0+dHJlZSgpLT5zZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93
KCk7CisgICAgfQorCisgICAgQVNTRVJUKG1fc2VsZWN0aW9ucy5pc0VtcHR5KCkpOworICAgIElu
c2VydGlvblBvaW50OjpkZXRhY2goKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MU2hh
ZG93RWxlbWVudDo6c2VsZWN0KCkgY29uc3QKK3sKKyAgICAgcmV0dXJuIG51bGxBdG9tOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4
IDE1MWM3YTJhYmJkNmM1MDU3ODk0M2ZkNmRjY2ZmZjA1YzljOWZmZjcuLjg3NTU5OGEzOGU1NTNj
YTQ4MzVmZDI5ZDBkNjlmOTc3YzQxNjM0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaApAQCAtMzMsMjEgKzMzLDQ5IEBACiAKICNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKIAotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5z
ZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEhUTUxTaGFkb3dFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsK
K2NsYXNzIEhUTUxTaGFkb3dFbGVtZW50IDogcHVibGljIEluc2VydGlvblBvaW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MU2hhZG93RWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB+SFRNTFNoYWRvd0Vs
ZW1lbnQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCk7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCgpIGNvbnN0OworCisg
ICAgU2hhZG93Um9vdCogZGlzdHJpYnV0ZWRGcm9tKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0
cmlidXRlZEZyb20oU2hhZG93Um9vdCopOworCiBwcml2YXRlOgogICAgIEhUTUxTaGFkb3dFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgYm9vbCBp
c1NoYWRvd0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBTaGFkb3dSb290
KiBkaXN0cmlidXRlZFNoYWRvd1Jvb3Q7CiB9OwogCitpbmxpbmUgU2hhZG93Um9vdCogSFRNTFNo
YWRvd0VsZW1lbnQ6OmRpc3RyaWJ1dGVkRnJvbSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRpc3Ry
aWJ1dGVkU2hhZG93Um9vdDsKK30KKworaW5saW5lIHZvaWQgSFRNTFNoYWRvd0VsZW1lbnQ6OnNl
dERpc3RyaWJ1dGVkRnJvbShTaGFkb3dSb290KiBzaGFkb3dSb290KQoreworICAgIEFTU0VSVCgh
ZGlzdHJpYnV0ZWRTaGFkb3dSb290IHx8ICFzaGFkb3dSb290KTsKKyAgICBkaXN0cmlidXRlZFNo
YWRvd1Jvb3QgPSBzaGFkb3dSb290OworfQorCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIHRv
SFRNTFNoYWRvd0VsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRvd1RhZykpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxIVE1MU2hhZG93RWxlbWVudCo+KG5vZGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IGM0YzFhMmQ1Y2Q3OTYwODk1ZTA0ZDJiZjYz
NmZlOWI2YmZiMTMyZmYuLmM3ZTVmYmM5MTYxMWIzZWI1MGEwN2E5ZGY0OWUwNDAzMjcwZjc0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMzMs
NiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsMTAgKzU3LDEyIEBAIHByb3Rl
Y3RlZDoKIAogaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQogewotICAg
IC8vIEZJWE1FOiA8c2hhZG93PiBzaG91bGQgYWxzbyBiZSBJbnNlcnRpb25Qb2ludC4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKICAgICBpZiAo
IW5vZGUgfHwgbm9kZS0+aXNDb250ZW50RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNoYWRvd1RhZykpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKICAgICByZXR1
cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWVjMzMxZDNiMGM0YzczMDM5OGRiNDFlMzY4YjE5Zjg0Yzg2
ZTY5Ni4uNWZhZTE3Zjk0M2RjNDNiNGJmODMwNzg5NjBkMGExMTJmYWIxMWQ1OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDEyLTAzLTAxICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBzaG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVy
aW5nLW11bHRpcGxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAyMDEyLTAyLTI5ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4gCiAKICAgICAgICAgRmFsbGJhY2sg
ZWxlbWVudHMgaW4gbm9uLXlvdW5nZXN0IHNoYWRvdyB0cmVlIHNob3VsZCBub3QgYmUgcmVuZGVy
ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1l
bnQtcmVuZGVyaW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVhZGFjMjBmZGYzYWFlZGE2MzAyOWNmNjhkYmI4NTg3NGM5NjI1M2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQt
cmVuZGVyaW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACityZW5kZXJp
bmdEb3VibGVTaGFkb3dSb290CitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290V2l0aE9u
ZVNoYWRvd0VsZW1lbnQKK1BBU1MKK3JlbmRlcmluZ1RyaXBsZVNoYWRvd1Jvb3QKK1BBU1MKK3Jl
bmRlcmluZ1R3b1NoYWRvd1Jvb3RzCitQQVNTCit0ZXN0V2l0aERvdWJsZVNoYWRvd1Jvb3RXaXRo
Q29udGVudDEKK1BBU1MKK3Rlc3RXaXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MgorUEFT
UworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5QWRkZWQxCitQQVNTCityZW5k
ZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDIKK1BBU1MKK3JlbmRlcmluZ0Rv
dWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMworUEFTUworcmVuZGVyaW5nRG91YmxlU2hh
ZG93Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDEKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jv
b3REeW5hbWljYWxseVJlbW92ZWQyCitQQVNTCityZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1p
Y2FsbHlBZGRlZAorUEFTUworcmVuZGVyaW5nT2xkZXJTaGFkb3dSb290Q29udGVudER5bmFtaWNh
bGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQK
K1BBU1MKK3JlbmRlcmluZ09sZGVyU2hhZG93Um9vdENvbnRlbnREeW5hbWljYWxseVJlbW92ZWQK
K1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZWRlODE4MTMwYjJkM2E2ZDdlZGNlYzBjY2NjY2QzOWM4MzI1ZjdiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVt
ZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCkBAIC0wLDAgKzEsNDQ2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlvbmluZyBl
bnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250YWluZXIgeworICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKK30KKworLnNwYW4geworICAgIGRpc3BsYXk6IGJveGVkLWlubGluZTsK
KyAgICBtYXJnaW46IDJweDsKKyAgICBib3JkZXI6IHNvbGlkOworfQorPC9zdHlsZT4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBzZXRVcE9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxl
U2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworfQorCitmdW5jdGlvbiB0ZWFyRG93bk9uY2Uo
KSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKGZhbHNl
KTsKK30KKwordmFyIHRlc3RGdW5jcyA9IFtdOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiBy
ZW5kZXJpbmdEb3VibGVTaGFkb3dSb290KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2
PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bh
bj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAg
IHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGls
ZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rp
b24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdFdpdGhPbmVTaGFkb3dFbGVtZW50KGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9S
RSAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4i
OworCisgICAgLy8gTUlEIHdvbid0IGJlIHJlbmRlcmVkLgorICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScp
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOwor
CisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2Fs
bElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1RyaXBs
ZVNoYWRvd1Jvb3QoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JF
IDM8L3NwYW4+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+IiArCisg
ICAgICAgICI8c3Bhbj5NSUQ8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAxPC9zcGFu
PjxzcGFuPkFGVEVSIDI8L3NwYW4+PHNwYW4+QUZURVIgMzwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAg
ICB2YXIgc3IzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IzLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDMnKSk7CisgICAgc3IzLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAzJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZE
b25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nVHdvU2hhZG93
Um9vdHMoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3Nw
YW4+IiArCisgICAgICAgICAgICAiPHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFu
PjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICAgICAiPHNwYW4+RkFMTEJBQ0sgMi0y
PC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICB2YXIgc2hhZG93MjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsK
KyAgICBzaGFkb3cyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLIDIt
MScpKTsKKyAgICB2YXIgc2hhZG93MjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cn
KTsKKyAgICBzaGFkb3cyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNL
IDItMicpKTsKKworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyMSk7CisgICAgc3IyLmFwcGVuZENo
aWxkKHNoYWRvdzIyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1
bmNzLnB1c2goZnVuY3Rpb24gdGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQxKGNh
bGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5l
cicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFu
Pk1JRCAyPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlE
IDE8L3NwYW4+PHNwYW4+TUlEIDM8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj4iICsKKyAgICAg
ICAgIjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCAzJywgJ3NyMycpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTUlEIDEnLCAnc3IxJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdNSUQgMicsICdzcjInKSk7CisKKyAgICB2YXIgc2hhZG93MSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMScpKTsKKyAgICB2YXIgc3IxID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgdmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdp
dGhTZWxlY3QoJy5zcjEnLCAnQ09OVEVOVCBGQUxMQkFDSyAxJyk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGNvbnRlbnQxKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzaGFk
b3cyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93Mi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSyAyJykpOworICAgIHZh
ciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICB2YXIgY29udGVudDsKKyAgICBz
cjIuYXBwZW5kQ2hpbGQoY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IyJywg
J0NPTlRFTlQgRkFMTEJBQ0sgMicpKTsKKyAgICBjb250ZW50LnRpdGxlID0gImRlYnVnc3RvcCI7
CisgICAgc3IyLmFwcGVuZENoaWxkKHNoYWRvdzIpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUo
KTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0V2l0aERvdWJsZVNoYWRvd1Jv
b3RXaXRoQ29udGVudDIoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVG
T1JFIDI8L3NwYW4+PHNwYW4+TUlEIDI8L3NwYW4+PHNwYW4+TUlEIDM8L3NwYW4+PHNwYW4+TUlE
IDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5DT05URU5U
IEZBTExCQUNLIDE8L3NwYW4+PHNwYW4+U0hBRE9XIEZBTExCQUNLIDE8L3NwYW4+PHNwYW4+QUZU
RVIgMTwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKwor
ICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAzJywgJ3NyMycpKTsKKyAgICByb290
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDEnLCAnc3IxJykpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMicsICdzcjInKSk7CisKKyAg
ICB2YXIgc2hhZG93MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNo
YWRvdzEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMScp
KTsKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IxJywgJ0NPTlRFTlQgRkFMTEJBQ0sg
MScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzaGFkb3cyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93Mi5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSyAyJykpOworICAgIHZhciBzcjIgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVu
dFdpdGhTZWxlY3QoJy5zcjInLCAnQ09OVEVOVCBGQUxMQkFDSyAyJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdDT05URU5UIEZBTExCQUNL
IDMnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKHNoYWRvdzIpOworICAgIHNyMi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJ
ZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVT
aGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDEoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxk
aXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9z
cGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisg
ICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQUZURVIgMScpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwt
Y29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihy
b290LCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNyMiA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgICAgICBjYWxsSWZEb25lKCk7
CisgICAgfTt9KShyb290LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9
KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5
bmFtaWNhbGx5QWRkZWQyKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJF
Rk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5B
RlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
IDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7
CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjIsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hh
ZG93Jyk7CisgICAgICAgIHNyMi5pbnNlcnRCZWZvcmUoc2hhZG93LCBzcjIubGFzdENoaWxkKTsK
KworICAgICAgICBjYWxsSWZEb25lKCkKKyAgICB9O30pKHNyMiwgY2FsbElmRG9uZSk7CisKKyAg
ICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRl
cmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMyhjYWxsSWZEb25lKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQor
ICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48
c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwv
ZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2
YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IxLCBjYWxs
SWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgICAgICBzcjEuaW5zZXJ0QmVmb3JlKHNo
YWRvdywgc3IxLmxhc3RDaGlsZCk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpCisgICAgfTt9KShz
cjEsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlSZW1v
dmVkMShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1j
b250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bh
bj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisg
ICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIg
ZiA9IChmdW5jdGlvbihzcjIsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICBzcjIucmVtb3ZlQ2hpbGQoc3IyLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcpOworICAgICAg
ICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjIsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGlt
ZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3Vi
bGVTaGFkb3dSb290RHluYW1pY2FsbHlSZW1vdmVkMihjYWxsSWZEb25lKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAg
ICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5B
RlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
IDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsK
KworICAgIHZhciBmID0gKGZ1bmN0aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICAgIHNyMS5yZW1vdmVDaGlsZChzcjEuZmlyc3RDaGlsZC5uZXh0U2libGlu
Zyk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHNyMSwgY2FsbElmRG9uZSk7CisK
KyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJl
bmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVkKGNhbGxJZkRvbmUpIHsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9Cisg
ICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxz
cGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9k
aXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisK
KyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihyb290
LCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgcm9vdC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOwor
ICAgIH07fSkocm9vdCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7
CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ09sZGVyU2hhZG93Um9vdENvbnRl
bnREeW5hbWljYWxseUFkZGVkKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFu
PkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bh
bj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBy
b290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
cm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0dXJu
IGZ1bmN0aW9uKCkgeworICAgICAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdBRlRFUiAxJykpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjEsIGNhbGxJ
ZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChm
dW5jdGlvbiByZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9S
RSAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4i
OworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBy
b290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNy
MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZP
UkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hh
ZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDIn
KSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9u
ZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QucmVtb3ZlQ2hpbGQocm9vdC5m
aXJzdENoaWxkKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkocm9vdCwgY2FsbElm
RG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1
bmN0aW9uIHJlbmRlcmluZ09sZGVyU2hhZG93Um9vdENvbnRlbnREeW5hbWljYWxseVJlbW92ZWQo
Y2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNw
YW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNw
YW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykp
OworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAg
ICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgICAgICBzcjEucmVtb3ZlQ2hpbGQoc3IxLmxhc3RDaGlsZCk7CisgICAgICAgIGNhbGxJ
ZkRvbmUoKTsKKyAgICB9O30pKHNyMSwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYs
IDApOworfSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QodGVz
dEZ1bmNzKSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIi
PjwvZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9k
aXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmlu
Zy1zaW5nbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMTBj
Y2JiMDk0NzQ3Yzk1MzcxZmE5MjNiMWJhNGVjMjNiNjQyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmds
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorcmVuZGVyaW5nU2luZ2xlU2hhZG93Um9v
dAorUEFTUworcmVuZGVyaW5nTm90RmFsbGJhY2tlZAorUEFTUworcmVuZGVyaW5nRmFsbGJhY2tl
ZAorUEFTUworcmVuZGVyaW5nTWl4ZWRPZkZhbGxiYWNrQW5kTm9uRmFsbGJhY2sKK1BBU1MKK3Jl
bmRlcmluZ1NoYWRvd1Jvb3RCZWZvcmVDb250ZW50CitQQVNTCityZW5kZXJpbmdTaGFkb3dSb290
QWZ0ZXJDb250ZW50CitQQVNTCityZW5kZXJpbmdTaGFkb3dFbGVtZW50RHluYW1pY2FsbHlBZGRl
ZAorUEFTUworcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5UmVtb3ZlZAorUEFTUwor
cmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ0xp
Z2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQKK1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5k
ZXJpbmctc2luZ2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVs
ZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZTgwNmY5NWExODZjN2Jj
NDYxODA4MDM5ODVjZjE4Yjk3ZDFhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCkBAIC0w
LDAgKzEsMjQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cisv
KiByZWxhdGl2ZSBwb3NpdGlvbmluZyBlbnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8K
Ky5jb250YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworLnNwYW4geworICAg
IGRpc3BsYXk6IGJveGVkLWlubGluZTsKKyAgICBtYXJnaW46IDJweDsKKyAgICBib3JkZXI6IHNv
bGlkOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhZG93LXRlc3Qt
ZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZXRVcE9uY2UoKSB7Cisg
ICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworfQor
CitmdW5jdGlvbiB0ZWFyRG93bk9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hh
ZG93U3VidHJlZXNFbmFibGVkKGZhbHNlKTsKK30KKwordmFyIHRlc3RGdW5jcyA9IFtdOworCit0
ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdTaW5nbGVTaGFkb3dSb290KGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3Nw
YW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAg
IHNyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBz
ci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsK
KyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVy
aW5nTm90RmFsbGJhY2tlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5C
RUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisK
KyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBj
YWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRmFs
bGJhY2tlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVj
dC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3Nw
YW4+PHNwYW4+RkFMTEJBQ0s8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAg
IHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisKKyAgICB2YXIgc2hh
ZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAg
ICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5n
TWl4ZWRPZkZhbGxiYWNrQW5kTm9uRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAg
IjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5GQUxMQkFDSyAy
PC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93MSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdGQUxMQkFDSyAxJykpOworICAgIHZhciBzaGFkb3cyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0ZBTExCQUNLIDInKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsK
KyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cxKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cy
KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGls
ZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rp
b24gcmVuZGVyaW5nU2hhZG93Um9vdEJlZm9yZUNvbnRlbnQoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5NIDE8
L3NwYW4+PHNwYW4+Q09OVEVOVCBGQUxMQkFDSzwvc3Bhbj48c3Bhbj5NIDI8L3NwYW4+PHNwYW4+
QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cn
KTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFM
TEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J00gMScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3Bh
bicsICdDT05URU5UIEZBTExCQUNLJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTSAyJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdTaGFkb3dSb290QWZ0ZXJDb250ZW50KGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3Nw
YW4+PHNwYW4+TSAxPC9zcGFuPjxzcGFuPlNIQURPVyBGQUxMQkFDSzwvc3Bhbj48c3Bhbj5NIDI8
L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdTSEFET1cgRkFMTEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7
CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnQ09O
VEVOVCBGQUxMQkFDSycpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J00gMScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTSAyJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30p
OworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdTaGFkb3dFbGVtZW50RHluYW1p
Y2FsbHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8
L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiIKKworICAgIHZh
ciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgdmFyIHNyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQnKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicp
LmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oY2FsbElmRG9uZSwg
cm9vdCwgc3IpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2hhZG93ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgICAgIHNyLmFwcGVuZENoaWxkKHNo
YWRvdyk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwgcm9vdCwg
c3IpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5j
dGlvbiByZW5kZXJpbmdTaGFkb3dFbGVtZW50RHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRvbmUp
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVy
SFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bh
bj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSE9VTEQgTk9UIEJF
IFJFTkRFUkVEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3Iu
YXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250
YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKGNhbGxJ
ZkRvbmUsIHNyLCBzaGFkb3cpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBzci5yZW1v
dmVDaGlsZChzaGFkb3cpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRv
bmUsIHNyLCBzaGFkb3cpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlBZGRlZChj
YWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+
TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiIKKworICAgIHZhciByb290ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCcpKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH19KShjYWxsSWZE
b25lLCByb290KTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1
c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5UmVtb3ZlZChjYWxs
SWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlE
PC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiIKKworICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ1NIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBm
ID0gKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICByb290LnJlbW92ZUNoaWxkKHJvb3QuZmlyc3RDaGlsZCk7CisgICAgICAgIGNhbGxJZkRv
bmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwgcm9vdCk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDAp
OworfSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QodGVzdEZ1
bmNzKSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwv
ZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+
Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZAppbmRleCAwYmZmZTFiYzZkNzFlNWI1OTlkNjJmMmUwZTMwMTliNjg3ODY2
ZDczLi4wYjUyMGE4YmU3MWE1ZGRlZmZlNzhmNGQxNWNmYjhlNzg0NDhjN2U2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvU2tpcHBlZApAQCAtMjA5Miw2ICsyMDkyLDggQEAgZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50
LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJl
bmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9v
dC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRt
bAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBhZDcxZGMwOTFjZTg4YWVkNDViYzg1ZTA3YzdkODQ0ZTZm
Mzg2MWE2Li5mMDFlYTliMjVlZGI5M2EyMzY1YjAxYjc1ZDc5MDEwMDg3Mjg1MjhlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtNDM1LDYgKzQzNSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5u
ZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy11bC1saS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1l
bnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQt
cmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAppbmRleCBmNTY3Mzk2M2EyOTQ5Yzk0NmNlYTdjZjE5M2M0NTBkOTcw
ZmE4ZmNmLi43ZWM2ZmNmNmM0MzE5NDk1ZmQxMGNhZTY3MjM0MTUyMDYyMWRmN2E4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQKQEAgLTE3Myw2ICsxNzMsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlubmVy
SFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50
LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJl
bmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9v
dC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRt
bAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAppbmRleCA0ZTNkMWE1YjdhNDQ3YmJkODUxOWU0OGFkOTRmZTlhMzAy
YTViNGYxLi5mZjY0NWZmOWEzNmQ5NWU4MThkY2JiZTAwMmUwZDgyOTgwNmFiNTg2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ2MSw2ICsxNDYxLDggQEAgZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1p
bm5lckhUTUwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxl
bWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVu
dC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5n
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmluZGV4IDkxZDdkNDRiNGRjYTBkZTQwMGMz
ZTk4MGQ1ZDdiOTU0Y2Q5OWMzNGEuLjc2MWY1NzQ3YjU4N2RhMTRjMWNkYmQ0Y2QzYzg4ODAwOTY4
YWVhZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApAQCAtMTk3NCw2ICsx
OTc0LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJv
b3QtaW5uZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAor
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVs
dGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCAzYTlm
MTQ3M2UzYzAyOGIyNDFlYjU0MjU2NWIxZjAzMGZjMTFkNjM0Li4xNDI0NzM2NTJhNGVlYzU0MmI5
YWVjYmQyODIyZDE5NTlmN2JmYjI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTA3
Miw2ICsxMDcyLDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1pbm5lckhUTUwuaHRtbAogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0
bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwK
K2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAog
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129661</attachid>
            <date>2012-03-01 01:15:51 -0800</date>
            <delta_ts>2012-03-05 00:44:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78596-20120301181550.patch</filename>
            <type>text/plain</type>
            <size>59364</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MzIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzk5NDM5Y2U1ODRkNjkz
ZTQ1MTQyMzY2ZTc0MWQwNWM2ZTdjMGMxOS4uYjdjY2VkMTRiZWQ5ZGMyODdiYTkwNTE1MjAxZDBh
YjRhN2QyNDJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTAzLTAxICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBz
aG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIDxzaGFkb3c+IGVsZW1lbnQg
cmVuZGVyaW5nLgorCisgICAgICAgIFdoZW4gYXR0YWNoaW5nIDxzaGFkb3c+IGVsZW1lbnQsIGl0
IGNhbGN1bGF0ZXMgdGhlIGFzc2lnbmluZyBzaGFkb3cgcm9vdC4gSXQgaXMgYmFzaWNhbGx5Cisg
ICAgICAgIHRoZSBvbGRlciBzaGFkb3cgZWxlbWVudCwgYnV0IGlmIGl0IGlzIGFzc2lnbmVkIHRv
IGFub3RoZXIgPHNoYWRvdz4gZWxlbWVudCwgPHNoYWRvdz4gd29uJ3QKKyAgICAgICAgaGFzIGFu
eSBhc3NpZ25pbmcgc2hhZG93IHJvb3QuCisKKyAgICAgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQg
c3VwcG9ydHMgPHNoYWRvdz4gZWxlbWVudCByZW5kZXJpbmcuIEl0IGlzIHNpbWlsYXIgdG8gPGNv
bnRlbnQ+IGVsZW1lbnQsCisgICAgICAgIGJ1dCBzdXBwb3J0cyByZW5kZXJpbmcgbm9uLXlvdW5n
ZXN0IHNoYWRvdyB0cmVlLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKKworICAgICAgICAq
IGRvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbik6CisgICAgICAgICAgUmV0dXJu
cyB0cnVlIGlmIEluc2VydGlvblBvaW50IHNlbGVjdHMgZWxlbWVudHMgZnJvbSBsaWdodCBjaGls
ZHJlbi4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVy
aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0UmVuZGVyZXJPZik6CisgICAgICAg
IChXZWJDb3JlOjpwcmV2aW91c1JlbmRlcmVyT2YpOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3RS
ZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAgIFJldHVybnMgdGhlIGZpcnN0IHJl
bmRlcmVyIGluIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgIChXZWJDb3JlOjpsYXN0UmVu
ZGVyZXJPZkluc2VydGlvblBvaW50KToKKyAgICAgICAgICBSZXR1cm5zIHRoZSBsYXN0IHJlbmRl
cmVyIGluIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICAgIChXZWJDb3JlOjpmaXJzdFJlbmRl
cmVyT2YpOgorICAgICAgICAgIFJldHVybnMgdGhlIGZpcnN0IHJlbmRlcmVyIG9mIHRoZSBzcGVj
aWZpYyBub2RlLgorICAgICAgICAoV2ViQ29yZTo6bGFzdFJlbmRlcmVyT2YpOgorICAgICAgICAg
IFJldHVybnMgdGhlIGxhc3QgcmVuZGVyZXIgb2YgdGhlIHNwZWNpZmljIG5vZGUuCisgICAgICAg
IChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2aW91c1JlbmRlcmVyKToKKyAgICAg
ICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpT
aGFkb3dSb290KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6
OmRpc3RyaWJ1dGVkVG8pOgorICAgICAgICAgIFJldHVybnMgSFRNTFNoYWRvd0VsZW1lbnQgdG8g
d2hpY2ggdGhpcyBzaGFkb3cgcm9vdCBpcyBkaXN0cmlidXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNoYWRvd1Jvb3Q6OnNldERpc3RyaWJ1dGVkVG8pOgorICAgICAgICAqIGRvbS9TaGFkb3dUcmVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9yKToK
KyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgorICAgICAgICAoU2hhZG93VHJlZSk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OkhUTUxTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxTaGFkb3dFbGVtZW50OjphdHRhY2gpOgorICAgICAgICAgIElmIHRoZSBlbGVtZW50
IGlzIGluIHRoZSBvbGRlc3Qgc2hhZG93IHRyZWUsIGl0IHdpbGwgc2VsZWN0IGVsZW1lbnRzIGZy
b20gbGlnaHQgY2hpbGRyZW4uCisgICAgICAgICAgSWYgdGhlIGVsZW1lbnQgaXMgaW4gbm9uLW9s
ZGVzdCBzaGFkb3cgdHJlZSwgaXQgd2lsbCBzZWxlY3QgYSBvbGRlciBzaGFkb3cgcm9vdCBpZiBp
dCBpcyBub3QgYXNzaWduZWQKKyAgICAgICAgICB0byBhbnkgPHNoYWRvdz4gZWxlbWVudCB5ZXQu
CisgICAgICAgICAgT3RoZXJ3aXNlLCBpdCB3b24ndCBzZWxlY3QgYW55dGhpbmcuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50OjpkZXRhY2gp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OnNlbGVjdCk6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxTaGFkb3dF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50OjpkaXN0cmlidXRl
ZEZyb20pOgorICAgICAgICAgIFJldHVybnMgU2hhZG93Um9vdCB3aGljaCBpcyBkaXN0cmlidXRl
ZCB0byB0aGlzIDxzaGFkb3c+IGVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxTaGFkb3dFbGVtZW50OjpzZXREaXN0cmlidXRlZEZyb20pOgorICAgICAg
ICAoV2ViQ29yZTo6dG9IVE1MU2hhZG93RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cv
SW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OmlzSW5zZXJ0aW9uUG9pbnQpOgor
CiAyMDEyLTAyLTI5ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4gCiAK
ICAgICAgICAgRmFsbGJhY2sgZWxlbWVudHMgaW4gbm9uLXlvdW5nZXN0IHNoYWRvdyB0cmVlIHNo
b3VsZCBub3QgYmUgcmVuZGVyZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmNwcAppbmRleCAwMWRhODZkNTQ3ZTg5NTUzMDE2YWNjZGI4YWVkZGFmMThkMDIyYWM4
Li41NTA5OTI5YmE0ZTQwMDlhMWRmNWVmODc1MzM1M2M0ZTljM2Y4ZDJhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNp
bmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2lu
Y2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgi
CkBAIC00Myw2ICs0NSwyMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZihO
b2RlKik7CitzdGF0aWMgUmVuZGVyT2JqZWN0KiBsYXN0UmVuZGVyZXJPZihOb2RlKik7CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCBzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4oSW5zZXJ0aW9uUG9pbnQq
IGluc2VydGlvblBvaW50KQoreworICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aXNDb250ZW50RWxl
bWVudCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSB0
b1NoYWRvd1Jvb3QoaW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKTsKKyAgICBp
ZiAoIXJvb3QpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiByb290LT5pc09s
ZGVzdCgpOworfQorCiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6Tm9kZVJlbmRlcmluZ0NvbnRleHQo
Tm9kZSogbm9kZSkKICAgICA6IG1fcGhhc2UoQXR0YWNoaW5nTm90SW5UcmVlKQogICAgICwgbV9u
b2RlKG5vZGUpCkBAIC01Niw1MCArNzUsNzQgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVS
ZW5kZXJpbmdDb250ZXh0KE5vZGUqIG5vZGUpCiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChwYXJlbnQtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBXZSBkb24ndCBzdXBwb3J0IDxzaGFkb3c+IHlldCwgc28gdGhlIG5vbi15b3VuZ2VzdCBz
aGFkb3cgd29uJ3QgYmUgcmVuZGVyZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob2RfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAgaWYgKHRvU2hhZG93Um9vdChwYXJl
bnQpLT5pc1lvdW5nZXN0KCkpCi0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hhZG93
Q2hpbGQ7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RE
aXN0cmlidXRlZDsKKyAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSAmJiB0b1NoYWRvd1Jv
b3QocGFyZW50KS0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdT
aGFkb3dDaGlsZDsKICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBw
YXJlbnQtPnNoYWRvd0hvc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChw
YXJlbnQtPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICBpZiAodG9FbGVtZW50KHBhcmVudCkt
Pmhhc1NoYWRvd1Jvb3QoKSkgeworICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSB8fCBw
YXJlbnQtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5v
ZGUoKSAmJiB0b0VsZW1lbnQocGFyZW50KS0+aGFzU2hhZG93Um9vdCgpKQogICAgICAgICAgICAg
bV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1RyZWUo
KTsKLSAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hh
ZG93VHJlZS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAmJiBt
X3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUtPmlzU2VsZWN0b3JBY3RpdmUoKSkgewotCi0gICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUg
bm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSByZW5kZXJlZC4KLSAgICAgICAgICAgICAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Z3MuY2dpP2lkPTc4NTk2Ci0gICAgICAg
ICAgICAgICAgaWYgKHRvU2hhZG93Um9vdChtX2luc2VydGlvblBvaW50LT5zaGFkb3dUcmVlUm9v
dE5vZGUoKSktPmlzWW91bmdlc3QoKSkgewotICAgICAgICAgICAgICAgICAgICBtX3BoYXNlID0g
QXR0YWNoaW5nRGlzdHJpYnV0ZWQ7Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZv
clJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2lu
dCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHBhcmVudC0+aXNT
aGFkb3dSb290KCkpCisgICAgICAgICAgICBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUgPSB0b1No
YWRvd1Jvb3QocGFyZW50KS0+dHJlZSgpOworCisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNo
YWRvd1RyZWUpIHsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVu
dFNoYWRvd1RyZWUtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSk7CisgICAgICAgICAgICBTaGFk
b3dSb290KiBzaGFkb3dUcmVlUm9vdCA9IG1faW5zZXJ0aW9uUG9pbnQgPyB0b1NoYWRvd1Jvb3Qo
bV9pbnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpIDogMDsKKworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgICAgICAgICAgaWYgKHNoYWRvd1RyZWVSb290ICYmIChzaGFkb3dU
cmVlUm9vdC0+aXNZb3VuZ2VzdCgpIHx8IHNoYWRvd1RyZWVSb290LT5kaXN0cmlidXRlZFRvKCkp
KSB7CisgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOworICAg
ICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRl
cmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2ludCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorI2Vsc2UKKyAg
ICAgICAgICAgIGlmIChzaGFkb3dUcmVlUm9vdCAmJiAoc2hhZG93VHJlZVJvb3QtPmlzWW91bmdl
c3QoKSkpIHsKKyAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRGlzdHJpYnV0ZWQ7
CisgICAgICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBOb2Rl
UmVuZGVyaW5nQ29udGV4dChtX2luc2VydGlvblBvaW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5n
QW5kU3R5bGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisjZW5k
aWYKIAogICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkOwogICAg
ICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQ7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaXNTaGFkb3dCb3VuZGFy
eShwYXJlbnQpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hh
ZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgot
ICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWdzLmNnaT9pZD03
ODU5NgotICAgICAgICAgICAgaWYgKCF0b1NoYWRvd1Jvb3QocGFyZW50LT5zaGFkb3dUcmVlUm9v
dE5vZGUoKSktPmlzWW91bmdlc3QoKSkgeworICAgICAgICBpZiAoaXNTaGFkb3dCb3VuZGFyeShw
YXJlbnQpKSAgeworICAgICAgICAgICAgU2hhZG93Um9vdCogc2hhZG93VHJlZVJvb3QgPSB0b1No
YWRvd1Jvb3QocGFyZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSk7CisgICAgICAgICAgICBBU1NF
UlQoc2hhZG93VHJlZVJvb3QpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICAgICAg
aWYgKCEoc2hhZG93VHJlZVJvb3QtPmlzWW91bmdlc3QoKSB8fCBzaGFkb3dUcmVlUm9vdC0+ZGlz
dHJpYnV0ZWRUbygpKSkgewogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RE
aXN0cmlidXRlZDsKICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSA9IHBhcmVudDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhhc1NlbGVjdGlvbigp
KQotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RGYWxsYmFja2VkOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdGYWxsYmFj
a2VkOworI2Vsc2UKKyAgICAgICAgICAgIGlmICghc2hhZG93VHJlZVJvb3QtPmlzWW91bmdlc3Qo
KSkgeworICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZDsK
KyAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVu
dDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAg
ICAgICAgIGlmIChzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4odG9JbnNlcnRpb25Qb2ludChwYXJl
bnQpKSkgeworICAgICAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhh
c1NlbGVjdGlvbigpKQorICAgICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90
RmFsbGJhY2tlZDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG1f
cGhhc2UgPSBBdHRhY2hpbmdGYWxsYmFja2VkOworICAgICAgICAgICAgfSBlbHNlIHsKKyNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKKyAgICAgICAgICAgICAgICBBU1NFUlQocGFyZW50LT5oYXNUYWdO
YW1lKHNoYWRvd1RhZykpOworICAgICAgICAgICAgICAgIFNoYWRvd1Jvb3QqIHJvb3QgPSB0b0hU
TUxTaGFkb3dFbGVtZW50KHBhcmVudCktPmRpc3RyaWJ1dGVkRnJvbSgpOworICAgICAgICAgICAg
ICAgIGlmIChyb290ICYmIHJvb3QtPmZpcnN0Q2hpbGQoKSkKKyAgICAgICAgICAgICAgICAgICAg
bV9waGFzZSA9IEF0dGFjaGluZ05vdEZhbGxiYWNrZWQ7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRmFsbGJhY2tlZDsKKyNlbHNl
CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKKyAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9k
ZVJlbmRlcmluZ0NvbnRleHQocGFyZW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUo
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTM3LDM1ICsxODAsNTMgQEAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnJlbGVhc2VTdHls
ZSgpCiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIG5leHRSZW5kZXJlck9mKEluc2VydGlvblBvaW50
KiBwYXJlbnQsIE5vZGUqIGN1cnJlbnQpCiB7Ci0gICAgSFRNTENvbnRlbnRTZWxlY3Rpb24qIGN1
cnJlbnRTZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+ZmluZChjdXJyZW50KTsKLSAg
ICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCi0gICAgICAgIHJldHVybiAwOworICAgIEFTU0VSVChj
dXJyZW50KTsKIAotICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IGN1
cnJlbnRTZWxlY3Rpb24tPm5leHQoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24t
Pm5leHQoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlv
bi0+bm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAg
IGlmIChzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4ocGFyZW50KSkgeworICAgICAgICBIVE1MQ29u
dGVudFNlbGVjdGlvbiogY3VycmVudFNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5m
aW5kKGN1cnJlbnQpOworICAgICAgICBpZiAoIWN1cnJlbnRTZWxlY3Rpb24pCisgICAgICAgICAg
ICByZXR1cm4gMDsKKworICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rp
b24gPSBjdXJyZW50U2VsZWN0aW9uLT5uZXh0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2Vs
ZWN0aW9uLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHJlbmRlcmVyOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAg
cmV0dXJuIDA7CisgICAgQVNTRVJUKHBhcmVudC0+aGFzVGFnTmFtZShzaGFkb3dUYWcpKTsKKyAg
ICByZXR1cm4gZmlyc3RSZW5kZXJlck9mKGN1cnJlbnQtPm5leHRTaWJsaW5nKCkpOwogfQogCiBz
dGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyT2YoSW5zZXJ0aW9uUG9pbnQqIHBh
cmVudCwgTm9kZSogY3VycmVudCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlciA9
IDA7CisgICAgQVNTRVJUKGN1cnJlbnQpOworCisgICAgaWYgKHNlbGVjdHNGcm9tTGlnaHRDaGls
ZHJlbihwYXJlbnQpKSB7CisgICAgICAgIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyID0gMDsK
KworICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQt
PnNlbGVjdGlvbnMoKS0+Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24t
Pm5leHQoKSkgeworICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi0+bm9kZSgpID09IGN1cnJlbnQp
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAg
IGxhc3RSZW5kZXJlciA9IHJlbmRlcmVyOworICAgICAgICB9CiAKLSAgICBmb3IgKEhUTUxDb250
ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+Zmlyc3QoKTsg
c2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgewotICAgICAgICBpZiAo
c2VsZWN0aW9uLT5ub2RlKCkgPT0gY3VycmVudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJl
cigpKQotICAgICAgICAgICAgbGFzdFJlbmRlcmVyID0gcmVuZGVyZXI7CisgICAgICAgIHJldHVy
biBsYXN0UmVuZGVyZXI7CiAgICAgfQogCi0gICAgcmV0dXJuIGxhc3RSZW5kZXJlcjsKKyAgICBB
U1NFUlQocGFyZW50LT5oYXNUYWdOYW1lKHNoYWRvd1RhZykpOworICAgIHJldHVybiBsYXN0UmVu
ZGVyZXJPZihjdXJyZW50LT5wcmV2aW91c1NpYmxpbmcoKSk7CiB9CiAKLXN0YXRpYyBSZW5kZXJP
YmplY3QqIGZpcnN0UmVuZGVyZXJPZihJbnNlcnRpb25Qb2ludCogcGFyZW50KQorc3RhdGljIFJl
bmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
IHBhcmVudCkKIHsKLSAgICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgeworICAgIGlmIChz
ZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4ocGFyZW50KSkgeworICAgICAgICBpZiAoIXBhcmVudC0+
aGFzU2VsZWN0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4gZmlyc3RSZW5kZXJlck9mKHBhcmVu
dC0+Zmlyc3RDaGlsZCgpKTsKKworCiAgICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24q
IHNlbGVjdGlvbiA9IHBhcmVudC0+c2VsZWN0aW9ucygpLT5maXJzdCgpOyBzZWxlY3Rpb247IHNl
bGVjdGlvbiA9IHNlbGVjdGlvbi0+bmV4dCgpKSB7CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZW5kZXJlcjsKQEAgLTE3NCwyMSArMjM1LDkzIEBAIHN0YXRpYyBSZW5k
ZXJPYmplY3QqIGZpcnN0UmVuZGVyZXJPZihJbnNlcnRpb25Qb2ludCogcGFyZW50KQogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKLSAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0NvbnRleHQocGFy
ZW50KS5uZXh0UmVuZGVyZXIoKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBBU1NFUlQo
cGFyZW50LT5oYXNUYWdOYW1lKHNoYWRvd1RhZykpOworCisgICAgU2hhZG93Um9vdCogcm9vdCA9
IHRvSFRNTFNoYWRvd0VsZW1lbnQocGFyZW50KS0+ZGlzdHJpYnV0ZWRGcm9tKCk7CisgICAgaWYg
KCFyb290IHx8ICFyb290LT5maXJzdENoaWxkKCkpCisgICAgICAgIHJldHVybiBmaXJzdFJlbmRl
cmVyT2YocGFyZW50LT5maXJzdENoaWxkKCkpOworCisgICAgZm9yIChOb2RlKiBjaGlsZCA9IHJv
b3QtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsK
KyAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBjaGlsZC0+cmVuZGVyZXIoKSkK
KyAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICB9CisjZWxzZQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworI2VuZGlmCisKKyAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIFJlbmRl
ck9iamVjdCogbGFzdFJlbmRlcmVyT2YoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCkKK3N0YXRpYyBS
ZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQoSW5zZXJ0aW9uUG9pbnQq
IHBhcmVudCkKIHsKLSAgICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgewotICAgICAgICBm
b3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMo
KS0+bGFzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkg
ewotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5v
ZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAg
aWYgKHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbihwYXJlbnQpKSB7CisgICAgICAgIGlmIChwYXJl
bnQtPmhhc1NlbGVjdGlvbigpKSB7CisgICAgICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0
aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+bGFzdCgpOyBzZWxlY3Rpb247
IHNlbGVjdGlvbiA9IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkgeworICAgICAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBsYXN0UmVuZGVyZXJPZihwYXJlbnQt
Pmxhc3RDaGlsZCgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLnByZXZpb3VzUmVuZGVyZXIo
KTsKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIEFTU0VSVChwYXJlbnQtPmhhc1RhZ05h
bWUoc2hhZG93VGFnKSk7CisKKyAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvSFRNTFNoYWRv
d0VsZW1lbnQocGFyZW50KS0+ZGlzdHJpYnV0ZWRGcm9tKCkpIHsKKyAgICAgICAgZm9yIChOb2Rl
KiBjaGlsZCA9IHJvb3QtPmxhc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+cHJldmlv
dXNTaWJsaW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
Y2hpbGQtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAg
ICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBsYXN0UmVuZGVyZXJPZihwYXJlbnQt
Pmxhc3RDaGlsZCgpKTsKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYK
KworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVy
T2YoTm9kZSogbm9kZSkKK3sKKyAgICBmb3IgKDsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgIC8v
IERvIG5vdCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQg
Zmxvdy10aHJlYWQuCisgICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAm
JiAhbm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJl
cigpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkgJiYg
bm9kZS0+c2hhZG93VHJlZVJvb3ROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIGZpcnN0ID0gZmlyc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQodG9JbnNlcnRpb25Qb2lu
dChub2RlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpcnN0OworICAgICAgICB9CisgICAg
fQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJl
ck9mKE5vZGUqIG5vZGUpCit7CisgICAgZm9yICg7IG5vZGU7IG5vZGUgPSBub2RlLT5wcmV2aW91
c1NpYmxpbmcoKSkgeworICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICAg
ICAgLy8gRG8gbm90IHJldHVybiBlbGVtZW50cyB0aGF0IGFyZSBhdHRhY2hlZCB0byBhIGRpZmZl
cmVudCBmbG93LXRocmVhZC4KKyAgICAgICAgICAgIGlmIChub2RlLT5yZW5kZXJlcigpLT5zdHls
ZSgpICYmICFub2RlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5mbG93VGhyZWFkKCkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJl
bmRlcmVyKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2Rl
KSAmJiBub2RlLT5zaGFkb3dUcmVlUm9vdE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRl
ck9iamVjdCogbGFzdCA9IGxhc3RSZW5kZXJlck9mSW5zZXJ0aW9uUG9pbnQodG9JbnNlcnRpb25Q
b2ludChub2RlKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKQEAgLTIxMSwyMSArMzQ0LDcgQEAgUmVuZGVyT2Jq
ZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICBpZiAo
bV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCkgJiYgIW1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
LT5hdHRhY2hlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGZvciAoTm9kZSogbm9kZSA9
IG1fbm9kZS0+bmV4dFNpYmxpbmcoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5v
dCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10
aHJlYWQuCi0gICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9k
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKLSAgICAg
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZpcnN0ID0gZmlyc3RSZW5kZXJlck9mKHRvSW5zZXJ0
aW9uUG9pbnQobm9kZSkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmaXJzdDsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiAwOworICAgIHJldHVybiBmaXJzdFJlbmRlcmVyT2YobV9u
b2RlLT5uZXh0U2libGluZygpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29u
dGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CkBAIC0yNDYsMjAgKzM2NSw3IEBAIFJlbmRl
ck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6OnByZXZpb3VzUmVuZGVyZXIoKSBjb25zdAog
CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZlIHRoZSBzYW1lIE8oTl4yKSBhdm9pZGFuY2Ug
YXMgbmV4dFJlbmRlcmVyIGRvZXMKICAgICAvLyBob3dldmVyLCB3aGVuIEkgdHJpZWQgYWRkaW5n
IGl0LCBzZXZlcmFsIHRlc3RzIGZhaWxlZC4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX25vZGUt
PnByZXZpb3VzU2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkp
IHsKLSAgICAgICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5v
dCByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgYXR0YWNoZWQgdG8gYSBkaWZmZXJlbnQgZmxvdy10
aHJlYWQuCi0gICAgICAgICAgICBpZiAobm9kZS0+cmVuZGVyZXIoKS0+c3R5bGUoKSAmJiAhbm9k
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxvd1RocmVhZCgpLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwot
ICAgICAgICB9Ci0gICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7Ci0gICAgICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVyT2YodG9JbnNlcnRpb25Q
b2ludChub2RlKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxhc3Q7Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbGFzdFJlbmRlcmVyT2YobV9ub2RlLT5w
cmV2aW91c1NpYmxpbmcoKSk7CiB9CiAKIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnBhcmVudFJlbmRlcmVyKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRl
eCBmNzZjYjIwOTIzZTM3MmFlYzBjMmNlNjdiNjlhMzMwMTc5MmVlYjczLi41NTk5ZWM3NzMyOGUy
MDc4Y2VkOGE2N2FhZTg1ZTA3NjU4MTg3ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CkBAIC01MSw2ICs1MSw5IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgICwgbV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fYXBwbHlBdXRo
b3JTaGVldHMoZmFsc2UpCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBtX3NoYWRvd0Vs
ZW1lbnREaXN0cmlidXRlZFRvKDApCisjZW5kaWYKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggNjRkZGZhODJmOTUyYjI1MjBiZGUyMGYz
YmYxODZjMTFmMTI2Y2JkYi4uODc3NTdkNzM4ZjNlNTViMGRkNTc0ZTU5ZjMyMWRlYjcxYjRlNjhm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwogY2xh
c3MgSFRNTENvbnRlbnRTZWxlY3RvcjsKK2NsYXNzIEhUTUxTaGFkb3dFbGVtZW50OwogY2xhc3Mg
SW5zZXJ0aW9uUG9pbnQ7CiBjbGFzcyBTaGFkb3dUcmVlOwogCkBAIC04MSw2ICs4MiwxMSBAQCBw
dWJsaWM6CiAKICAgICBib29sIGhhc0luc2VydGlvblBvaW50KCkgY29uc3Q7CiAKKyNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKKyAgICBIVE1MU2hhZG93RWxlbWVudCogZGlzdHJpYnV0ZWRUbygpIGNv
bnN0OworICAgIHZvaWQgc2V0RGlzdHJpYnV0ZWRUbyhIVE1MU2hhZG93RWxlbWVudCopOworI2Vu
ZGlmCisKIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwogICAgIHZpcnR1YWwg
flNoYWRvd1Jvb3QoKTsKQEAgLTkyLDggKzk4LDI0IEBAIHByaXZhdGU6CiAgICAgU2hhZG93Um9v
dCogbV9wcmV2OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAgICBib29sIG1fYXBwbHlBdXRo
b3JTaGVldHMgOiAxOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIEhUTUxTaGFkb3dFbGVt
ZW50KiBtX3NoYWRvd0VsZW1lbnREaXN0cmlidXRlZFRvOworI2VuZGlmCiB9OwogCisjaWYgRU5B
QkxFKFNIQURPV19ET00pCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIFNoYWRvd1Jvb3Q6OmRp
c3RyaWJ1dGVkVG8oKSBjb25zdAoreworICAgIHJldHVybiBtX3NoYWRvd0VsZW1lbnREaXN0cmli
dXRlZFRvOworfQorCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpzZXREaXN0cmlidXRlZFRvKEhU
TUxTaGFkb3dFbGVtZW50KiBzaGFkb3dFbGVtZW50KQoreworICAgIEFTU0VSVCghbV9zaGFkb3dF
bGVtZW50RGlzdHJpYnV0ZWRUbyB8fCAhc2hhZG93RWxlbWVudCk7CisgICAgbV9zaGFkb3dFbGVt
ZW50RGlzdHJpYnV0ZWRUbyA9IHNoYWRvd0VsZW1lbnQ7Cit9CisjZW5kaWYKKwogaW5saW5lIGNv
bnN0IFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFT
U0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJl
ZS5jcHAKaW5kZXggMmNjZTk5N2NhNjE3MWNhZDBkMTEwNzBmYjk0MjJmMDY0Yzk4MTU0Yi4uNjE5
ODM3Y2ZlNTkxODgxYjM1OTIyMTVhYTJlMWMwNzk5Zjc2ZWNjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dUcmVlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNs
dWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJT
aGFkb3dSb290LmgiCkBAIC0xOTcsNiArMTk4LDE3IEBAIHZvaWQgU2hhZG93VHJlZTo6ZGV0YWNo
SG9zdChFbGVtZW50KiBob3N0KQogCiBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0
aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobm9kZSAmJiBub2Rl
LT5wYXJlbnROb2RlKCkpOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKG5vZGUt
PnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKEhUTUxTaGFkb3dF
bGVtZW50KiBzaGFkb3dFbGVtZW50ID0gdG9TaGFkb3dSb290KG5vZGUtPnBhcmVudE5vZGUoKSkt
PmRpc3RyaWJ1dGVkVG8oKSkKKyAgICAgICAgICAgIHJldHVybiBzaGFkb3dFbGVtZW50OworCisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgorCiAgICAgaWYgKCFtX3NlbGVjdG9yKQog
ICAgICAgICByZXR1cm4gMDsKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3Nl
bGVjdG9yLT5maW5kRm9yKG5vZGUpOwpAQCAtMjA1LDExICsyMTcsNiBAQCBJbnNlcnRpb25Qb2lu
dCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKICAgICBy
ZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7CiB9CiAKLWJvb2wgU2hhZG93VHJlZTo6aXNT
ZWxlY3RvckFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxl
Y3Rvci0+aGFzQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkK
IHsKICAgICBkZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dU
cmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCmluZGV4IDBlZmJkYjEzNjc0
MzAzZmY2N2E3MWUxMGVjYzU1MWE1YTQ3NTQ4NGYuLjU0YzQxYmJlNDE5ZjVjM2IxMmU3ODY4MmI2
ZDQ5MjI1ZDQ2ZjliOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtODIsOCArODIsNiBA
QCBwdWJsaWM6CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKICAg
ICBIVE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwogCi0gICAgYm9vbCBpc1Nl
bGVjdG9yQWN0aXZlKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgRWxlbWVudCogaG9zdCgpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVu
dC5jcHAKaW5kZXggY2IwMWNkMjFmZTBlMDA5YTVlOGUwMDNhYjliODRiNjhmZGQ0MjkzMC4uOTU0
NzZmMDA1MTJmMzNmNmE1ZGIyYTM2NzBiZDhlODI4YTcxOWY3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcApAQCAtMzUsMTMgKzM1LDE3
IEBACiAjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRlICJTaGFkb3dUcmVlLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRG9jdW1lbnQ7CiAKIGlubGluZSBIVE1MU2hhZG93RWxlbWVudDo6SFRNTFNoYWRv
d0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50
KQotICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgOiBJbnNlcnRpb25Q
b2ludCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICAsIGRpc3RyaWJ1dGVkU2hhZG93Um9vdCgwKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKEhUTUxOYW1lczo6c2hhZG93VGFnKSk7CiB9CkBAIC01
NSw2ICs1OSw2MiBAQCBIVE1MU2hhZG93RWxlbWVudDo6fkhUTUxTaGFkb3dFbGVtZW50KCkKIHsK
IH0KIAordm9pZCBIVE1MU2hhZG93RWxlbWVudDo6YXR0YWNoKCkKK3sKKyAgICBTaGFkb3dSb290
KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKTsKKyAgICBib29sIHNo
YWRvd0Rpc3RyaWJ1dGlvbiA9IGZhbHNlOworCisgICAgaWYgKHJvb3QpIHsKKyAgICAgICAgLy8g
V2hlbiByb290IGlzIHRoZSBvbGRlc3Qgc2hhZG93IHJvb3QsIDxzaGFkb3c+IHNob3VsZCBiZWhh
dmUgbGlrZSA8Y29udGVudD4uCisgICAgICAgIGlmIChyb290LT5pc09sZGVzdCgpKSB7CisgICAg
ICAgICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnRyZWUoKS0+ZW5z
dXJlU2VsZWN0b3IoKTsKKyAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rp
b25zKTsKKyAgICAgICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgJm1fc2VsZWN0aW9ucyk7
CisgICAgICAgIH0gZWxzZSBpZiAoIXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5kaXN0cmlidXRl
ZFRvKCkpIHsKKyAgICAgICAgICAgIHNoYWRvd0Rpc3RyaWJ1dGlvbiA9IHRydWU7CisgICAgICAg
ICAgICBzZXREaXN0cmlidXRlZEZyb20ocm9vdC0+b2xkZXJTaGFkb3dSb290KCkpOworICAgICAg
ICAgICAgcm9vdC0+b2xkZXJTaGFkb3dSb290KCktPnNldERpc3RyaWJ1dGVkVG8odGhpcyk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKCk7CisKKyAgICBp
ZiAocm9vdCkgeworICAgICAgICBpZiAocm9vdC0+aXNPbGRlc3QoKSkgeworICAgICAgICAgICAg
Zm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gbV9zZWxlY3Rpb25zLmZpcnN0
KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpCisgICAgICAgICAg
ICAgICAgc2VsZWN0aW9uLT5ub2RlKCktPmF0dGFjaCgpOworICAgICAgICB9IGVsc2UgaWYgKHNo
YWRvd0Rpc3RyaWJ1dGlvbikgeworICAgICAgICAgICAgQVNTRVJUKCFyb290LT5vbGRlclNoYWRv
d1Jvb3QoKS0+YXR0YWNoZWQoKSk7CisgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3Qo
KS0+YXR0YWNoKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSFRNTFNoYWRvd0VsZW1l
bnQ6OmRldGFjaCgpCit7CisgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qo
c2hhZG93VHJlZVJvb3ROb2RlKCkpKSB7CisgICAgICAgIGlmIChyb290LT5pc09sZGVzdCgpKSB7
CisgICAgICAgICAgICBpZiAoSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT50
cmVlKCktPnNlbGVjdG9yKCkpCisgICAgICAgICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KCZt
X3NlbGVjdGlvbnMpOworICAgICAgICB9IGVsc2UgaWYgKFNoYWRvd1Jvb3QqIGRpc3RyaWJ1dGVk
U2hhZG93Um9vdCA9IGRpc3RyaWJ1dGVkRnJvbSgpKSB7CisgICAgICAgICAgICBkaXN0cmlidXRl
ZFNoYWRvd1Jvb3QtPnNldERpc3RyaWJ1dGVkVG8oMCk7CisgICAgICAgICAgICBzZXREaXN0cmli
dXRlZEZyb20oMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXaGVuIHNoYWRvdyBlbGVtZW50
IGlzIGRldGFjaGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1
bGF0ZSBzZWxlY3RvciBmb3IKKyAgICAgICAgLy8gb3RoZXIgaW5zZXJ0aW9uIHBvaW50cy4KKyAg
ICAgICAgcm9vdC0+dHJlZSgpLT5zZXROZWVkc1JlYXR0YWNoSG9zdENoaWxkcmVuQW5kU2hhZG93
KCk7CisgICAgfQorCisgICAgQVNTRVJUKG1fc2VsZWN0aW9ucy5pc0VtcHR5KCkpOworICAgIElu
c2VydGlvblBvaW50OjpkZXRhY2goKTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MU2hh
ZG93RWxlbWVudDo6c2VsZWN0KCkgY29uc3QKK3sKKyAgICAgcmV0dXJuIG51bGxBdG9tOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4
IDE1MWM3YTJhYmJkNmM1MDU3ODk0M2ZkNmRjY2ZmZjA1YzljOWZmZjcuLjg3NTU5OGEzOGU1NTNj
YTQ4MzVmZDI5ZDBkNjlmOTc3YzQxNjM0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaApAQCAtMzMsMjEgKzMzLDQ5IEBACiAKICNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKIAotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5z
ZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIEhUTUxTaGFkb3dFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsK
K2NsYXNzIEhUTUxTaGFkb3dFbGVtZW50IDogcHVibGljIEluc2VydGlvblBvaW50IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MU2hhZG93RWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB+SFRNTFNoYWRvd0Vs
ZW1lbnQoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoKCk7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCgpIGNvbnN0OworCisg
ICAgU2hhZG93Um9vdCogZGlzdHJpYnV0ZWRGcm9tKCkgY29uc3Q7CisgICAgdm9pZCBzZXREaXN0
cmlidXRlZEZyb20oU2hhZG93Um9vdCopOworCiBwcml2YXRlOgogICAgIEhUTUxTaGFkb3dFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1YWwgYm9vbCBp
c1NoYWRvd0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBTaGFkb3dSb290
KiBkaXN0cmlidXRlZFNoYWRvd1Jvb3Q7CiB9OwogCitpbmxpbmUgU2hhZG93Um9vdCogSFRNTFNo
YWRvd0VsZW1lbnQ6OmRpc3RyaWJ1dGVkRnJvbSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGRpc3Ry
aWJ1dGVkU2hhZG93Um9vdDsKK30KKworaW5saW5lIHZvaWQgSFRNTFNoYWRvd0VsZW1lbnQ6OnNl
dERpc3RyaWJ1dGVkRnJvbShTaGFkb3dSb290KiBzaGFkb3dSb290KQoreworICAgIEFTU0VSVCgh
ZGlzdHJpYnV0ZWRTaGFkb3dSb290IHx8ICFzaGFkb3dSb290KTsKKyAgICBkaXN0cmlidXRlZFNo
YWRvd1Jvb3QgPSBzaGFkb3dSb290OworfQorCitpbmxpbmUgSFRNTFNoYWRvd0VsZW1lbnQqIHRv
SFRNTFNoYWRvd0VsZW1lbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRvd1RhZykpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxIVE1MU2hhZG93RWxlbWVudCo+KG5vZGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IGM0YzFhMmQ1Y2Q3OTYwODk1ZTA0ZDJiZjYz
NmZlOWI2YmZiMTMyZmYuLmM3ZTVmYmM5MTYxMWIzZWI1MGEwN2E5ZGY0OWUwNDAzMjcwZjc0N2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMzMs
NiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTYsMTAgKzU3LDEyIEBAIHByb3Rl
Y3RlZDoKIAogaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQogewotICAg
IC8vIEZJWE1FOiA8c2hhZG93PiBzaG91bGQgYWxzbyBiZSBJbnNlcnRpb25Qb2ludC4KLSAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKICAgICBpZiAo
IW5vZGUgfHwgbm9kZS0+aXNDb250ZW50RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFt
ZXM6OnNoYWRvd1RhZykpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAKICAgICByZXR1
cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggNWVjMzMxZDNiMGM0YzczMDM5OGRiNDFlMzY4YjE5Zjg0Yzg2
ZTY5Ni4uNWZhZTE3Zjk0M2RjNDNiNGJmODMwNzg5NjBkMGExMTJmYWIxMWQ1OSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIxIEBACisyMDEyLTAzLTAxICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBzaG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVy
aW5nLW11bHRpcGxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbDog
QWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jYWlyby9Ta2lw
cGVkOgorICAgICAgICAqIHBsYXRmb3JtL3drMi9Ta2lwcGVkOgorCiAyMDEyLTAyLTI5ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4gCiAKICAgICAgICAgRmFsbGJhY2sg
ZWxlbWVudHMgaW4gbm9uLXlvdW5nZXN0IHNoYWRvdyB0cmVlIHNob3VsZCBub3QgYmUgcmVuZGVy
ZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1l
bnQtcmVuZGVyaW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjVhZGFjMjBmZGYzYWFlZGE2MzAyOWNmNjhkYmI4NTg3NGM5NjI1M2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQt
cmVuZGVyaW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMyIEBACityZW5kZXJp
bmdEb3VibGVTaGFkb3dSb290CitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290V2l0aE9u
ZVNoYWRvd0VsZW1lbnQKK1BBU1MKK3JlbmRlcmluZ1RyaXBsZVNoYWRvd1Jvb3QKK1BBU1MKK3Jl
bmRlcmluZ1R3b1NoYWRvd1Jvb3RzCitQQVNTCit0ZXN0V2l0aERvdWJsZVNoYWRvd1Jvb3RXaXRo
Q29udGVudDEKK1BBU1MKK3Rlc3RXaXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MgorUEFT
UworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5QWRkZWQxCitQQVNTCityZW5k
ZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDIKK1BBU1MKK3JlbmRlcmluZ0Rv
dWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMworUEFTUworcmVuZGVyaW5nRG91YmxlU2hh
ZG93Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDEKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jv
b3REeW5hbWljYWxseVJlbW92ZWQyCitQQVNTCityZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1p
Y2FsbHlBZGRlZAorUEFTUworcmVuZGVyaW5nT2xkZXJTaGFkb3dSb290Q29udGVudER5bmFtaWNh
bGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQK
K1BBU1MKK3JlbmRlcmluZ09sZGVyU2hhZG93Um9vdENvbnRlbnREeW5hbWljYWxseVJlbW92ZWQK
K1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZWRlODE4MTMwYjJkM2E2ZDdlZGNlYzBjY2NjY2QzOWM4MzI1ZjdiCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVt
ZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCkBAIC0wLDAgKzEsNDQ2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+CisvKiByZWxhdGl2ZSBwb3NpdGlvbmluZyBl
bnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8KKy5jb250YWluZXIgeworICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKK30KKworLnNwYW4geworICAgIGRpc3BsYXk6IGJveGVkLWlubGluZTsK
KyAgICBtYXJnaW46IDJweDsKKyAgICBib3JkZXI6IHNvbGlkOworfQorPC9zdHlsZT4KKzxzY3Jp
cHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhZG93LXRlc3QtZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBzZXRVcE9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxl
U2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworfQorCitmdW5jdGlvbiB0ZWFyRG93bk9uY2Uo
KSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKGZhbHNl
KTsKK30KKwordmFyIHRlc3RGdW5jcyA9IFtdOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiBy
ZW5kZXJpbmdEb3VibGVTaGFkb3dSb290KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2
PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bh
bj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAg
IHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGls
ZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rp
b24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdFdpdGhPbmVTaGFkb3dFbGVtZW50KGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9S
RSAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4i
OworCisgICAgLy8gTUlEIHdvbid0IGJlIHJlbmRlcmVkLgorICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScp
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOwor
CisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2Fs
bElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1RyaXBs
ZVNoYWRvd1Jvb3QoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JF
IDM8L3NwYW4+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+IiArCisg
ICAgICAgICI8c3Bhbj5NSUQ8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAxPC9zcGFu
PjxzcGFuPkFGVEVSIDI8L3NwYW4+PHNwYW4+QUZURVIgMzwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAg
ICB2YXIgc3IzID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IzLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDMnKSk7CisgICAgc3IzLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAzJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZE
b25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nVHdvU2hhZG93
Um9vdHMoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3Nw
YW4+IiArCisgICAgICAgICAgICAiPHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFu
PjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICAgICAiPHNwYW4+RkFMTEJBQ0sgMi0y
PC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICB2YXIgc2hhZG93MjEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsK
KyAgICBzaGFkb3cyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLIDIt
MScpKTsKKyAgICB2YXIgc2hhZG93MjIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cn
KTsKKyAgICBzaGFkb3cyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNL
IDItMicpKTsKKworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyMSk7CisgICAgc3IyLmFwcGVuZENo
aWxkKHNoYWRvdzIyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1
bmNzLnB1c2goZnVuY3Rpb24gdGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQxKGNh
bGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5l
cicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFu
Pk1JRCAyPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlE
IDE8L3NwYW4+PHNwYW4+TUlEIDM8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj4iICsKKyAgICAg
ICAgIjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCAzJywgJ3NyMycpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTUlEIDEnLCAnc3IxJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdNSUQgMicsICdzcjInKSk7CisKKyAgICB2YXIgc2hhZG93MSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMScpKTsKKyAgICB2YXIgc3IxID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgdmFyIGNvbnRlbnQxID0gY3JlYXRlQ29udGVudFdp
dGhTZWxlY3QoJy5zcjEnLCAnQ09OVEVOVCBGQUxMQkFDSyAxJyk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGNvbnRlbnQxKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzaGFk
b3cyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93Mi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSyAyJykpOworICAgIHZh
ciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICB2YXIgY29udGVudDsKKyAgICBz
cjIuYXBwZW5kQ2hpbGQoY29udGVudCA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IyJywg
J0NPTlRFTlQgRkFMTEJBQ0sgMicpKTsKKyAgICBjb250ZW50LnRpdGxlID0gImRlYnVnc3RvcCI7
CisgICAgc3IyLmFwcGVuZENoaWxkKHNoYWRvdzIpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUo
KTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiB0ZXN0V2l0aERvdWJsZVNoYWRvd1Jv
b3RXaXRoQ29udGVudDIoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVG
T1JFIDI8L3NwYW4+PHNwYW4+TUlEIDI8L3NwYW4+PHNwYW4+TUlEIDM8L3NwYW4+PHNwYW4+TUlE
IDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5DT05URU5U
IEZBTExCQUNLIDE8L3NwYW4+PHNwYW4+U0hBRE9XIEZBTExCQUNLIDE8L3NwYW4+PHNwYW4+QUZU
RVIgMTwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKwor
ICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAzJywgJ3NyMycpKTsKKyAgICByb290
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDEnLCAnc3IxJykpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMicsICdzcjInKSk7CisKKyAg
ICB2YXIgc2hhZG93MSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNo
YWRvdzEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMScp
KTsKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IxJywgJ0NPTlRFTlQgRkFMTEJBQ0sg
MScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzaGFkb3cyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93Mi5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSyAyJykpOworICAgIHZhciBzcjIgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVu
dFdpdGhTZWxlY3QoJy5zcjInLCAnQ09OVEVOVCBGQUxMQkFDSyAyJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdDT05URU5UIEZBTExCQUNL
IDMnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKHNoYWRvdzIpOworICAgIHNyMi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJ
ZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVT
aGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDEoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxk
aXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9z
cGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisg
ICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQUZURVIgMScpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwt
Y29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihy
b290LCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNyMiA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgICAgICBjYWxsSWZEb25lKCk7
CisgICAgfTt9KShyb290LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9
KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5
bmFtaWNhbGx5QWRkZWQyKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJF
Rk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5B
RlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
IDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7
CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjIsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0
aW9uKCkgeworICAgICAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hh
ZG93Jyk7CisgICAgICAgIHNyMi5pbnNlcnRCZWZvcmUoc2hhZG93LCBzcjIubGFzdENoaWxkKTsK
KworICAgICAgICBjYWxsSWZEb25lKCkKKyAgICB9O30pKHNyMiwgY2FsbElmRG9uZSk7CisKKyAg
ICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRl
cmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMyhjYWxsSWZEb25lKSB7CisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQor
ICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48
c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwv
ZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2
YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IxLCBjYWxs
SWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgICAgICBzcjEuaW5zZXJ0QmVmb3JlKHNo
YWRvdywgc3IxLmxhc3RDaGlsZCk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpCisgICAgfTt9KShz
cjEsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlSZW1v
dmVkMShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1j
b250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bh
bj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisg
ICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIg
ZiA9IChmdW5jdGlvbihzcjIsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICBzcjIucmVtb3ZlQ2hpbGQoc3IyLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcpOworICAgICAg
ICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjIsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGlt
ZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3Vi
bGVTaGFkb3dSb290RHluYW1pY2FsbHlSZW1vdmVkMihjYWxsSWZEb25lKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAg
ICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5B
RlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
IDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsK
KworICAgIHZhciBmID0gKGZ1bmN0aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICAgIHNyMS5yZW1vdmVDaGlsZChzcjEuZmlyc3RDaGlsZC5uZXh0U2libGlu
Zyk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHNyMSwgY2FsbElmRG9uZSk7CisK
KyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJl
bmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVkKGNhbGxJZkRvbmUpIHsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9Cisg
ICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxz
cGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9k
aXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisK
KyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihyb290
LCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgcm9vdC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOwor
ICAgIH07fSkocm9vdCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7
CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ09sZGVyU2hhZG93Um9vdENvbnRl
bnREeW5hbWljYWxseUFkZGVkKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFu
PkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bh
bj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBy
b290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
cm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0dXJu
IGZ1bmN0aW9uKCkgeworICAgICAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdBRlRFUiAxJykpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjEsIGNhbGxJ
ZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChm
dW5jdGlvbiByZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9S
RSAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4i
OworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBy
b290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNy
MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZP
UkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hh
ZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDIn
KSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9u
ZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QucmVtb3ZlQ2hpbGQocm9vdC5m
aXJzdENoaWxkKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkocm9vdCwgY2FsbElm
RG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1
bmN0aW9uIHJlbmRlcmluZ09sZGVyU2hhZG93Um9vdENvbnRlbnREeW5hbWljYWxseVJlbW92ZWQo
Y2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNw
YW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNw
YW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykp
OworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAg
ICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgICAgICBzcjEucmVtb3ZlQ2hpbGQoc3IxLmxhc3RDaGlsZCk7CisgICAgICAgIGNhbGxJ
ZkRvbmUoKTsKKyAgICB9O30pKHNyMSwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYs
IDApOworfSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QodGVz
dEZ1bmNzKSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIi
PjwvZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9k
aXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmlu
Zy1zaW5nbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNiMTBj
Y2JiMDk0NzQ3Yzk1MzcxZmE5MjNiMWJhNGVjMjNiNjQyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmds
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorcmVuZGVyaW5nU2luZ2xlU2hhZG93Um9v
dAorUEFTUworcmVuZGVyaW5nTm90RmFsbGJhY2tlZAorUEFTUworcmVuZGVyaW5nRmFsbGJhY2tl
ZAorUEFTUworcmVuZGVyaW5nTWl4ZWRPZkZhbGxiYWNrQW5kTm9uRmFsbGJhY2sKK1BBU1MKK3Jl
bmRlcmluZ1NoYWRvd1Jvb3RCZWZvcmVDb250ZW50CitQQVNTCityZW5kZXJpbmdTaGFkb3dSb290
QWZ0ZXJDb250ZW50CitQQVNTCityZW5kZXJpbmdTaGFkb3dFbGVtZW50RHluYW1pY2FsbHlBZGRl
ZAorUEFTUworcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5UmVtb3ZlZAorUEFTUwor
cmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ0xp
Z2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQKK1BBU1MKK1RFU1QgQ09NUExFVEVECisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5k
ZXJpbmctc2luZ2xlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVs
ZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0ZTgwNmY5NWExODZjN2Jj
NDYxODA4MDM5ODVjZjE4Yjk3ZDFhMzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCkBAIC0w
LDAgKzEsMjQ0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5bGU+Cisv
KiByZWxhdGl2ZSBwb3NpdGlvbmluZyBlbnN1cmVzIHVuZGVybHlpbmcgUmVuZGVyTGF5ZXIgKi8K
Ky5jb250YWluZXIgeworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKK30KKworLnNwYW4geworICAg
IGRpc3BsYXk6IGJveGVkLWlubGluZTsKKyAgICBtYXJnaW46IDJweDsKKyAgICBib3JkZXI6IHNv
bGlkOworfQorPC9zdHlsZT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvc2hhZG93LXRlc3Qt
ZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZXRVcE9uY2UoKSB7Cisg
ICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hhZG93U3VidHJlZXNFbmFibGVkKHRydWUpOworfQor
CitmdW5jdGlvbiB0ZWFyRG93bk9uY2UoKSB7CisgICAgaW50ZXJuYWxzLnNldE11bHRpcGxlU2hh
ZG93U3VidHJlZXNFbmFibGVkKGZhbHNlKTsKK30KKwordmFyIHRlc3RGdW5jcyA9IFtdOworCit0
ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdTaW5nbGVTaGFkb3dSb290KGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3Nw
YW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAg
IHNyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBz
ci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsK
KyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVy
aW5nTm90RmFsbGJhY2tlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5C
RUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisK
KyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBj
YWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRmFs
bGJhY2tlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVj
dC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3Nw
YW4+PHNwYW4+RkFMTEJBQ0s8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAg
IHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisKKyAgICB2YXIgc2hh
ZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAg
ICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5n
TWl4ZWRPZkZhbGxiYWNrQW5kTm9uRmFsbGJhY2soY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAg
IjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5GQUxMQkFDSyAy
PC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93MSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdGQUxMQkFDSyAxJykpOworICAgIHZhciBzaGFkb3cyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0ZBTExCQUNLIDInKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsK
KyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cxKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cy
KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGls
ZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rp
b24gcmVuZGVyaW5nU2hhZG93Um9vdEJlZm9yZUNvbnRlbnQoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5NIDE8
L3NwYW4+PHNwYW4+Q09OVEVOVCBGQUxMQkFDSzwvc3Bhbj48c3Bhbj5NIDI8L3NwYW4+PHNwYW4+
QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cn
KTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFM
TEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J00gMScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3Bh
bicsICdDT05URU5UIEZBTExCQUNLJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTSAyJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdTaGFkb3dSb290QWZ0ZXJDb250ZW50KGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3Nw
YW4+PHNwYW4+TSAxPC9zcGFuPjxzcGFuPlNIQURPVyBGQUxMQkFDSzwvc3Bhbj48c3Bhbj5NIDI8
L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdTSEFET1cgRkFMTEJBQ0snKSk7CisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7
CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnQ09O
VEVOVCBGQUxMQkFDSycpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J00gMScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTSAyJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30p
OworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdTaGFkb3dFbGVtZW50RHluYW1p
Y2FsbHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8
L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiIKKworICAgIHZh
ciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgdmFyIHNyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQnKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicp
LmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oY2FsbElmRG9uZSwg
cm9vdCwgc3IpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2hhZG93ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgICAgIHNyLmFwcGVuZENoaWxkKHNo
YWRvdyk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwgcm9vdCwg
c3IpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5j
dGlvbiByZW5kZXJpbmdTaGFkb3dFbGVtZW50RHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRvbmUp
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVy
SFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bh
bj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSE9VTEQgTk9UIEJF
IFJFTkRFUkVEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3Iu
YXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250
YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKGNhbGxJ
ZkRvbmUsIHNyLCBzaGFkb3cpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBzci5yZW1v
dmVDaGlsZChzaGFkb3cpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRv
bmUsIHNyLCBzaGFkb3cpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlBZGRlZChj
YWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+
TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiIKKworICAgIHZhciByb290ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsK
KworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5k
Q2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCcpKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH19KShjYWxsSWZE
b25lLCByb290KTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1
c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5UmVtb3ZlZChjYWxs
SWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlE
PC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiIKKworICAgIHZhciByb290ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ1NIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBm
ID0gKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICByb290LnJlbW92ZUNoaWxkKHJvb3QuZmlyc3RDaGlsZCk7CisgICAgICAgIGNhbGxJZkRv
bmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwgcm9vdCk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDAp
OworfSk7CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJkb1Rlc3QodGVzdEZ1
bmNzKSI+CisKKzxkaXYgaWQ9ImFjdHVhbC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwv
ZGl2PgorPGRpdiBpZD0iZXhwZWN0LWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+
Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvU2tpcHBlZAppbmRleCAwYmZmZTFiYzZkNzFlNWI1OTlkNjJmMmUwZTMwMTliNjg3ODY2
ZDczLi4wYjUyMGE4YmU3MWE1ZGRlZmZlNzhmNGQxNWNmYjhlNzg0NDhjN2U2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9lZmwvU2tpcHBlZApAQCAtMjA5Miw2ICsyMDkyLDggQEAgZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LWpzLWFwaS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50
LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJl
bmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9v
dC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRt
bAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZAppbmRleCBhZDcxZGMwOTFjZTg4YWVkNDViYzg1ZTA3YzdkODQ0ZTZm
Mzg2MWE2Li5mMDFlYTliMjVlZGI5M2EyMzY1YjAxYjc1ZDc5MDEwMDg3Mjg1MjhlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtNDM1LDYgKzQzNSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5u
ZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy11bC1saS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1l
bnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQt
cmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAppbmRleCBmNTY3Mzk2M2EyOTQ5Yzk0NmNlYTdjZjE5M2M0NTBkOTcw
ZmE4ZmNmLi43ZWM2ZmNmNmM0MzE5NDk1ZmQxMGNhZTY3MjM0MTUyMDYyMWRmN2E4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3F0L1NraXBwZWQKQEAgLTE3Myw2ICsxNzMsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlubmVy
SFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50
LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJl
bmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9v
dC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRt
bAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAppbmRleCA0ZTNkMWE1YjdhNDQ3YmJkODUxOWU0OGFkOTRmZTlhMzAy
YTViNGYxLi5mZjY0NWZmOWEzNmQ5NWU4MThkY2JiZTAwMmUwZDgyOTgwNmFiNTg2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ2MSw2ICsxNDYxLDggQEAgZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1p
bm5lckhUTUwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxl
bWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVu
dC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5n
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmluZGV4IDkxZDdkNDRiNGRjYTBkZTQwMGMz
ZTk4MGQ1ZDdiOTU0Y2Q5OWMzNGEuLjc2MWY1NzQ3YjU4N2RhMTRjMWNkYmQ0Y2QzYzg4ODAwOTY4
YWVhZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApAQCAtMTk3NCw2ICsx
OTc0LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kaXNhYmxlLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJv
b3QtaW5uZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAor
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVs
dGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCAzYTlm
MTQ3M2UzYzAyOGIyNDFlYjU0MjU2NWIxZjAzMGZjMTFkNjM0Li4xNDI0NzM2NTJhNGVlYzU0MmI5
YWVjYmQyODIyZDE5NTlmN2JmYjI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
azIvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTA3
Miw2ICsxMDcyLDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1pbm5lckhUTUwuaHRtbAogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0
bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwK
K2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAog
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130067</attachid>
            <date>2012-03-05 00:44:41 -0800</date>
            <delta_ts>2012-03-06 23:11:41 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-78596-20120305174436.patch</filename>
            <type>text/plain</type>
            <size>47424</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMDYwM2M3YTlkZmJkOWY4NGNmOWE2ZGU5ZWYxYmFjZjBh
ODE3YmI3Li43NmEwNzI0YmNmNmNkYTgxNTg5YTVkOTljY2RjYzQwMGEzYmUxYzhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDgg
QEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5o
IgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2Ny
ZWVuLmgiCkBAIC00Myw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKKwogc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJl
ck9mKE5vZGUqKTsKIHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKE5vZGUqKTsK
IApAQCAtNTksMjYgKzYzLDIxIEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5n
Q29udGV4dChOb2RlKiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAvLyBGSVhNRTogV2Ug
ZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdv
bid0IGJlIHJlbmRlcmVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG9k
X2J1Z3MuY2dpP2lkPTc4NTk2Ci0gICAgICAgIGlmICh0b1NoYWRvd1Jvb3QocGFyZW50KS0+aXNZ
b3VuZ2VzdCgpKQotICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRvd0NoaWxkOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlzdHJpYnV0
ZWQ7CisgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFkb3dSb290KHBhcmVu
dCktPmlzWW91bmdlc3QoKSkgeworICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hhZG93Q2hp
bGQ7CiAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5z
aGFkb3dIb3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocGFyZW50LT5p
c0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKHRvRWxlbWVudChwYXJlbnQpLT5oYXNTaGFk
b3dSb290KCkpIHsKKyAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgfHwgcGFyZW50LT5p
c1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgJiYg
dG9FbGVtZW50KHBhcmVudCktPmhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIG1fdmlzdWFs
UGFyZW50U2hhZG93VHJlZSA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dUcmVlKCk7Ci0gICAg
ICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUt
Pmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCi0gICAgICAgICAgICAgICAgJiYgbV92aXN1YWxQ
YXJlbnRTaGFkb3dUcmVlLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKKyAgICAgICAgZWxzZSBpZiAo
cGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93
VHJlZSA9IHRvU2hhZG93Um9vdChwYXJlbnQpLT50cmVlKCk7CiAKLSAgICAgICAgICAgICAgICAv
LyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdl
c3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAgICAgICAgICBp
ZiAodG9TaGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKS0+
aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUpIHsK
KyAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hhZG93
VHJlZS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
dG9TaGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKS0+aXNV
c2VkRm9yUmVuZGVyaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFj
aGluZ0Rpc3RyaWJ1dGVkOwogICAgICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5k
ZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLnBh
cmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC05MSw5ICs5MCw3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5n
Q29udGV4dChOb2RlKiBub2RlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzU2hhZG93Qm91
bmRhcnkocGFyZW50KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQg
PHNoYWRvdz4geWV0LCBzbyB0aGUgbm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSByZW5kZXJl
ZC4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVncy5jZ2k/
aWQ9Nzg1OTYKLSAgICAgICAgICAgIGlmICghdG9TaGFkb3dSb290KHBhcmVudC0+c2hhZG93VHJl
ZVJvb3ROb2RlKCkpLT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgIGlmICghdG9TaGFkb3dS
b290KHBhcmVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc1VzZWRGb3JSZW5kZXJpbmcoKSkg
ewogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZDsKICAg
ICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudDsK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjIsNiArMjE5LDcgQEAgc3RhdGljIGlubGlu
ZSBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAg
ICAgfQorCiAgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CiAgICAgICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVyT2ZJbnNlcnRpb25Qb2ludCh0
b0luc2VydGlvblBvaW50KG5vZGUpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCAyODBkYjExNGUwNTQwMzFmMmVlNzk2YmQ4NDRi
OTM0ZjQyMWRlNDIxLi43YTk3MWQ1ZmI1MGFhYWNmNDY1NWY0MGYzNjMzZmVkMGUzN2QxOTI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01Miw2ICs1Miw3IEBAIFNoYWRvd1Jvb3Q6
OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9wcmV2KDApCiAgICAgLCBt
X25leHQoMCkKICAgICAsIG1fYXBwbHlBdXRob3JTaGVldHMoZmFsc2UpCisgICAgLCBtX2luc2Vy
dGlvblBvaW50QXNzaWduZWRUbygwKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCAzZGYyOGM2YTRiNTU5ZTVhNWExNjg0YjM5ZTM4YTRj
YzgyNjY0NjZiLi5hY2E1ZWVjMDcyODYyZDI1NDJhZGFjNWUxZDY4NTJlYjc0YjNiZDQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTgzLDYgKzgzLDExIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKTsKIAorICAgIGJvb2wgaXNVc2VkRm9yUmVuZGVyaW5nKCkgY29u
c3Q7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkVG8oKSBjb25zdDsKKyAgICB2b2lkIHNl
dEFzc2lnbmVkVG8oSW5zZXJ0aW9uUG9pbnQqKTsKKworCiBwcml2YXRlOgogICAgIFNoYWRvd1Jv
b3QoRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CkBAIC05NCw4ICs5OSwy
NiBAQCBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3QqIG1fcHJldjsKICAgICBTaGFkb3dSb290KiBt
X25leHQ7CiAgICAgYm9vbCBtX2FwcGx5QXV0aG9yU2hlZXRzIDogMTsKKyAgICBJbnNlcnRpb25Q
b2ludCogbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87CiB9OwogCitpbmxpbmUgSW5zZXJ0aW9u
UG9pbnQqIFNoYWRvd1Jvb3Q6OmFzc2lnbmVkVG8oKSBjb25zdAoreworICAgIHJldHVybiBtX2lu
c2VydGlvblBvaW50QXNzaWduZWRUbzsKK30KKworaW5saW5lIHZvaWQgU2hhZG93Um9vdDo6c2V0
QXNzaWduZWRUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpCit7CisgICAgQVNTRVJU
KCFtX2luc2VydGlvblBvaW50QXNzaWduZWRUbyB8fCAhaW5zZXJ0aW9uUG9pbnQpOworICAgIG1f
aW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvID0gaW5zZXJ0aW9uUG9pbnQ7Cit9CisKKworaW5saW5l
IGJvb2wgU2hhZG93Um9vdDo6aXNVc2VkRm9yUmVuZGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gaXNZb3VuZ2VzdCgpIHx8IGFzc2lnbmVkVG8oKTsKK30KKwogaW5saW5lIGNvbnN0IFNoYWRv
d1Jvb3QqIHRvU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlKQogewogICAgIEFTU0VSVCghbm9k
ZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5k
ZXggYmVlMzcyZjc4ZTc2Nzc3OTAxMGEyZmNjNDc3NzYxMDI1MzE1ZTE5Yi4uYTIyNTExMTYwYWIx
MjBjODk2MDkxYzg0NjYzZWNjMDk2ODg0NTY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJIVE1M
U2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290
LmgiCkBAIC0xOTgsNiArMTk5LDE1IEBAIHZvaWQgU2hhZG93VHJlZTo6ZGV0YWNoSG9zdChFbGVt
ZW50KiBob3N0KQogCiBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRG
b3IoTm9kZSogbm9kZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobm9kZSAmJiBub2RlLT5wYXJlbnRO
b2RlKCkpOworCisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsK
KyAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHRvU2hhZG93Um9v
dChub2RlLT5wYXJlbnROb2RlKCkpLT5hc3NpZ25lZFRvKCkpCisgICAgICAgICAgICByZXR1cm4g
aW5zZXJ0aW9uUG9pbnQ7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCFt
X3NlbGVjdG9yKQogICAgICAgICByZXR1cm4gMDsKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbiog
Zm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOwpAQCAtMjA2LDExICsyMTYsNiBAQCBJ
bnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkg
Y29uc3QKICAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7CiB9CiAKLWJvb2wgU2hh
ZG93VHJlZTo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0
b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwotfQotCiB2b2lkIFNoYWRvd1RyZWU6
OnJlYXR0YWNoKCkKIHsKICAgICBkZXRhY2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCmluZGV4
IDBlZmJkYjEzNjc0MzAzZmY2N2E3MWUxMGVjYzU1MWE1YTQ3NTQ4NGYuLjU0YzQxYmJlNDE5ZjVj
M2IxMmU3ODY4MmI2ZDQ5MjI1ZDQ2ZjliOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApAQCAt
ODIsOCArODIsNiBAQCBwdWJsaWM6CiAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3Io
KSBjb25zdDsKICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwogCi0g
ICAgYm9vbCBpc1NlbGVjdG9yQWN0aXZlKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgRWxlbWVu
dCogaG9zdCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxD
b250ZW50RWxlbWVudC5oCmluZGV4IGRjNjNmMTFlN2U1NDg0MWI2Y2VjNDEyNzljZTc0OGYwZGMw
MTFiNWEuLmM2ZjY5NWQ0NjIxNzM2NzhhOWRjYmVjNWE3NjAwZjM2OWVlOThiNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCkBAIC01NCw2
ICs1NCw4IEBAIHB1YmxpYzoKICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc2MjYxCiAgICAgdm9pZCBzZXRTZWxlY3QoY29uc3QgQXRvbWljU3RyaW5n
Jik7CiAKKyAgICBib29sIHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFZhbGlkKCkgY29uc3Q7CiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFk
b3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVt
ZW50LmNwcAppbmRleCBjYjAxY2QyMWZlMGUwMDlhNWU4ZTAwM2FiOWI4NGI2OGZkZDQyOTMwLi44
ODUyMzRiMjAyZTBjOWM4ODA1ODE0OTJkNjZkMDhmMzIzZGQzYTRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCkBAIC0yOSwxOSArMjks
MTggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKLQogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWlj
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CiAKIGlu
bGluZSBIVE1MU2hhZG93RWxlbWVudDo6SFRNTFNoYWRvd0VsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCisgICAgOiBJbnNlcnRpb25Qb2ludCh0YWdOYW1lLCBkb2N1bWVudCkK
IHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRvd1RhZykpOwogfQpAQCAt
NTUsNiArNTQsMTYgQEAgSFRNTFNoYWRvd0VsZW1lbnQ6On5IVE1MU2hhZG93RWxlbWVudCgpCiB7
CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK2NvbnN0IEF0b21pY1N0cmluZyYgSFRNTFNo
YWRvd0VsZW1lbnQ6OnNlbGVjdCgpIGNvbnN0Cit7CisgICAgIHJldHVybiBudWxsQXRvbTsKK30K
IAotI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorYm9vbCBIVE1MU2hhZG93RWxlbWVudDo6
c2VsZWN0c0Zyb21MaWdodENoaWxkcmVuKCkgY29uc3QKK3sKKyAgICBpZiAoU2hhZG93Um9vdCog
cm9vdCA9IHRvU2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpCisgICAgICAgIHJldHVy
biByb290LT5pc09sZGVzdCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVt
ZW50LmgKaW5kZXggMTUxYzdhMmFiYmQ2YzUwNTc4OTQzZmQ2ZGNjZmZmMDVjOWM5ZmZmNy4uYjAz
NWRkYWZmMDM2YTVjMmQwYmE4NzEzMDcyYjJmZDc3ZDZkZDZjNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCkBAIC0zMSwyNSArMzEsMzEgQEAK
ICNpZm5kZWYgSFRNTFNoYWRvd0VsZW1lbnRfaAogI2RlZmluZSBIVE1MU2hhZG93RWxlbWVudF9o
CiAKLSNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLQotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisj
aW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEhUTUxTaGFkb3dFbGVtZW50IDogcHVibGljIEhU
TUxFbGVtZW50IHsKK2NsYXNzIEhUTUxTaGFkb3dFbGVtZW50IDogcHVibGljIEluc2VydGlvblBv
aW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MU2hhZG93RWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB+
SFRNTFNoYWRvd0VsZW1lbnQoKTsKIAorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0KCkg
Y29uc3Q7CisgICAgYm9vbCBzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4oKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBIVE1MU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTaGFkb3dFbGVtZW50KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogfTsKIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoraW5saW5lIEhUTUxTaGFkb3dF
bGVtZW50KiB0b0hUTUxTaGFkb3dFbGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFu
b2RlIHx8IG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpzaGFkb3dUYWcpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SFRNTFNoYWRvd0VsZW1lbnQqPihub2RlKTsKK30KIAotI2VuZGlmIC8v
IEVOQUJMRShTSEFET1dfRE9NKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
SFRNTFNoYWRvd0VsZW1lbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuY3BwCmluZGV4IDM2NTY5NWQxYWQ0YWM2OTRlNGU4ODNlZThkMTM0ZDA2YWViM2My
YzkuLmI5Y2IxMjYzYzY4ZTFjMTE1OWY2ZWU2MTRlOTI0NWVhZGIyYjdkOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHAKQEAgLTM5LDYgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlvblBvaW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhU
TUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV9zZWxlY3Rpb25zKCkKKyAgICAs
IHNoYWRvd1Jvb3RBc3NpZ25lZEZyb20oMCkKIHsKIH0KIApAQCAtNDksMjYgKzUwLDQ4IEBAIElu
c2VydGlvblBvaW50Ojp+SW5zZXJ0aW9uUG9pbnQoKQogdm9pZCBJbnNlcnRpb25Qb2ludDo6YXR0
YWNoKCkKIHsKICAgICBTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVS
b290Tm9kZSgpKTsKKyAgICBib29sIGRpZFNoYWRvd0Fzc2lnbm1lbnQgPSBmYWxzZTsKIAogICAg
IGlmIChyb290KSB7Ci0gICAgICAgIEhUTUxDb250ZW50U2VsZWN0b3IqIHNlbGVjdG9yID0gcm9v
dC0+dHJlZSgpLT5lbnN1cmVTZWxlY3RvcigpOwotICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3Qo
Jm1fc2VsZWN0aW9ucyk7Ci0gICAgICAgIHNlbGVjdG9yLT5zZWxlY3QodGhpcywgJm1fc2VsZWN0
aW9ucyk7CisgICAgICAgIGlmIChzZWxlY3RzRnJvbUxpZ2h0Q2hpbGRyZW4oKSkgeworICAgICAg
ICAgICAgSFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT50cmVlKCktPmVuc3Vy
ZVNlbGVjdG9yKCk7CisgICAgICAgICAgICBzZWxlY3Rvci0+dW5zZWxlY3QoJm1fc2VsZWN0aW9u
cyk7CisgICAgICAgICAgICBzZWxlY3Rvci0+c2VsZWN0KHRoaXMsICZtX3NlbGVjdGlvbnMpOwor
ICAgICAgICB9IGVsc2UgaWYgKCFyb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXNzaWduZWRUbygp
KSB7CisgICAgICAgICAgICBkaWRTaGFkb3dBc3NpZ25tZW50ID0gdHJ1ZTsKKyAgICAgICAgICAg
IHNldEFzc2lnbmVkRnJvbShyb290LT5vbGRlclNoYWRvd1Jvb3QoKSk7CisgICAgICAgICAgICBy
b290LT5vbGRlclNoYWRvd1Jvb3QoKS0+c2V0QXNzaWduZWRUbyh0aGlzKTsKKworICAgICAgICAg
ICAgbV9zZWxlY3Rpb25zLmNsZWFyKCk7CisgICAgICAgICAgICBzZWxlY3RGcm9tU2hhZG93Um9v
dChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBIVE1M
RWxlbWVudDo6YXR0YWNoKCk7CiAKICAgICBpZiAocm9vdCkgewotICAgICAgICBmb3IgKEhUTUxD
b250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBtX3NlbGVjdGlvbnMuZmlyc3QoKTsgc2VsZWN0
aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkKLSAgICAgICAgICAgIHNlbGVjdGlv
bi0+bm9kZSgpLT5hdHRhY2goKTsKKyAgICAgICAgaWYgKHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJl
bigpKSB7CisgICAgICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24g
PSBtX3NlbGVjdGlvbnMuZmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24t
Pm5leHQoKSkKKyAgICAgICAgICAgICAgICBzZWxlY3Rpb24tPm5vZGUoKS0+YXR0YWNoKCk7Cisg
ICAgICAgIH0gZWxzZSBpZiAoZGlkU2hhZG93QXNzaWdubWVudCkgeworICAgICAgICAgICAgQVNT
RVJUKCFyb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoZWQoKSk7CisgICAgICAgICAgICBy
b290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoKCk7CisgICAgICAgIH0KICAgICB9CiB9CiAK
IHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCgpCiB7CiAgICAgaWYgKFNoYWRvd1Jvb3QqIHJv
b3QgPSB0b1NoYWRvd1Jvb3Qoc2hhZG93VHJlZVJvb3ROb2RlKCkpKSB7Ci0gICAgICAgIGlmIChI
VE1MQ29udGVudFNlbGVjdG9yKiBzZWxlY3RvciA9IHJvb3QtPnRyZWUoKS0+c2VsZWN0b3IoKSkK
LSAgICAgICAgICAgIHNlbGVjdG9yLT51bnNlbGVjdCgmbV9zZWxlY3Rpb25zKTsKKyAgICAgICAg
aWYgKHNlbGVjdHNGcm9tTGlnaHRDaGlsZHJlbigpKSB7CisgICAgICAgICAgICBpZiAoSFRNTENv
bnRlbnRTZWxlY3Rvciogc2VsZWN0b3IgPSByb290LT50cmVlKCktPnNlbGVjdG9yKCkpCisgICAg
ICAgICAgICAgICAgc2VsZWN0b3ItPnVuc2VsZWN0KCZtX3NlbGVjdGlvbnMpOworICAgICAgICB9
IGVsc2UgaWYgKFNoYWRvd1Jvb3QqIGFzc2lnbmVkU2hhZG93Um9vdCA9IGFzc2lnbmVkRnJvbSgp
KSB7CisgICAgICAgICAgICBhc3NpZ25lZFNoYWRvd1Jvb3QtPnNldEFzc2lnbmVkVG8oMCk7Cisg
ICAgICAgICAgICBzZXRBc3NpZ25lZEZyb20oMCk7CisKKyAgICAgICAgICAgIG1fc2VsZWN0aW9u
cy5jbGVhcigpOworICAgICAgICB9CiAKICAgICAgICAgLy8gV2hlbiBzaGFkb3cgZWxlbWVudCBp
cyBkZXRhY2hlZCwgc2hhZG93IHRyZWUgc2hvdWxkIGJlIHJlY3JlYXRlZCB0byByZS1jYWxjdWxh
dGUgc2VsZWN0b3IgZm9yCiAgICAgICAgIC8vIG90aGVyIGluc2VydGlvbiBwb2ludHMuCkBAIC05
MSw0ICsxMTQsMTMgQEAgYm9vbCBJbnNlcnRpb25Qb2ludDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBOb2RlUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCkKICAgICByZXR1cm4gIWlzU2hhZG93Qm91
bmRhcnkoKSAmJiBIVE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb250ZXh0KTsKIH0KIAor
dm9pZCBJbnNlcnRpb25Qb2ludDo6c2VsZWN0RnJvbVNoYWRvd1Jvb3QoU2hhZG93Um9vdCogc2hh
ZG93Um9vdCkKK3sKKyAgICBBU1NFUlQobV9zZWxlY3Rpb25zLmlzRW1wdHkoKSk7CisgICAgQVNT
RVJUKHNoYWRvd1Jvb3QpOworCisgICAgZm9yIChOb2RlKiBub2RlID0gc2hhZG93Um9vdC0+Zmly
c3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbV9z
ZWxlY3Rpb25zLmFwcGVuZChIVE1MQ29udGVudFNlbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIG5vZGUp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggMzIyOGFkZWY1MDQ0YzJkNGIwNmQ1NzUyNDE3OTI0
ZDg2MDNkNzBmZS4uOGYzZThhZDVjMDQzOTVlYzNmZjYyMmNiZTU2MTU0NTI0ZDUzNGU2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Niw2ICs0NywxMyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYgc2VsZWN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZWxlY3Rz
RnJvbUxpZ2h0Q2hpbGRyZW4oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
KCk7CisgICAgdmlydHVhbCB2b2lkIGRldGFjaCgpOworCisgICAgU2hhZG93Um9vdCogYXNzaWdu
ZWRGcm9tKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBc3NpZ25lZEZyb20oU2hhZG93Um9vdCopOwog
CiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsK
QEAgLTU0LDE1ICs2MiwxOCBAQCBwcm90ZWN0ZWQ6CiAgICAgSW5zZXJ0aW9uUG9pbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNO
ZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmKSBPVkVSUklERTsKIAorICAgIHZvaWQg
c2VsZWN0RnJvbVNoYWRvd1Jvb3QoU2hhZG93Um9vdCopOworCiAgICAgSFRNTENvbnRlbnRTZWxl
Y3Rpb25MaXN0IG1fc2VsZWN0aW9uczsKKyAgICBTaGFkb3dSb290KiBzaGFkb3dSb290QXNzaWdu
ZWRGcm9tOwogfTsKIAogaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQog
ewotICAgIC8vIEZJWE1FOiA8c2hhZG93PiBzaG91bGQgYWxzbyBiZSBJbnNlcnRpb25Qb2ludC4K
LSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKICAg
ICBpZiAoIW5vZGUgfHwgbm9kZS0+aXNDb250ZW50RWxlbWVudCgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRvd1RhZykpCisg
ICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtODAsNiArOTEs
MTggQEAgaW5saW5lIGJvb2wgaXNTaGFkb3dCb3VuZGFyeShOb2RlKiBub2RlKQogICAgIHJldHVy
biB0b0luc2VydGlvblBvaW50KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7CiB9CiAKK2lubGlu
ZSBTaGFkb3dSb290KiBJbnNlcnRpb25Qb2ludDo6YXNzaWduZWRGcm9tKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gc2hhZG93Um9vdEFzc2lnbmVkRnJvbTsKK30KKworaW5saW5lIHZvaWQgSW5zZXJ0
aW9uUG9pbnQ6OnNldEFzc2lnbmVkRnJvbShTaGFkb3dSb290KiBzaGFkb3dSb290KQoreworICAg
IEFTU0VSVCghc2hhZG93Um9vdEFzc2lnbmVkRnJvbSB8fCAhc2hhZG93Um9vdCk7CisgICAgc2hh
ZG93Um9vdEFzc2lnbmVkRnJvbSA9IHNoYWRvd1Jvb3Q7Cit9CisKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQt
cmVuZGVyaW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWRhYzIwZmRmM2Fh
ZWRhNjMwMjljZjY4ZGJiODU4NzRjOTYyNTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdAorUEFT
UworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdFdpdGhPbmVTaGFkb3dFbGVtZW50CitQQVNTCity
ZW5kZXJpbmdUcmlwbGVTaGFkb3dSb290CitQQVNTCityZW5kZXJpbmdUd29TaGFkb3dSb290cwor
UEFTUwordGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQxCitQQVNTCit0ZXN0V2l0
aERvdWJsZVNoYWRvd1Jvb3RXaXRoQ29udGVudDIKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRv
d1Jvb3REeW5hbWljYWxseUFkZGVkMQorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5
bmFtaWNhbGx5QWRkZWQyCitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2Fs
bHlBZGRlZDMKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseVJlbW92
ZWQxCitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlSZW1vdmVkMgor
UEFTUworcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRl
cmluZ09sZGVyU2hhZG93Um9vdENvbnRlbnREeW5hbWljYWxseUFkZGVkCitQQVNTCityZW5kZXJp
bmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCityZW5kZXJpbmdPbGRlclNo
YWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCitURVNUIENPTVBMRVRFRAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQt
cmVuZGVyaW5nLW11bHRpcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVkZTgxODEz
MGIyZDNhNmQ3ZWRjZWMwY2NjY2NkMzljODMyNWY3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUu
aHRtbApAQCAtMCwwICsxLDQ0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRl
ckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5z
cGFuIHsKKyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAg
Ym9yZGVyOiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3No
YWRvdy10ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBP
bmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0
cnVlKTsKK30KKworZnVuY3Rpb24gdGVhckRvd25PbmNlKCkgeworICAgIGludGVybmFscy5zZXRN
dWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3Mg
PSBbXTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9v
dChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48
c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48
c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAg
ICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAg
dmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9u
ZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRv
d1Jvb3RXaXRoT25lU2hhZG93RWxlbWVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRp
dj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5BRlRFUiAx
PC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIC8vIE1JRCB3b24ndCBi
ZSByZW5kZXJlZC4KKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAg
ICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRh
aW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0
RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdUcmlwbGVTaGFkb3dSb290KGNhbGxJZkRvbmUp
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVy
SFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAzPC9zcGFuPjxzcGFuPkJFRk9SRSAy
PC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+TUlEPC9zcGFu
PiIgKworICAgICAgICAiPHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjxz
cGFuPkFGVEVSIDM8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAg
ICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2
YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgdmFyIHNyMyA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0JFRk9SRSAzJykpOworICAgIHNyMy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzaGFkb3cnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZU
RVIgMycpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5j
cy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1R3b1NoYWRvd1Jvb3RzKGNhbGxJZkRvbmUpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPiIgKworICAgICAgICAgICAgIjxz
cGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPiIg
KworICAgICAgICAgICAgIjxzcGFuPkZBTExCQUNLIDItMjwvc3Bhbj4iICsKKyAgICAgICAgIjxz
cGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAg
ICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2
YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgdmFyIHNoYWRvdzIxID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyLTEnKSk7CisgICAgdmFyIHNoYWRvdzIy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyLTInKSk7CisKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoc2hhZG93MjEpOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyMik7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7
CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RX
aXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAg
ICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5NSUQgMjwvc3Bhbj4iICsKKyAgICAg
ICAgIjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRCAxPC9zcGFuPjxzcGFuPk1JRCAzPC9z
cGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFu
PjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMycsICdzcjMn
KSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAxJywgJ3Ny
MScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDInLCAn
c3IyJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9X
IEZBTExCQUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOwor
ICAgIHZhciBjb250ZW50MSA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IxJywgJ0NPTlRF
TlQgRkFMTEJBQ0sgMScpOworICAgIHNyMS5hcHBlbmRDaGlsZChjb250ZW50MSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKHNoYWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdTSEFET1cgRkFMTEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFIDInKSk7CisgICAgdmFyIGNvbnRlbnQ7CisgICAgc3IyLmFwcGVuZENoaWxkKGNvbnRlbnQg
PSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMicsICdDT05URU5UIEZBTExCQUNLIDInKSk7
CisgICAgY29udGVudC50aXRsZSA9ICJkZWJ1Z3N0b3AiOworICAgIHNyMi5hcHBlbmRDaGlsZChz
aGFkb3cyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAy
JykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5h
cHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1
c2goZnVuY3Rpb24gdGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQyKGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPk1JRCAy
PC9zcGFuPjxzcGFuPk1JRCAzPC9zcGFuPjxzcGFuPk1JRCAxPC9zcGFuPiIgKworICAgICAgICAi
PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+Q09OVEVOVCBGQUxMQkFDSyAxPC9zcGFuPjxzcGFu
PlNIQURPVyBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAg
ICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdNSUQgMycsICdzcjMnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ01JRCAxJywgJ3NyMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTUlEIDInLCAnc3IyJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0
aFNlbGVjdCgnLnNyMScsICdDT05URU5UIEZBTExCQUNLIDEnKSk7CisgICAgc3IxLmFwcGVuZENo
aWxkKHNoYWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDEnKSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3No
YWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFE
T1cgRkFMTEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9v
dCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IyJywgJ0NP
TlRFTlQgRkFMTEJBQ0sgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdp
dGhTZWxlY3QoJ3NwYW4nLCAnQ09OVEVOVCBGQUxMQkFDSyAzJykpOworICAgIHNyMi5hcHBlbmRD
aGlsZChzaGFkb3cyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1
bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5QWRk
ZWQxKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNv
bnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFu
PjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFu
PjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkgeyByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
IDInKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
aGFkb3cnKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDInKSk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkocm9vdCwgY2FsbElm
RG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1
bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMihjYWxsSWZE
b25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZP
UkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRF
UiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQn
KSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rp
b24oc3IyLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNo
YWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgICAgICBzcjIuaW5z
ZXJ0QmVmb3JlKHNoYWRvdywgc3IyLmxhc3RDaGlsZCk7CisKKyAgICAgICAgY2FsbElmRG9uZSgp
CisgICAgfTt9KShzcjIsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30p
OworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHlu
YW1pY2FsbHlBZGRlZDMoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVG
T1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFG
VEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
IDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsK
KworICAgIHZhciBmID0gKGZ1bmN0aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKTsKKyAgICAgICAgc3IxLmluc2VydEJlZm9yZShzaGFkb3csIHNyMS5sYXN0Q2hpbGQpOwor
CisgICAgICAgIGNhbGxJZkRvbmUoKQorICAgIH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAg
IHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVy
aW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDEoY2FsbElmRG9uZSkgeworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0K
KyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48
L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAg
dmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IyLCBjYWxs
SWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IyLnJlbW92ZUNoaWxkKHNy
Mi5maXJzdENoaWxkLm5leHRTaWJsaW5nKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07
fSkoc3IyLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVz
dEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5
UmVtb3ZlZDIoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBl
Y3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8
L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRF
UiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQn
KSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1
YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlv
bihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBzcjEucmVt
b3ZlQ2hpbGQoc3IxLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcpOworICAgICAgICBjYWxsSWZEb25l
KCk7CisgICAgfTt9KShzcjEsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsK
K30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdMaWdodENoaWxkcmVuRHlu
YW1pY2FsbHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZP
UkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZU
RVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAg
ICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAg
IHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJv
b3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkgeyByZXR1cm4g
ZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNSUQnKSk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHJvb3QsIGNhbGxJZkRv
bmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5j
dGlvbiByZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlBZGRlZChjYWxs
SWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5C
RUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5B
RlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKworICAgIHZh
ciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAo
ZnVuY3Rpb24oc3IxLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKyAgICAgICAg
Y2FsbElmRG9uZSgpOworICAgIH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVv
dXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRD
aGlsZHJlbkR5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRp
dj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5BRlRFUiAx
PC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUg
MScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93
JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7
CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAg
IHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgICAgICByb290LnJlbW92ZUNoaWxkKHJvb3QuZmlyc3RDaGlsZCk7CisgICAgICAgIGNh
bGxJZkRvbmUoKTsKKyAgICB9O30pKHJvb3QsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91
dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdPbGRlclNo
YWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAg
ICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFu
Pk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+
IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAg
cm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBz
cjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3Ix
LCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IxLnJlbW92ZUNo
aWxkKHNyMS5sYXN0Q2hpbGQpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjEs
IGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8ZGl2IGlkPSJh
Y3R1YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVj
dC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+
PC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2lu
Z2xlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjEwY2NiYjA5NDc0N2M5NTM3MWZhOTIzYjFi
YTRlYzIzYjY0MjcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjIgQEAKK3JlbmRlcmluZ1NpbmdsZVNoYWRvd1Jvb3QKK1BBU1MKK3JlbmRlcmluZ05vdEZh
bGxiYWNrZWQKK1BBU1MKK3JlbmRlcmluZ0ZhbGxiYWNrZWQKK1BBU1MKK3JlbmRlcmluZ01peGVk
T2ZGYWxsYmFja0FuZE5vbkZhbGxiYWNrCitQQVNTCityZW5kZXJpbmdTaGFkb3dSb290QmVmb3Jl
Q29udGVudAorUEFTUworcmVuZGVyaW5nU2hhZG93Um9vdEFmdGVyQ29udGVudAorUEFTUworcmVu
ZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ1NoYWRv
d0VsZW1lbnREeW5hbWljYWxseVJlbW92ZWQKK1BBU1MKK3JlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5E
eW5hbWljYWxseUFkZGVkCitQQVNTCityZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlS
ZW1vdmVkCitQQVNTCitURVNUIENPTVBMRVRFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNGU4MDZmOTVhMTg2YzdiYzQ2MTgwODAzOTg1Y2YxOGI5N2QxYTMy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbApAQCAtMCwwICsxLDI0NCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcg
ZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3Np
dGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7
CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2Ny
aXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBs
ZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gdGVhckRvd25PbmNl
KCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxz
ZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24g
cmVuZGVyaW5nU2luZ2xlU2hhZG93Um9vdChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRp
dj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwv
ZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2
YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1
YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7
CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ05vdEZhbGxiYWNrZWQoY2FsbElm
RG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwv
c3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0ZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNy
LmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rl
c3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0ZhbGxiYWNrZWQoY2FsbElmRG9uZSkgewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1M
ID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkZBTExCQUNLPC9zcGFu
PjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0ZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAg
IHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwt
Y29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisK
K3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ01peGVkT2ZGYWxsYmFja0FuZE5vbkZh
bGxiYWNrKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0
LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bh
bj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+RkFMTEJBQ0sgMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bh
bj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisg
ICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBz
aGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sgMScpKTsKKyAg
ICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNo
YWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyJykpOworCisg
ICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hh
ZG93MSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93Mik7CisgICAgc3IuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9u
ZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1NoYWRvd1Jvb3RC
ZWZvcmVDb250ZW50KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
ZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9S
RTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+TSAxPC9zcGFuPjxzcGFuPkNPTlRFTlQgRkFM
TEJBQ0s8L3NwYW4+PHNwYW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisK
KyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3Qu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLJykpOworICAgIHZhciBzciA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAg
c3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDEnKSk7CisgICAgc3IuYXBwZW5k
Q2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnQ09OVEVOVCBGQUxMQkFDSycp
KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ00gMicpKTsKKyAgICBz
ci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsK
KyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVy
aW5nU2hhZG93Um9vdEFmdGVyQ29udGVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRp
dj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPk0gMTwvc3Bhbj48c3Bh
bj5TSEFET1cgRkFMTEJBQ0s8L3NwYW4+PHNwYW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFu
PjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAg
ICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hh
ZG93LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLJykpOwor
ICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQgRkFMTEJBQ0snKSk7CisgICAg
c3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDEnKSk7CisgICAgc3IuYXBwZW5k
Q2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ00g
MicpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVu
Y3Rpb24gcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5QWRkZWQoY2FsbElmRG9uZSkg
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48
c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdBRlRFUicpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKwor
ICAgIHZhciBmID0gKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QsIHNyKSB7IHJldHVybiBmdW5j
dGlvbigpIHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3No
YWRvdycpOworICAgICAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgICAgICBjYWxsSWZE
b25lKCk7CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3QsIHNyKTsKKworICAgIHNldFRpbWVvdXQo
ZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hhZG93RWxl
bWVudER5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48
c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJv
b3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZh
ciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKworICAgIHZhciBz
ciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7Cisg
ICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9v
dCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCBzciwgc2hhZG93KSB7IHJl
dHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IucmVtb3ZlQ2hpbGQoc2hhZG93KTsKKyAgICAg
ICAgY2FsbElmRG9uZSgpOworICAgIH19KShjYWxsSWZEb25lLCBzciwgc2hhZG93KTsKKworICAg
IHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVy
aW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwv
c3Bhbj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3Iu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFy
IGYgPSAoZnVuY3Rpb24oY2FsbElmRG9uZSwgcm9vdCkgeyByZXR1cm4gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAg
ICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwgcm9vdCk7CisKKyAgICBzZXRU
aW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0xp
Z2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAg
IjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bh
bj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSE9VTEQgTk9UIEJF
IFJFTkRFUkVEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVu
ZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25l
LCByb290KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgcm9vdC5yZW1vdmVDaGlsZChy
b290LmZpcnN0Q2hpbGQpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRv
bmUsIHJvb3QpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8ZGl2IGlkPSJhY3R1
YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1j
b250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9w
cmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggNzVi
MTNlZDZmNGViNGY2ZGM5ZTA4ZWI0M2QzZWI3ZjAyMTRhYTUwMC4uNzkyMDY2M2Y5OGZmNTZiMDc1
ZjAzMzE2YWU5OWNmYmY2ZTBiMTUyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTIw
OTksNiArMjA5OSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXBwZW5kLmh0
bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwK
K2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAog
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXgg
Yzc3MjgxY2JhYzI5Nzc0YTA0NzY1ZTNjOTY1NzhhYWI2MGRmMGIyYS4uNmIyMTQ5MGQ4MDFiMGJi
OWY0MjQ0MjczZDJjZTEwMDBjNGU3ZjM2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAg
LTQzNiw2ICs0MzYsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93
L3NoYWRvdy11bC1saS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXBwZW5kLmh0
bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwK
K2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAog
ZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDZl
NWM0ZjY0ZDM0ZGE1ZmFmNjgzMjNkODY0MGNiNWNmNGRlNjVhZDUuLjZjMmE0MjJmOTBjMzczYTMy
NzE5NjM2ZDNiMTcwMGU2YzM3MWE5MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTc0
LDYgKzE3NCw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1pbm5lckhUTUwuaHRtbAog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXVsLWxpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hcHBlbmQuaHRtbAor
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVs
dGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCA0MjQ3
MjJkN2UwODFmOGEyODM1OGVhYjE2ZmUwZmZhY2JhZmFhNjQyLi42NjliZDM5OGY5ZWNiM2M1ODEy
MWMwYThmNDZlMDU5ZDFiNmUzYzk0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ2
Miw2ICsxNDYyLDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlubmVySFRNTC5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctdWwtbGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFwcGVuZC5odG1s
CitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9t
dWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlw
bGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBl
ZAppbmRleCA5MDhhZTIxZTEwNDI3NjIzM2FkYzAwZjM2YjIyNjZiOTA5MDZlZTZjLi5iNjhlMWVm
ODZjMjc4YTU2MWQ3NGM1MzgzOTZiM2U4NWIxYzYxZTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dp
bmNhaXJvL1NraXBwZWQKQEAgLTE5NzUsNiArMTk3NSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJI
VE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1yb290LWFwcGVuZC5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVs
ZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1l
bnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmlu
Zy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IDg1YmIzYmEzYjQ5ODY5MWJiOWUwYjQ3NmZkOTZl
Yzk1MmE1NmY1ZDAuLmZkODAxYzFiOTYzM2ZmZjA3MjFiZWI4MTc0NWMwNDQ2YmVhZTlkOTkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0xMDczLDYgKzEwNzMsOCBAQCBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy11bC1saS5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJvb3QtYXBwZW5kLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
ZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxl
bWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNo
YWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVy
aW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130550</attachid>
            <date>2012-03-06 23:11:54 -0800</date>
            <delta_ts>2012-03-06 23:22:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78596-20120307161153.patch</filename>
            <type>text/plain</type>
            <size>50577</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ4ZmZjODU1MmEyOWNj
YThiNTllMWE1MjcxYjBiMWU2ZjdhYzA3OS4uYzU2NDYzMWY4NjUyMjdjNTFiNjkwMzdjNDVjZTIz
ZWZjMTY0NzVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAzLTA2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBz
aG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIDxzaGFkb3c+IGVsZW1lbnQg
cmVuZGVyaW5nLgorCisgICAgICAgIFdoZW4gYXR0YWNoaW5nIDxzaGFkb3c+IGVsZW1lbnQsIGlm
IGl0IGlzIGluIHRoZSBvbGRlc3Qgc2hhZG93IHRyZWUsIGl0IHJ1bnMgYSBwYXJ0IG9mCisgICAg
ICAgIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0uIElmIGl0IGlzIGluIG5vbi1vbGRlc3Qgc2hhZG93
IHRyZWUsIGl0IHJ1bnMgdHJlZSBhIHBhcnQgb2YKKyAgICAgICAgdHJlZSBjb21wb3NpdGlvbiBh
bGdvcml0aG0gdG8gYXNzaWduIGEgb2xkZXIgc2hhZG93IHJvb3QuIEluIHRoaXMgcGF0Y2gsIElu
c2VydGlvblBvbml0CisgICAgICAgIHRyeSB0byB0cmVhdCB0aGUgZGlzdHJpYnV0ZWQgaG9zdCBj
aGlsZHJlbiBhbmQgdGhlIGFzc2lnbmVkIHNoYWRvdyBjaGlsZHJlbiBzaW1pbGFybHkuCisKKyAg
ICAgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQgc3VwcG9ydHMgcmVuZGVyaW5nIDxzaGFkb3c+IGVs
ZW1lbnQuIFNpbmNlIHRoZSBhc3NpZ25lZCBzaGFkb3cgY2hpbGRyZW4KKyAgICAgICAgYXJlIHRy
ZWF0ZWQgbGlrZSBkaXN0cmlidXRlZCBob3N0IGNoaWxkcmVuLCB0aGF0IGNoYW5nZSBpcyB0byBj
b25zaWRlciBub24teW91bmdlc3Qgc2hhZG93CisgICAgICAgIHRyZWUgYmFzaWNhbGx5IGFsc28u
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJp
bmctbXVsdGlwbGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorCisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgICBEb2Vz
IG5vdCBpZ25vcmUgbm9uLXlvdW5nZXN0IHNoYWRvdyB0cmVlLgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFzc2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmlzVXNlZEZvclJlbmRlcmluZyk6CisgICAgICAgICAgUmV0
dXJucyB0cnVlIGlmIFNoYWRvd1Jvb3QgaXMgeW91bmdlc3Qgb3IgYXNzaWduZWQgdG8gc29tZSBJ
bnNlcnRpb25Qb2ludC4KKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcik6CisgICAgICAgICAgUmV0dXJu
cyBJbnNlcnRpb25Qb2ludCB0byB3aGljaCBub2RlIGlzIGRpc3RyaWJ1dGVkLgorICAgICAgICAq
IGRvbS9TaGFkb3dUcmVlLmg6CisgICAgICAgIChTaGFkb3dUcmVlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250
ZW50RWxlbWVudDo6ZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4pOgorICAgICAgICAoSFRNTENv
bnRlbnRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2hhZG93RWxlbWVudDo6SFRNTFNoYWRvd0VsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OnNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2hhZG93RWxlbWVudDo6ZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTFNoYWRv
d0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSFRNTFNoYWRvd0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Q
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6YXR0YWNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6YXNzaWduU2hhZG93Um9vdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6Y2xlYXJBc3NpZ25tZW50KToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoSW5zZXJ0aW9uUG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNlcnRpb25Qb2ludDo6YXNzaWduZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnNldEFzc2lnbmVkRnJvbSk6CisKIDIw
MTItMDMtMDYgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDk5NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMDYwM2M3YTlkZmJkOWY4NGNmOWE2ZGU5ZWYx
YmFjZjBhODE3YmI3Li45M2YzMTY2Njg1ZTFmNzhjYzNhODQyNmFhY2RhNjcxYWE5MzBkNDg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDggQEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRl
bnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJG
dWxsU2NyZWVuLmgiCkBAIC00Myw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RS
ZW5kZXJlck9mKE5vZGUqKTsKIHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKE5v
ZGUqKTsKIApAQCAtNTksMjYgKzYzLDIxIEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVu
ZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAvLyBGSVhN
RTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hh
ZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG9kX2J1Z3MuY2dpP2lkPTc4NTk2Ci0gICAgICAgIGlmICh0b1NoYWRvd1Jvb3QocGFyZW50
KS0+aXNZb3VuZ2VzdCgpKQotICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRvd0No
aWxkOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlz
dHJpYnV0ZWQ7CisgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFkb3dSb290
KHBhcmVudCktPmlzWW91bmdlc3QoKSkgeworICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hh
ZG93Q2hpbGQ7CiAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFy
ZW50LT5zaGFkb3dIb3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocGFy
ZW50LT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKHRvRWxlbWVudChwYXJlbnQpLT5o
YXNTaGFkb3dSb290KCkpIHsKKyAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgfHwgcGFy
ZW50LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2Rl
KCkgJiYgdG9FbGVtZW50KHBhcmVudCktPmhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIG1f
dmlzdWFsUGFyZW50U2hhZG93VHJlZSA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dUcmVlKCk7
Ci0gICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRv
d1RyZWUtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCi0gICAgICAgICAgICAgICAgJiYgbV92
aXN1YWxQYXJlbnRTaGFkb3dUcmVlLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKKyAgICAgICAgZWxz
ZSBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50
U2hhZG93VHJlZSA9IHRvU2hhZG93Um9vdChwYXJlbnQpLT50cmVlKCk7CiAKLSAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24t
eW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAgICAg
ICAgICBpZiAodG9TaGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9k
ZSgpKS0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Ry
ZWUpIHsKKyAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50
U2hhZG93VHJlZS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAodG9TaGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgp
KS0+aXNVc2VkRm9yUmVuZGVyaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9
IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOwogICAgICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9p
bnQpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC05MSw5ICs5MCw3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVu
ZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzU2hh
ZG93Qm91bmRhcnkocGFyZW50KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1
cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUgbm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSBy
ZW5kZXJlZC4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
cy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAgICAgIGlmICghdG9TaGFkb3dSb290KHBhcmVudC0+c2hh
ZG93VHJlZVJvb3ROb2RlKCkpLT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgIGlmICghdG9T
aGFkb3dSb290KHBhcmVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc1VzZWRGb3JSZW5kZXJp
bmcoKSkgewogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRl
ZDsKICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBh
cmVudDsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
aW5kZXggMjgwZGIxMTRlMDU0MDMxZjJlZTc5NmJkODQ0YjkzNGY0MjFkZTQyMS4uN2E5NzFkNWZi
NTBhYWFjZjQ2NTVmNDBmMzYzM2ZlZDBlMzdkMTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcApAQCAtNTIsNiArNTIsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX2FwcGx5
QXV0aG9yU2hlZXRzKGZhbHNlKQorICAgICwgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8oMCkK
IHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5k
ZXggM2RmMjhjNmE0YjU1OWU1YTVhMTY4NGIzOWUzOGE0Y2M4MjY2NDY2Yi4uMTMwMjhjMGQ2NjM5
ZmVjNjMzYWZhOTM2OTk4N2NjMjQ0N2NjNzJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBA
IC04Myw2ICs4MywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAK
KyAgICBib29sIGlzVXNlZEZvclJlbmRlcmluZygpIGNvbnN0OworICAgIEluc2VydGlvblBvaW50
KiBhc3NpZ25lZFRvKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBc3NpZ25lZFRvKEluc2VydGlvblBv
aW50Kik7CisKIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwogICAgIHZpcnR1
YWwgflNoYWRvd1Jvb3QoKTsKQEAgLTk0LDggKzk4LDI1IEBAIHByaXZhdGU6CiAgICAgU2hhZG93
Um9vdCogbV9wcmV2OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAgICBib29sIG1fYXBwbHlB
dXRob3JTaGVldHMgOiAxOworICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50QXNz
aWduZWRUbzsKIH07CiAKK2lubGluZSBJbnNlcnRpb25Qb2ludCogU2hhZG93Um9vdDo6YXNzaWdu
ZWRUbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvOwor
fQorCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCkKK3sKKyAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnRBc3NpZ25l
ZFRvIHx8ICFpbnNlcnRpb25Qb2ludCk7CisgICAgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8g
PSBpbnNlcnRpb25Qb2ludDsKK30KKworaW5saW5lIGJvb2wgU2hhZG93Um9vdDo6aXNVc2VkRm9y
UmVuZGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNZb3VuZ2VzdCgpIHx8IGFzc2lnbmVk
VG8oKTsKK30KKwogaW5saW5lIGNvbnN0IFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChjb25zdCBO
b2RlKiBub2RlKQogewogICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5kZXggYmVlMzcyZjc4ZTc2Nzc3OTAxMGEyZmNj
NDc3NzYxMDI1MzE1ZTE5Yi4uYTIyNTExMTYwYWIxMjBjODk2MDkxYzg0NjYzZWNjMDk2ODg0NTY2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250
ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0xOTgsNiArMTk5LDE1IEBAIHZv
aWQgU2hhZG93VHJlZTo6ZGV0YWNoSG9zdChFbGVtZW50KiBob3N0KQogCiBJbnNlcnRpb25Qb2lu
dCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKIHsKKyAg
ICBBU1NFUlQobm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpOworCisgICAgaWYgKG5vZGUtPnBh
cmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCA9IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2RlKCkpLT5hc3Np
Z25lZFRvKCkpCisgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CisKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCFtX3NlbGVjdG9yKQogICAgICAgICByZXR1cm4g
MDsKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9y
KG5vZGUpOwpAQCAtMjA2LDExICsyMTYsNiBAQCBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6
aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gZm91bmQtPmlu
c2VydGlvblBvaW50KCk7CiB9CiAKLWJvb2wgU2hhZG93VHJlZTo6aXNTZWxlY3RvckFjdGl2ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlk
YXRlcygpOwotfQotCiB2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkKIHsKICAgICBkZXRhY2go
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCmluZGV4IDBlZmJkYjEzNjc0MzAzZmY2N2E3MWUxMGVj
YzU1MWE1YTQ3NTQ4NGYuLjU0YzQxYmJlNDE5ZjVjM2IxMmU3ODY4MmI2ZDQ5MjI1ZDQ2ZjliOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtODIsOCArODIsNiBAQCBwdWJsaWM6CiAgICAg
SFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKICAgICBIVE1MQ29udGVudFNl
bGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwogCi0gICAgYm9vbCBpc1NlbGVjdG9yQWN0aXZlKCkg
Y29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCmluZGV4IGRjNjNm
MTFlN2U1NDg0MWI2Y2VjNDEyNzljZTc0OGYwZGMwMTFiNWEuLmVjNjYyMTdjNTI1NjNmNWJjMmMx
MmVkNzk3ZjU5ODI3YTE4Y2U4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5oCkBAIC01NCw2ICs1NCw4IEBAIHB1YmxpYzoKICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjYxCiAgICAgdm9p
ZCBzZXRTZWxlY3QoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKKyAgICBib29sIGRvZXNTZWxlY3RG
cm9tSG9zdENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdmlydHVhbCBi
b29sIGlzU2VsZWN0VmFsaWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGNiMDFjZDIxZmUw
ZTAwOWE1ZThlMDAzYWI5Yjg0YjY4ZmRkNDI5MzAuLjdjNjllZjQ0OGJhYmUwMjZlMjI1ZmMyYWMx
NzY1MmE3OTU1MWM1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5jcHAKQEAgLTI5LDE5ICsyOSwxOCBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotCiAjaW5jbHVkZSAiSFRNTFNoYWRv
d0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIAogaW5saW5lIEhUTUxTaGFkb3dFbGVtZW50OjpI
VE1MU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICA6IElu
c2VydGlvblBvaW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KEhUTUxOYW1lczo6c2hhZG93VGFnKSk7CiB9CkBAIC01NSw2ICs1NCwxNiBAQCBIVE1MU2hhZG93
RWxlbWVudDo6fkhUTUxTaGFkb3dFbGVtZW50KCkKIHsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MU2hhZG93RWxlbWVudDo6c2VsZWN0KCkgY29u
c3QKK3sKKyAgICAgcmV0dXJuIG51bGxBdG9tOworfQogCi0jZW5kaWYgLy8gRU5BQkxFKFNIQURP
V19ET00pCitib29sIEhUTUxTaGFkb3dFbGVtZW50Ojpkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJl
bigpIGNvbnN0Cit7CisgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hh
ZG93VHJlZVJvb3ROb2RlKCkpKQorICAgICAgICByZXR1cm4gcm9vdC0+aXNPbGRlc3QoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4IDE1MWM3YTJhYmJk
NmM1MDU3ODk0M2ZkNmRjY2ZmZjA1YzljOWZmZjcuLjQ2Y2U3ZGEwNzZmODNmNzQwNzU0OTU1YWFi
ODM2MDAxOWI1ZTNmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuaApAQCAtMzEsMjUgKzMxLDMxIEBACiAjaWZuZGVmIEhUTUxTaGFkb3dFbGVt
ZW50X2gKICNkZWZpbmUgSFRNTFNoYWRvd0VsZW1lbnRfaAogCi0jaWYgRU5BQkxFKFNIQURPV19E
T00pCi0KLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBIVE1MU2hhZG93RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBIVE1M
U2hhZG93RWxlbWVudCA6IHB1YmxpYyBJbnNlcnRpb25Qb2ludCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTFNoYWRvd0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgfkhUTUxTaGFkb3dFbGVtZW50KCk7CiAK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCgpIGNvbnN0OworICAgIGJvb2wgZG9lc1Nl
bGVjdEZyb21Ib3N0Q2hpbGRyZW4oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBIVE1MU2hhZG93
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNTaGFkb3dFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQoraW5saW5lIEhUTUxTaGFkb3dFbGVtZW50KiB0b0hUTUxTaGFkb3dF
bGVtZW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpzaGFkb3dUYWcpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFNo
YWRvd0VsZW1lbnQqPihub2RlKTsKK30KIAotI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSFRNTFNoYWRvd0VsZW1lbnRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IDM5
ZmE3MjA0ZDkxM2Q3NzE2NjE2NDNjYjk3Yjc4MDA3ODg1NDdjZjMuLmUzNWQwYTZhZTliOWQzMzdm
ODJmMDdjZjZhNmIzZGVjMGE2NmQyZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogSW5zZXJ0aW9uUG9pbnQ6Okluc2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KQogICAgICwgbV9zZWxlY3Rpb25zKCkKKyAgICAsIHNoYWRvd1Jvb3RBc3NpZ25lZEZy
b20oMCkKIHsKIH0KIApAQCAtNDksOCArNTAsMTQgQEAgSW5zZXJ0aW9uUG9pbnQ6On5JbnNlcnRp
b25Qb2ludCgpCiB2b2lkIEluc2VydGlvblBvaW50OjphdHRhY2goKQogewogICAgIGlmIChTaGFk
b3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewotICAg
ICAgICBkaXN0cmlidXRlSG9zdENoaWxkcmVuKHJvb3QtPnRyZWUoKSk7Ci0gICAgICAgIGF0dGFj
aERpc3RyaWJ1dGVkTm9kZSgpOworICAgICAgICBpZiAoZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRy
ZW4oKSkgeworICAgICAgICAgICAgZGlzdHJpYnV0ZUhvc3RDaGlsZHJlbihyb290LT50cmVlKCkp
OworICAgICAgICAgICAgYXR0YWNoRGlzdHJpYnV0ZWROb2RlKCk7CisgICAgICAgIH0gZWxzZSBp
ZiAoIXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5hc3NpZ25lZFRvKCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVCghcm9vdC0+b2xkZXJTaGFkb3dSb290KCktPmF0dGFjaGVkKCkpOworICAgICAgICAg
ICAgYXNzaWduU2hhZG93Um9vdChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSk7CisgICAgICAgICAg
ICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoKCk7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBIVE1MRWxlbWVudDo6YXR0YWNoKCk7CkBAIC02MCw3ICs2NywxMSBAQCB2b2lkIEluc2Vy
dGlvblBvaW50OjpkZXRhY2goKQogewogICAgIGlmIChTaGFkb3dSb290KiByb290ID0gdG9TaGFk
b3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewogICAgICAgICBTaGFkb3dUcmVlKiB0cmVl
ID0gcm9vdC0+dHJlZSgpOwotICAgICAgICBjbGVhckRpc3RyaWJ1dGlvbih0cmVlKTsKKworICAg
ICAgICBpZiAoZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4oKSkKKyAgICAgICAgICAgIGNsZWFy
RGlzdHJpYnV0aW9uKHRyZWUpOworICAgICAgICBlbHNlIGlmIChTaGFkb3dSb290KiBhc3NpZ25l
ZFNoYWRvd1Jvb3QgPSBhc3NpZ25lZEZyb20oKSkKKyAgICAgICAgICAgIGNsZWFyQXNzaWdubWVu
dChhc3NpZ25lZFNoYWRvd1Jvb3QpOwogCiAgICAgICAgIC8vIFdoZW4gc2hhZG93IGVsZW1lbnQg
aXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQgdG8gcmUtY2FsY3Vs
YXRlIHNlbGVjdG9yIGZvcgogICAgICAgICAvLyBvdGhlciBpbnNlcnRpb24gcG9pbnRzLgpAQCAt
MTAyLDQgKzExMywyMiBAQCBpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoRGlzdHJp
YnV0ZWROb2RlKCkKICAgICAgICAgc2VsZWN0aW9uLT5ub2RlKCktPmF0dGFjaCgpOwogfQogCitp
bmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6YXNzaWduU2hhZG93Um9vdChTaGFkb3dSb290KiBz
aGFkb3dSb290KQoreworICAgIHNldEFzc2lnbmVkRnJvbShzaGFkb3dSb290KTsKKyAgICBzaGFk
b3dSb290LT5zZXRBc3NpZ25lZFRvKHRoaXMpOworCisgICAgbV9zZWxlY3Rpb25zLmNsZWFyKCk7
CisgICAgZm9yIChOb2RlKiBub2RlID0gc2hhZG93Um9vdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBu
b2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbV9zZWxlY3Rpb25zLmFwcGVuZChI
VE1MQ29udGVudFNlbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIG5vZGUpKTsKK30KKworaW5saW5lIHZv
aWQgSW5zZXJ0aW9uUG9pbnQ6OmNsZWFyQXNzaWdubWVudChTaGFkb3dSb290KiBzaGFkb3dSb290
KQoreworICAgIHNoYWRvd1Jvb3QtPnNldEFzc2lnbmVkVG8oMCk7CisgICAgc2V0QXNzaWduZWRG
cm9tKDApOworCisgICAgbV9zZWxlY3Rpb25zLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmlu
ZGV4IDdlNWFkZTk2YzA5Mzk3MjE1NTc4ZjcxNWU0ZWY3NDliZjhmZjllYjcuLjE3ZDg4MDE2OTk0
YmJjMWMyYzZmMjlmNWE5MGVkYmUxZGEwNmJjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRN
TENvbnRlbnRTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNDYsMTAgKzQ3LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzU2hhZG93Qm91bmRh
cnkoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkg
Y29uc3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkZXRhY2goKTsKIAorICAgIFNoYWRvd1Jvb3QqIGFzc2lnbmVkRnJvbSgpIGNvbnN0OworICAg
IHZvaWQgc2V0QXNzaWduZWRGcm9tKFNoYWRvd1Jvb3QqKTsKKwogcHJvdGVjdGVkOgogICAgIElu
c2VydGlvblBvaW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IE5vZGVSZW5kZXJpbmdDb250ZXh0JikgT1ZF
UlJJREU7CkBAIC01OSwxNSArNjQsMTkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRGlzdHJp
YnV0aW9uKFNoYWRvd1RyZWUqKTsKICAgICB2b2lkIGF0dGFjaERpc3RyaWJ1dGVkTm9kZSgpOwog
CisgICAgdm9pZCBhc3NpZ25TaGFkb3dSb290KFNoYWRvd1Jvb3QqKTsKKyAgICB2b2lkIGNsZWFy
QXNzaWdubWVudChTaGFkb3dSb290Kik7CisKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxpc3Qg
bV9zZWxlY3Rpb25zOworICAgIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3RBc3NpZ25lZEZyb207CiB9
OwogCiBpbmxpbmUgYm9vbCBpc0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCiB7Ci0gICAgLy8g
RklYTUU6IDxzaGFkb3c+IHNob3VsZCBhbHNvIGJlIEluc2VydGlvblBvaW50LgotICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU5NgogICAgIGlmICghbm9k
ZSB8fCBub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmIChub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6c2hhZG93VGFnKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC04NSw2ICs5NCwxNyBAQCBpbmxp
bmUgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIHRvSW5zZXJ0
aW9uUG9pbnQobm9kZSktPmlzU2hhZG93Qm91bmRhcnkoKTsKIH0KIAoraW5saW5lIFNoYWRvd1Jv
b3QqIEluc2VydGlvblBvaW50Ojphc3NpZ25lZEZyb20oKSBjb25zdAoreworICAgIHJldHVybiBz
aGFkb3dSb290QXNzaWduZWRGcm9tOworfQorCitpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6
c2V0QXNzaWduZWRGcm9tKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit7CisgICAgQVNTRVJUKCFz
aGFkb3dSb290QXNzaWduZWRGcm9tIHx8ICFzaGFkb3dSb290KTsKKyAgICBzaGFkb3dSb290QXNz
aWduZWRGcm9tID0gc2hhZG93Um9vdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gSW5zZXJ0aW9uUG9pbnRfaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVlMjlkOWFkYjYwOTUyNGYyYzMyMzQ0
Y2E3NzI0OWE4M2MxOTczZmEuLmUwMzM4NDRmMWZhNmU5N2RiYzA2OTA1NTM0ZWEyYTIyNGY1MzQ4
MmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMi0wMy0wNiAgU2hpbnlhIEthd2FuYWthICA8
c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgPHNoYWRvdz4gc2hvdWxkIGJlIHJlbmRl
cmVkIGNvcnJlY3RseS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc4NTk2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ29udGFpbnMgdGVzdHMgYm90aCBpbiBjYXNlIDxzaGFkb3c+IGFwcGVhcnMgaW4gdGhl
IG9sZGVzdCBzaGFkb3cgcm9vdCBhbmQKKyAgICAgICAgbm9uLW9sZGVyc3Qgc2hhZG93IHRyZWUu
CisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11
bHRpcGxlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5k
ZXJpbmctc2luZ2xlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxh
dGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93azIvU2tpcHBlZDoK
KwogMjAxMi0wMy0wNiAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHVwZGF0ZSBtYWMgdGV4dCBiYXNlbGluZXMgYWZ0ZXIgcjEwOTg1MQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJl
bmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41YWRhYzIwZmRmM2FhZWRhNjMwMjljZjY4ZGJiODU4NzRjOTYyNTNhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRl
cmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzMiBAQAorcmVuZGVyaW5nRG91
YmxlU2hhZG93Um9vdAorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdFdpdGhPbmVTaGFk
b3dFbGVtZW50CitQQVNTCityZW5kZXJpbmdUcmlwbGVTaGFkb3dSb290CitQQVNTCityZW5kZXJp
bmdUd29TaGFkb3dSb290cworUEFTUwordGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRl
bnQxCitQQVNTCit0ZXN0V2l0aERvdWJsZVNoYWRvd1Jvb3RXaXRoQ29udGVudDIKK1BBU1MKK3Jl
bmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMQorUEFTUworcmVuZGVyaW5n
RG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5QWRkZWQyCitQQVNTCityZW5kZXJpbmdEb3VibGVT
aGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDMKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jv
b3REeW5hbWljYWxseVJlbW92ZWQxCitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHlu
YW1pY2FsbHlSZW1vdmVkMgorUEFTUworcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5
QWRkZWQKK1BBU1MKK3JlbmRlcmluZ09sZGVyU2hhZG93Um9vdENvbnRlbnREeW5hbWljYWxseUFk
ZGVkCitQQVNTCityZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkCitQQVNT
CityZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlSZW1vdmVkCitQQVNT
CitURVNUIENPTVBMRVRFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMmVkZTgxODEzMGIyZDNhNmQ3ZWRjZWMwY2NjY2NkMzljODMyNWY3YgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1y
ZW5kZXJpbmctbXVsdGlwbGUuaHRtbApAQCAtMCwwICsxLDQ0NiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJl
cyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAg
bWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRv
d1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gdGVhckRvd25PbmNlKCkgewor
ICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9
CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVy
aW5nRG91YmxlU2hhZG93Um9vdChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNw
YW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIg
cm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAg
IHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9v
dCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJl
bmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RXaXRoT25lU2hhZG93RWxlbWVudChjYWxsSWZEb25lKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwv
c3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKwor
ICAgIC8vIE1JRCB3b24ndCBiZSByZW5kZXJlZC4KKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7
CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAg
IHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRv
bmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdUcmlwbGVTaGFk
b3dSb290KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0
LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAzPC9z
cGFuPjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPiIgKworICAgICAg
ICAiPHNwYW4+TUlEPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bh
bj5BRlRFUiAyPC9zcGFuPjxzcGFuPkFGVEVSIDM8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBy
b290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBz
cjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgdmFy
IHNyMyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMy5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAzJykpOworICAgIHNyMy5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVIgMycpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgp
OworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1R3b1NoYWRvd1Jvb3Rz
KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRh
aW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPiIg
KworICAgICAgICAgICAgIjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bh
bj5BRlRFUiAxPC9zcGFuPiIgKworICAgICAgICAgICAgIjxzcGFuPkZBTExCQUNLIDItMjwvc3Bh
bj4iICsKKyAgICAgICAgIjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciBy
b290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgdmFyIHNoYWRvdzIxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAg
c2hhZG93MjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyLTEnKSk7
CisgICAgdmFyIHNoYWRvdzIyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7Cisg
ICAgc2hhZG93MjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyLTIn
KSk7CisKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicp
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoc2hhZG93MjEpOworICAgIHNyMi5hcHBlbmRDaGlsZChz
aGFkb3cyMik7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIg
MicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5w
dXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MShjYWxsSWZE
b25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5NSUQg
Mjwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRCAxPC9z
cGFuPjxzcGFuPk1JRCAzPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICI8
c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdNSUQgMycsICdzcjMnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ01JRCAxJywgJ3NyMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTUlEIDInLCAnc3IyJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0JFRk9SRSAxJykpOworICAgIHZhciBjb250ZW50MSA9IGNyZWF0ZUNvbnRlbnRXaXRoU2Vs
ZWN0KCcuc3IxJywgJ0NPTlRFTlQgRkFMTEJBQ0sgMScpOworICAgIHNyMS5hcHBlbmRDaGlsZChj
b250ZW50MSk7CisgICAgc3IxLmFwcGVuZENoaWxkKHNoYWRvdzEpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc2hhZG93MiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMicpKTsKKyAgICB2YXIgc3Iy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgdmFyIGNvbnRlbnQ7CisgICAgc3IyLmFw
cGVuZENoaWxkKGNvbnRlbnQgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMicsICdDT05U
RU5UIEZBTExCQUNLIDInKSk7CisgICAgY29udGVudC50aXRsZSA9ICJkZWJ1Z3N0b3AiOworICAg
IHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fj
dHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9
KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gdGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0
aENvbnRlbnQyKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAy
PC9zcGFuPjxzcGFuPk1JRCAyPC9zcGFuPjxzcGFuPk1JRCAzPC9zcGFuPjxzcGFuPk1JRCAxPC9z
cGFuPiIgKworICAgICAgICAiPHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+Q09OVEVOVCBGQUxM
QkFDSyAxPC9zcGFuPjxzcGFuPlNIQURPVyBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8
L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2
YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMycsICdzcjMnKSk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAxJywgJ3NyMScpKTsKKyAgICByb290LmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDInLCAnc3IyJykpOworCisgICAgdmFy
IHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cx
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDEnKSk7Cisg
ICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMScsICdDT05URU5UIEZBTExCQUNLIDEnKSk7
CisgICAgc3IxLmFwcGVuZENoaWxkKHNoYWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdTSEFET1cgRkFMTEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0gbmV3IFdl
YktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRo
U2VsZWN0KCcuc3IyJywgJ0NPTlRFTlQgRkFMTEJBQ0sgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnQ09OVEVOVCBGQUxMQkFDSyAzJykp
OworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25l
KCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93
Um9vdER5bmFtaWNhbGx5QWRkZWQxKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2Pjxz
cGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48
c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZh
ciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSIDEnKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRh
aW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwg
Y2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzcjIgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAg
IH07fSkocm9vdCwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisK
K3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWlj
YWxseUFkZGVkMihjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUg
Mjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIg
MTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
IDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRv
dycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykp
OworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisg
ICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IyLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigp
IHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
OworICAgICAgICBzcjIuaW5zZXJ0QmVmb3JlKHNoYWRvdywgc3IyLmxhc3RDaGlsZCk7CisKKyAg
ICAgICAgY2FsbElmRG9uZSgpCisgICAgfTt9KShzcjIsIGNhbGxJZkRvbmUpOworCisgICAgc2V0
VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdE
b3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDMoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+
TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4i
OworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBy
b290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNy
MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3No
YWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAy
JykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5h
cHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHNyMSwgY2FsbElmRG9u
ZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICAgICAgc3IxLmluc2VydEJlZm9yZShzaGFkb3cs
IHNyMS5sYXN0Q2hpbGQpOworCisgICAgICAgIGNhbGxJZkRvbmUoKQorICAgIH07fSkoc3IxLCBj
YWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1
c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDEo
Y2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNw
YW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZh
ciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAo
ZnVuY3Rpb24oc3IyLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAg
c3IyLnJlbW92ZUNoaWxkKHNyMi5maXJzdENoaWxkLm5leHRTaWJsaW5nKTsKKyAgICAgICAgY2Fs
bElmRG9uZSgpOworICAgIH07fSkoc3IyLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQo
ZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hh
ZG93Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDIoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxk
aXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+QUZURVIg
MTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
IDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRv
dycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykp
OworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAg
ICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkg
eworICAgICAgICBzcjEucmVtb3ZlQ2hpbGQoc3IxLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcpOwor
ICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjEsIGNhbGxJZkRvbmUpOworCisgICAg
c2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJp
bmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAg
ICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5N
SUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7
CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAg
dmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2Fs
bElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9
O30pKHJvb3QsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0
ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHlu
YW1pY2FsbHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZP
UkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZU
RVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3No
YWRvdycpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAg
ICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBz
cjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNy
Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3Qp
OworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IxLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5j
dGlvbigpIHsKKyAgICAgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZU
RVIgMScpKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkoc3IxLCBjYWxsSWZEb25l
KTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rp
b24gcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwv
c3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKwor
ICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDIn
KSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIGNhbGxJZkRvbmUpIHsg
cmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICByb290LnJlbW92ZUNoaWxkKHJvb3QuZmlyc3RD
aGlsZCk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHJvb3QsIGNhbGxJZkRvbmUp
OworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlv
biByZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJ
ZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicp
LmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJF
Rk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFG
VEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKwor
ICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFy
IGYgPSAoZnVuY3Rpb24oc3IxLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgc3IxLnJlbW92ZUNoaWxkKHNyMS5sYXN0Q2hpbGQpOworICAgICAgICBjYWxsSWZEb25l
KCk7CisgICAgfTt9KShzcjEsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsK
K30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5j
cykiPgorCis8ZGl2IGlkPSJhY3R1YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rp
dj4KKzxkaXYgaWQ9ImV4cGVjdC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2Pgor
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2lu
Z2xlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxl
bWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjEwY2NiYjA5
NDc0N2M5NTM3MWZhOTIzYjFiYTRlYzIzYjY0MjcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAKK3JlbmRlcmluZ1NpbmdsZVNoYWRvd1Jvb3QKK1BB
U1MKK3JlbmRlcmluZ05vdEZhbGxiYWNrZWQKK1BBU1MKK3JlbmRlcmluZ0ZhbGxiYWNrZWQKK1BB
U1MKK3JlbmRlcmluZ01peGVkT2ZGYWxsYmFja0FuZE5vbkZhbGxiYWNrCitQQVNTCityZW5kZXJp
bmdTaGFkb3dSb290QmVmb3JlQ29udGVudAorUEFTUworcmVuZGVyaW5nU2hhZG93Um9vdEFmdGVy
Q29udGVudAorUEFTUworcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5QWRkZWQKK1BB
U1MKK3JlbmRlcmluZ1NoYWRvd0VsZW1lbnREeW5hbWljYWxseVJlbW92ZWQKK1BBU1MKK3JlbmRl
cmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVkCitQQVNTCityZW5kZXJpbmdMaWdodENo
aWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCitURVNUIENPTVBMRVRFRAorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5n
LXNpbmdsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50
LXJlbmRlcmluZy1zaW5nbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNGU4MDZmOTVhMTg2YzdiYzQ2MTgw
ODAzOTg1Y2YxOGI5N2QxYTMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbApAQCAtMCwwICsx
LDI0NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVs
YXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29u
dGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNw
bGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsK
K30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZl
ci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkgeworICAgIGlu
dGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK30KKworZnVu
Y3Rpb24gdGVhckRvd25PbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1
YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsKKwordGVzdEZ1
bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2luZ2xlU2hhZG93Um9vdChjYWxsSWZEb25lKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxz
cGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNSUQnKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAg
ICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAg
Y2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ05v
dEZhbGxiYWNrZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JF
PC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElm
RG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0ZhbGxiYWNr
ZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29u
dGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxz
cGFuPkZBTExCQUNLPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIg
cm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNoYWRvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2Fs
bElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ01peGVk
T2ZGYWxsYmFja0FuZE5vbkZhbGxiYWNrKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2
PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+RkFMTEJBQ0sgMjwvc3Bh
bj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
RkFMTEJBQ0sgMScpKTsKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdG
QUxMQkFDSyAyJykpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7
CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAg
c3IuYXBwZW5kQ2hpbGQoc2hhZG93MSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93Mik7Cisg
ICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9v
dCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJl
bmRlcmluZ1NoYWRvd1Jvb3RCZWZvcmVDb250ZW50KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAg
ICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+TSAxPC9zcGFu
PjxzcGFuPkNPTlRFTlQgRkFMTEJBQ0s8L3NwYW4+PHNwYW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVS
PC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7
CisKKyAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7Cisg
ICAgc2hhZG93LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNL
JykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENo
aWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDEn
KSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAn
Q09OVEVOVCBGQUxMQkFDSycpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ00gMicpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
JykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5h
cHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1
c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hhZG93Um9vdEFmdGVyQ29udGVudChjYWxsSWZEb25lKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxz
cGFuPk0gMTwvc3Bhbj48c3Bhbj5TSEFET1cgRkFMTEJBQ0s8L3NwYW4+PHNwYW4+TSAyPC9zcGFu
PjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hB
RE9XIEZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAg
IHNyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQg
RkFMTEJBQ0snKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDEn
KSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ00gMicpKTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1j
b250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwor
dGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5
QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFu
PjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAgICB2YXIgcm9v
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykp
OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBl
bmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3Qs
IHNyKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgICAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cp
OworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3QsIHNyKTsK
KworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24g
cmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwg
PQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9k
aXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hPVUxEIE5PVCBCRSBSRU5E
RVJFRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVu
ZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25l
LCBzciwgc2hhZG93KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IucmVtb3ZlQ2hp
bGQoc2hhZG93KTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH19KShjYWxsSWZEb25lLCBz
ciwgc2hhZG93KTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1
c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQoY2FsbElm
RG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwv
c3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUn
KSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jykp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oY2FsbElmRG9uZSwgcm9vdCkgeyByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdNSUQnKSk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwg
cm9vdCk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1
bmN0aW9uIHJlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQoY2FsbElmRG9u
ZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5u
ZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bh
bj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdTSE9VTEQgTk9UIEJFIFJFTkRFUkVEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
JykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChm
dW5jdGlvbihjYWxsSWZEb25lLCByb290KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAg
cm9vdC5yZW1vdmVDaGlsZChyb290LmZpcnN0Q2hpbGQpOworICAgICAgICBjYWxsSWZEb25lKCk7
CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3QpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30p
OworCis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcyki
PgorCis8ZGl2IGlkPSJhY3R1YWwtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4K
KzxkaXYgaWQ9ImV4cGVjdC1jb250YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L1NraXBwZWQKaW5kZXggNzViMTNlZDZmNGViNGY2ZGM5ZTA4ZWI0M2QzZWI3ZjAyMTRhYTUwMC4u
NzkyMDY2M2Y5OGZmNTZiMDc1ZjAzMzE2YWU5OWNmYmY2ZTBiMTUyOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
ZWZsL1NraXBwZWQKQEAgLTIwOTksNiArMjA5OSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
ZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtYXBwZW5kLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5k
ZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJp
bmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQKaW5kZXggYzc3MjgxY2JhYzI5Nzc0YTA0NzY1ZTNjOTY1NzhhYWI2MGRmMGIy
YS4uNmIyMTQ5MGQ4MDFiMGJiOWY0MjQ0MjczZDJjZTEwMDBjNGU3ZjM2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQKQEAgLTQzNiw2ICs0MzYsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93
LXJvb3QtaW5uZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy11bC1saS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LXJvb3QtYXBwZW5kLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5k
ZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJp
bmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRt
bAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCmluZGV4IGI0N2NjODVlZWY0NTU1ODQ3MmViYWZmY2ZlMTM2Mzc0Y2Q5OWJlMzgu
LjJkZmE3YzI3NWI5YzMxZWJlYzVkMGM1Y2Y3MmEzZjgyMmM2ZWQyOWIgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZApAQCAtMTc1LDYgKzE3NSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9v
dC1pbm5lckhUTUwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
cm9vdC1hcHBlbmQuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmlu
Zy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1t
dWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBm
YXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAppbmRleCA0MjQ3MjJkN2UwODFmOGEyODM1OGVhYjE2ZmUwZmZhY2JhZmFhNjQyLi42
NjliZDM5OGY5ZWNiM2M1ODEyMWMwYThmNDZlMDU5ZDFiNmUzYzk0IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZApAQCAtMTQ2Miw2ICsxNDYyLDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
b290LWlubmVySFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1yb290LWFwcGVuZC5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVy
aW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5n
LW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luY2Fpcm8vU2tpcHBlZAppbmRleCA5MDhhZTIxZTEwNDI3NjIzM2FkYzAwZjM2YjIyNjZi
OTA5MDZlZTZjLi5iNjhlMWVmODZjMjc4YTU2MWQ3NGM1MzgzOTZiM2U4NWIxYzYxZTAxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE5NzUsNiArMTk3NSw4IEBAIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1u
ZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFwcGVuZC5odG1sCitmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1z
aGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93
cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tp
cHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCmluZGV4IGM5NDRhZWNmMzg4
MDhlOWJkOGMzZDBhOWYzZDA5YTgxOWMxY2U3ZWMuLjBlZTBjMDVhYTc5MTdiMDRmOGNjMzdjYjAx
YTUwN2RjMzYxZTgxNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lw
cGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0xMDczLDYgKzEw
NzMsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy11
bC1saS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXBwZW5kLmh0bWwKK2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxl
LXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFk
b3dyb290LWFkb3B0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130553</attachid>
            <date>2012-03-06 23:23:14 -0800</date>
            <delta_ts>2012-03-07 00:55:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78596-20120307162313.patch</filename>
            <type>text/plain</type>
            <size>50398</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ4ZmZjODU1MmEyOWNj
YThiNTllMWE1MjcxYjBiMWU2ZjdhYzA3OS4uYzc1ODJiM2M5OWU0NTU1ZGUwNjZjNzA1NmRlMzkz
NzEyMWMxYzI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTAzLTA2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBz
aG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIDxzaGFkb3c+IGVsZW1lbnQg
cmVuZGVyaW5nLgorCisgICAgICAgIFdoZW4gYXR0YWNoaW5nIDxzaGFkb3c+IGVsZW1lbnQsIGlm
IGl0IGlzIGluIHRoZSBvbGRlc3Qgc2hhZG93IHRyZWUsIGl0IHJ1bnMgYSBwYXJ0IG9mCisgICAg
ICAgIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0uIElmIGl0IGlzIGluIG5vbi1vbGRlc3Qgc2hhZG93
IHRyZWUsIGl0IHJ1bnMgdHJlZSBhIHBhcnQgb2YKKyAgICAgICAgdHJlZSBjb21wb3NpdGlvbiBh
bGdvcml0aG0gdG8gYXNzaWduIGEgb2xkZXIgc2hhZG93IHJvb3QuIEluIHRoaXMgcGF0Y2gsIElu
c2VydGlvblBvbml0CisgICAgICAgIHRyeSB0byB0cmVhdCB0aGUgZGlzdHJpYnV0ZWQgaG9zdCBj
aGlsZHJlbiBhbmQgdGhlIGFzc2lnbmVkIHNoYWRvdyBjaGlsZHJlbiBzaW1pbGFybHkuCisKKyAg
ICAgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQgc3VwcG9ydHMgcmVuZGVyaW5nIDxzaGFkb3c+IGVs
ZW1lbnQuIFNpbmNlIHRoZSBhc3NpZ25lZCBzaGFkb3cgY2hpbGRyZW4KKyAgICAgICAgYXJlIHRy
ZWF0ZWQgbGlrZSBkaXN0cmlidXRlZCBob3N0IGNoaWxkcmVuLCB0aGF0IGNoYW5nZSBpcyB0byBj
b25zaWRlciBub24teW91bmdlc3Qgc2hhZG93CisgICAgICAgIHRyZWUgYmFzaWNhbGx5IGFsc28u
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJp
bmctbXVsdGlwbGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorCisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgICBEb2Vz
IG5vdCBpZ25vcmUgbm9uLXlvdW5nZXN0IHNoYWRvdyB0cmVlLgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFzc2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmlzVXNlZEZvclJlbmRlcmluZyk6CisgICAgICAgICAgUmV0
dXJucyB0cnVlIGlmIFNoYWRvd1Jvb3QgaXMgeW91bmdlc3Qgb3IgYXNzaWduZWQgdG8gc29tZSBJ
bnNlcnRpb25Qb2ludC4KKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dUcmVlOjppbnNlcnRpb25Qb2ludEZvcik6CisgICAgICAgICAgUmV0dXJu
cyBJbnNlcnRpb25Qb2ludCB0byB3aGljaCBub2RlIGlzIGRpc3RyaWJ1dGVkLgorICAgICAgICAq
IGRvbS9TaGFkb3dUcmVlLmg6CisgICAgICAgIChTaGFkb3dUcmVlKToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb250
ZW50RWxlbWVudDo6ZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4pOgorICAgICAgICAoSFRNTENv
bnRlbnRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2hhZG93RWxlbWVudDo6SFRNTFNoYWRvd0VsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRvd0VsZW1lbnQ6OnNlbGVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU2hhZG93RWxlbWVudDo6ZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRy
ZW4pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTFNoYWRv
d0VsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OnRvSFRNTFNoYWRvd0VsZW1lbnQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L0luc2VydGlv
blBvaW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpJbnNlcnRpb25Q
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6YXR0YWNoKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc2VydGlvblBvaW50OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zZXJ0aW9uUG9pbnQ6OmFzc2lnblNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6Y2xlYXJBc3NpZ25tZW50KToKKyAgICAg
ICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoSW5zZXJ0aW9uUG9p
bnQpOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNlcnRpb25Qb2ludDo6YXNzaWduZWRGcm9tKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OnNldEFzc2lnbmVkRnJvbSk6CisKIDIw
MTItMDMtMDYgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDk5NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGVSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBjMDYwM2M3YTlkZmJkOWY4NGNmOWE2ZGU5ZWYx
YmFjZjBhODE3YmI3Li45M2YzMTY2Njg1ZTFmNzhjYzNhODQyNmFhY2RhNjcxYWE5MzBkNDg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYg
KzI5LDggQEAKICNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRl
bnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAi
Tm9kZS5oIgogI2luY2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJG
dWxsU2NyZWVuLmgiCkBAIC00Myw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKwogc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RS
ZW5kZXJlck9mKE5vZGUqKTsKIHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKE5v
ZGUqKTsKIApAQCAtNTksMjYgKzYzLDIxIEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVu
ZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAvLyBGSVhN
RTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hh
ZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG9kX2J1Z3MuY2dpP2lkPTc4NTk2Ci0gICAgICAgIGlmICh0b1NoYWRvd1Jvb3QocGFyZW50
KS0+aXNZb3VuZ2VzdCgpKQotICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRvd0No
aWxkOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlz
dHJpYnV0ZWQ7CisgICAgaWYgKHBhcmVudC0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFkb3dSb290
KHBhcmVudCktPmlzWW91bmdlc3QoKSkgeworICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hh
ZG93Q2hpbGQ7CiAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFy
ZW50LT5zaGFkb3dIb3N0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocGFy
ZW50LT5pc0VsZW1lbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKHRvRWxlbWVudChwYXJlbnQpLT5o
YXNTaGFkb3dSb290KCkpIHsKKyAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgfHwgcGFy
ZW50LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2Rl
KCkgJiYgdG9FbGVtZW50KHBhcmVudCktPmhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIG1f
dmlzdWFsUGFyZW50U2hhZG93VHJlZSA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dUcmVlKCk7
Ci0gICAgICAgICAgICBpZiAoKG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRv
d1RyZWUtPmluc2VydGlvblBvaW50Rm9yKG1fbm9kZSkpCi0gICAgICAgICAgICAgICAgJiYgbV92
aXN1YWxQYXJlbnRTaGFkb3dUcmVlLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKKyAgICAgICAgZWxz
ZSBpZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50
U2hhZG93VHJlZSA9IHRvU2hhZG93Um9vdChwYXJlbnQpLT50cmVlKCk7CiAKLSAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24t
eW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAgICAgICAgICAgIC8vIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAgICAg
ICAgICBpZiAodG9TaGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9k
ZSgpKS0+aXNZb3VuZ2VzdCgpKSB7CisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1Ry
ZWUpIHsKKyAgICAgICAgICAgIGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50
U2hhZG93VHJlZS0+aW5zZXJ0aW9uUG9pbnRGb3IobV9ub2RlKSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAodG9TaGFkb3dSb290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgp
KS0+aXNVc2VkRm9yUmVuZGVyaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9
IEF0dGFjaGluZ0Rpc3RyaWJ1dGVkOwogICAgICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVG
b3JSZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9p
bnQpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CkBAIC05MSw5ICs5MCw3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVu
ZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzU2hh
ZG93Qm91bmRhcnkocGFyZW50KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1
cHBvcnQgPHNoYWRvdz4geWV0LCBzbyB0aGUgbm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSBy
ZW5kZXJlZC4KLSAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
cy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAgICAgIGlmICghdG9TaGFkb3dSb290KHBhcmVudC0+c2hh
ZG93VHJlZVJvb3ROb2RlKCkpLT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgIGlmICghdG9T
aGFkb3dSb290KHBhcmVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc1VzZWRGb3JSZW5kZXJp
bmcoKSkgewogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRl
ZDsKICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBh
cmVudDsKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAK
aW5kZXggMjgwZGIxMTRlMDU0MDMxZjJlZTc5NmJkODQ0YjkzNGY0MjFkZTQyMS4uN2E5NzFkNWZi
NTBhYWFjZjQ2NTVmNDBmMzYzM2ZlZDBlMzdkMTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcApAQCAtNTIsNiArNTIsNyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBk
b2N1bWVudCkKICAgICAsIG1fcHJldigwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX2FwcGx5
QXV0aG9yU2hlZXRzKGZhbHNlKQorICAgICwgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8oMCkK
IHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5k
ZXggM2RmMjhjNmE0YjU1OWU1YTVhMTY4NGIzOWUzOGE0Y2M4MjY2NDY2Yi4uMTMwMjhjMGQ2NjM5
ZmVjNjMzYWZhOTM2OTk4N2NjMjQ0N2NjNzJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBA
IC04Myw2ICs4MywxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAK
KyAgICBib29sIGlzVXNlZEZvclJlbmRlcmluZygpIGNvbnN0OworICAgIEluc2VydGlvblBvaW50
KiBhc3NpZ25lZFRvKCkgY29uc3Q7CisgICAgdm9pZCBzZXRBc3NpZ25lZFRvKEluc2VydGlvblBv
aW50Kik7CisKIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwogICAgIHZpcnR1
YWwgflNoYWRvd1Jvb3QoKTsKQEAgLTk0LDggKzk4LDI1IEBAIHByaXZhdGU6CiAgICAgU2hhZG93
Um9vdCogbV9wcmV2OwogICAgIFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAgICBib29sIG1fYXBwbHlB
dXRob3JTaGVldHMgOiAxOworICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50QXNz
aWduZWRUbzsKIH07CiAKK2lubGluZSBJbnNlcnRpb25Qb2ludCogU2hhZG93Um9vdDo6YXNzaWdu
ZWRUbygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvOwor
fQorCitpbmxpbmUgdm9pZCBTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCkKK3sKKyAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnRBc3NpZ25l
ZFRvIHx8ICFpbnNlcnRpb25Qb2ludCk7CisgICAgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8g
PSBpbnNlcnRpb25Qb2ludDsKK30KKworaW5saW5lIGJvb2wgU2hhZG93Um9vdDo6aXNVc2VkRm9y
UmVuZGVyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaXNZb3VuZ2VzdCgpIHx8IGFzc2lnbmVk
VG8oKTsKK30KKwogaW5saW5lIGNvbnN0IFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChjb25zdCBO
b2RlKiBub2RlKQogewogICAgIEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAKaW5kZXggYmVlMzcyZjc4ZTc2Nzc3OTAxMGEyZmNj
NDc3NzYxMDI1MzE1ZTE5Yi4uYTIyNTExMTYwYWIxMjBjODk2MDkxYzg0NjYzZWNjMDk2ODg0NTY2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250
ZW50U2VsZWN0b3IuaCIKKyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUg
Ikluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC0xOTgsNiArMTk5LDE1IEBAIHZv
aWQgU2hhZG93VHJlZTo6ZGV0YWNoSG9zdChFbGVtZW50KiBob3N0KQogCiBJbnNlcnRpb25Qb2lu
dCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKIHsKKyAg
ICBBU1NFUlQobm9kZSAmJiBub2RlLT5wYXJlbnROb2RlKCkpOworCisgICAgaWYgKG5vZGUtPnBh
cmVudE5vZGUoKS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50
KiBpbnNlcnRpb25Qb2ludCA9IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2RlKCkpLT5hc3Np
Z25lZFRvKCkpCisgICAgICAgICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CisKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCFtX3NlbGVjdG9yKQogICAgICAgICByZXR1cm4g
MDsKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9y
KG5vZGUpOwpAQCAtMjA2LDExICsyMTYsNiBAQCBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6
aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gZm91bmQtPmlu
c2VydGlvblBvaW50KCk7CiB9CiAKLWJvb2wgU2hhZG93VHJlZTo6aXNTZWxlY3RvckFjdGl2ZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlk
YXRlcygpOwotfQotCiB2b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkKIHsKICAgICBkZXRhY2go
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCmluZGV4IDBlZmJkYjEzNjc0MzAzZmY2N2E3MWUxMGVj
YzU1MWE1YTQ3NTQ4NGYuLjU0YzQxYmJlNDE5ZjVjM2IxMmU3ODY4MmI2ZDQ5MjI1ZDQ2ZjliOTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuaApAQCAtODIsOCArODIsNiBAQCBwdWJsaWM6CiAgICAg
SFRNTENvbnRlbnRTZWxlY3Rvciogc2VsZWN0b3IoKSBjb25zdDsKICAgICBIVE1MQ29udGVudFNl
bGVjdG9yKiBlbnN1cmVTZWxlY3RvcigpOwogCi0gICAgYm9vbCBpc1NlbGVjdG9yQWN0aXZlKCkg
Y29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCmluZGV4IGRjNjNm
MTFlN2U1NDg0MWI2Y2VjNDEyNzljZTc0OGYwZGMwMTFiNWEuLmVjNjYyMTdjNTI1NjNmNWJjMmMx
MmVkNzk3ZjU5ODI3YTE4Y2U4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0hUTUxDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxDb250ZW50RWxlbWVudC5oCkBAIC01NCw2ICs1NCw4IEBAIHB1YmxpYzoKICAgICAvLyBT
ZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjYxCiAgICAgdm9p
ZCBzZXRTZWxlY3QoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKKyAgICBib29sIGRvZXNTZWxlY3RG
cm9tSG9zdENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgdmlydHVhbCBi
b29sIGlzU2VsZWN0VmFsaWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGNiMDFjZDIxZmUw
ZTAwOWE1ZThlMDAzYWI5Yjg0YjY4ZmRkNDI5MzAuLjdjNjllZjQ0OGJhYmUwMjZlMjI1ZmMyYWMx
NzY1MmE3OTU1MWM1NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1M
U2hhZG93RWxlbWVudC5jcHAKQEAgLTI5LDE5ICsyOSwxOCBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLQotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotCiAjaW5jbHVkZSAiSFRNTFNoYWRv
d0VsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIAogaW5saW5lIEhUTUxTaGFkb3dFbGVtZW50OjpI
VE1MU2hhZG93RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICA6IElu
c2VydGlvblBvaW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KEhUTUxOYW1lczo6c2hhZG93VGFnKSk7CiB9CkBAIC01NSw2ICs1NCwxNiBAQCBIVE1MU2hhZG93
RWxlbWVudDo6fkhUTUxTaGFkb3dFbGVtZW50KCkKIHsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorY29uc3QgQXRvbWljU3RyaW5nJiBIVE1MU2hhZG93RWxlbWVudDo6c2VsZWN0KCkgY29u
c3QKK3sKKyAgICAgcmV0dXJuIG51bGxBdG9tOworfQogCi0jZW5kaWYgLy8gRU5BQkxFKFNIQURP
V19ET00pCitib29sIEhUTUxTaGFkb3dFbGVtZW50Ojpkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJl
bigpIGNvbnN0Cit7CisgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2hh
ZG93VHJlZVJvb3ROb2RlKCkpKQorICAgICAgICByZXR1cm4gcm9vdC0+aXNPbGRlc3QoKTsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCmluZGV4IDE1MWM3YTJhYmJk
NmM1MDU3ODk0M2ZkNmRjY2ZmZjA1YzljOWZmZjcuLjVmOTg2ZjViZjhlYTkzZjE3NTYxNDAxNmNk
Y2JiMzcxMmJjM2IyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxTaGFkb3dFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNo
YWRvd0VsZW1lbnQuaApAQCAtMzEsMTggKzMxLDIwIEBACiAjaWZuZGVmIEhUTUxTaGFkb3dFbGVt
ZW50X2gKICNkZWZpbmUgSFRNTFNoYWRvd0VsZW1lbnRfaAogCi0jaWYgRU5BQkxFKFNIQURPV19E
T00pCi0KLSNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50
LmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBIVE1MU2hhZG93RWxlbWVudCA6IHB1YmxpYyBIVE1MRWxlbWVudCB7CitjbGFzcyBIVE1M
U2hhZG93RWxlbWVudCA6IHB1YmxpYyBJbnNlcnRpb25Qb2ludCB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SFRNTFNoYWRvd0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgfkhUTUxTaGFkb3dFbGVtZW50KCk7CiAK
KyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVjdCgpIGNvbnN0OworICAgIGJvb2wgZG9lc1Nl
bGVjdEZyb21Ib3N0Q2hpbGRyZW4oKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBIVE1MU2hhZG93
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNTaGFkb3dFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTAsNiArNTIs
NCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFC
TEUoU0hBRE9XX0RPTSkKLQogI2VuZGlmIC8vIEhUTUxTaGFkb3dFbGVtZW50X2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCAzOWZhNzIwNGQ5
MTNkNzcxNjYxNjQzY2I5N2I3ODAwNzg4NTQ3Y2YzLi5lMzVkMGE2YWU5YjlkMzM3ZjgyZjA3Y2Y2
YTZiM2RlYzBhNjZkMmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuY3BwCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIEluc2Vy
dGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkK
ICAgICAsIG1fc2VsZWN0aW9ucygpCisgICAgLCBzaGFkb3dSb290QXNzaWduZWRGcm9tKDApCiB7
CiB9CiAKQEAgLTQ5LDggKzUwLDE0IEBAIEluc2VydGlvblBvaW50Ojp+SW5zZXJ0aW9uUG9pbnQo
KQogdm9pZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKCkKIHsKICAgICBpZiAoU2hhZG93Um9vdCog
cm9vdCA9IHRvU2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKLSAgICAgICAgZGlz
dHJpYnV0ZUhvc3RDaGlsZHJlbihyb290LT50cmVlKCkpOwotICAgICAgICBhdHRhY2hEaXN0cmli
dXRlZE5vZGUoKTsKKyAgICAgICAgaWYgKGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkpIHsK
KyAgICAgICAgICAgIGRpc3RyaWJ1dGVIb3N0Q2hpbGRyZW4ocm9vdC0+dHJlZSgpKTsKKyAgICAg
ICAgICAgIGF0dGFjaERpc3RyaWJ1dGVkTm9kZSgpOworICAgICAgICB9IGVsc2UgaWYgKCFyb290
LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXNzaWduZWRUbygpKSB7CisgICAgICAgICAgICBBU1NFUlQo
IXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5hdHRhY2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2ln
blNoYWRvd1Jvb3Qocm9vdC0+b2xkZXJTaGFkb3dSb290KCkpOworICAgICAgICAgICAgcm9vdC0+
b2xkZXJTaGFkb3dSb290KCktPmF0dGFjaCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgSFRN
TEVsZW1lbnQ6OmF0dGFjaCgpOwpAQCAtNjAsNyArNjcsMTEgQEAgdm9pZCBJbnNlcnRpb25Qb2lu
dDo6ZGV0YWNoKCkKIHsKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9vdChz
aGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKICAgICAgICAgU2hhZG93VHJlZSogdHJlZSA9IHJvb3Qt
PnRyZWUoKTsKLSAgICAgICAgY2xlYXJEaXN0cmlidXRpb24odHJlZSk7CisKKyAgICAgICAgaWYg
KGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkpCisgICAgICAgICAgICBjbGVhckRpc3RyaWJ1
dGlvbih0cmVlKTsKKyAgICAgICAgZWxzZSBpZiAoU2hhZG93Um9vdCogYXNzaWduZWRTaGFkb3dS
b290ID0gYXNzaWduZWRGcm9tKCkpCisgICAgICAgICAgICBjbGVhckFzc2lnbm1lbnQoYXNzaWdu
ZWRTaGFkb3dSb290KTsKIAogICAgICAgICAvLyBXaGVuIHNoYWRvdyBlbGVtZW50IGlzIGRldGFj
aGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxl
Y3RvciBmb3IKICAgICAgICAgLy8gb3RoZXIgaW5zZXJ0aW9uIHBvaW50cy4KQEAgLTEwMiw0ICsx
MTMsMjIgQEAgaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaERpc3RyaWJ1dGVkTm9k
ZSgpCiAgICAgICAgIHNlbGVjdGlvbi0+bm9kZSgpLT5hdHRhY2goKTsKIH0KIAoraW5saW5lIHZv
aWQgSW5zZXJ0aW9uUG9pbnQ6OmFzc2lnblNoYWRvd1Jvb3QoU2hhZG93Um9vdCogc2hhZG93Um9v
dCkKK3sKKyAgICBzZXRBc3NpZ25lZEZyb20oc2hhZG93Um9vdCk7CisgICAgc2hhZG93Um9vdC0+
c2V0QXNzaWduZWRUbyh0aGlzKTsKKworICAgIG1fc2VsZWN0aW9ucy5jbGVhcigpOworICAgIGZv
ciAoTm9kZSogbm9kZSA9IHNoYWRvd1Jvb3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5v
ZGUtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIG1fc2VsZWN0aW9ucy5hcHBlbmQoSFRNTENvbnRl
bnRTZWxlY3Rpb246OmNyZWF0ZSh0aGlzLCBub2RlKSk7Cit9CisKK2lubGluZSB2b2lkIEluc2Vy
dGlvblBvaW50OjpjbGVhckFzc2lnbm1lbnQoU2hhZG93Um9vdCogc2hhZG93Um9vdCkKK3sKKyAg
ICBzaGFkb3dSb290LT5zZXRBc3NpZ25lZFRvKDApOworICAgIHNldEFzc2lnbmVkRnJvbSgwKTsK
KworICAgIG1fc2VsZWN0aW9ucy5jbGVhcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA3ZTVh
ZGU5NmMwOTM5NzIxNTU3OGY3MTVlNGVmNzQ5YmY4ZmY5ZWI3Li4xN2Q4ODAxNjk5NGJiYzFjMmM2
ZjI5ZjVhOTBlZGJlMWRhMDZiYzY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUgIkhUTUxDb250ZW50
U2VsZWN0b3IuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQ2LDEwICs0NywxNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1NoYWRvd0JvdW5kYXJ5KCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0KCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNo
KCk7CiAKKyAgICBTaGFkb3dSb290KiBhc3NpZ25lZEZyb20oKSBjb25zdDsKKyAgICB2b2lkIHNl
dEFzc2lnbmVkRnJvbShTaGFkb3dSb290Kik7CisKIHByb3RlY3RlZDoKICAgICBJbnNlcnRpb25Q
b2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wg
cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5nQ29udGV4dCYpIE9WRVJSSURFOwpA
QCAtNTksMTUgKzY0LDE5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckRpc3RyaWJ1dGlvbihT
aGFkb3dUcmVlKik7CiAgICAgdm9pZCBhdHRhY2hEaXN0cmlidXRlZE5vZGUoKTsKIAorICAgIHZv
aWQgYXNzaWduU2hhZG93Um9vdChTaGFkb3dSb290Kik7CisgICAgdm9pZCBjbGVhckFzc2lnbm1l
bnQoU2hhZG93Um9vdCopOworCiAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb25MaXN0IG1fc2VsZWN0
aW9uczsKKyAgICBTaGFkb3dSb290KiBzaGFkb3dSb290QXNzaWduZWRGcm9tOwogfTsKIAogaW5s
aW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChOb2RlKiBub2RlKQogewotICAgIC8vIEZJWE1FOiA8
c2hhZG93PiBzaG91bGQgYWxzbyBiZSBJbnNlcnRpb25Qb2ludC4KLSAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKICAgICBpZiAoIW5vZGUgfHwgbm9k
ZS0+aXNDb250ZW50RWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAobm9k
ZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRvd1RhZykpCisgICAgICAgIHJldHVybiB0cnVl
OwogCiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtODUsNiArOTQsMTcgQEAgaW5saW5lIGJvb2wg
aXNTaGFkb3dCb3VuZGFyeShOb2RlKiBub2RlKQogICAgIHJldHVybiB0b0luc2VydGlvblBvaW50
KG5vZGUpLT5pc1NoYWRvd0JvdW5kYXJ5KCk7CiB9CiAKK2lubGluZSBTaGFkb3dSb290KiBJbnNl
cnRpb25Qb2ludDo6YXNzaWduZWRGcm9tKCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2hhZG93Um9v
dEFzc2lnbmVkRnJvbTsKK30KKworaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OnNldEFzc2ln
bmVkRnJvbShTaGFkb3dSb290KiBzaGFkb3dSb290KQoreworICAgIEFTU0VSVCghc2hhZG93Um9v
dEFzc2lnbmVkRnJvbSB8fCAhc2hhZG93Um9vdCk7CisgICAgc2hhZG93Um9vdEFzc2lnbmVkRnJv
bSA9IHNoYWRvd1Jvb3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEluc2VydGlvblBvaW50X2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZTI5ZDlhZGI2MDk1MjRmMmMzMjM0NGNhNzcyNDlh
ODNjMTk3M2ZhLi5lMDMzODQ0ZjFmYTZlOTdkYmMwNjkwNTUzNGVhMmEyMjRmNTM0ODJkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDMtMDYgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIDxzaGFkb3c+IHNob3VsZCBiZSByZW5kZXJlZCBjb3Jy
ZWN0bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bnRhaW5zIHRlc3RzIGJvdGggaW4gY2FzZSA8c2hhZG93PiBhcHBlYXJzIGluIHRoZSBvbGRlc3Qg
c2hhZG93IHJvb3QgYW5kCisgICAgICAgIG5vbi1vbGRlcnN0IHNoYWRvdyB0cmVlLgorCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxl
bWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNp
bmdsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVk
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bmNhaXJvL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTIt
MDMtMDYgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCB1cGRhdGUgbWFjIHRleHQgYmFzZWxpbmVzIGFmdGVyIHIxMDk4NTEKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmct
bXVsdGlwbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFk
YWMyMGZkZjNhYWVkYTYzMDI5Y2Y2OGRiYjg1ODc0Yzk2MjUzYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVs
dGlwbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK3JlbmRlcmluZ0RvdWJsZVNoYWRv
d1Jvb3QKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RXaXRoT25lU2hhZG93RWxlbWVu
dAorUEFTUworcmVuZGVyaW5nVHJpcGxlU2hhZG93Um9vdAorUEFTUworcmVuZGVyaW5nVHdvU2hh
ZG93Um9vdHMKK1BBU1MKK3Rlc3RXaXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MQorUEFT
UwordGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQyCitQQVNTCityZW5kZXJpbmdE
b3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDEKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNo
YWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMgorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9v
dER5bmFtaWNhbGx5QWRkZWQzCitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1p
Y2FsbHlSZW1vdmVkMQorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5
UmVtb3ZlZDIKK1BBU1MKK3JlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVkCitQ
QVNTCityZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlBZGRlZAorUEFT
UworcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5UmVtb3ZlZAorUEFTUworcmVuZGVy
aW5nT2xkZXJTaGFkb3dSb290Q29udGVudER5bmFtaWNhbGx5UmVtb3ZlZAorUEFTUworVEVTVCBD
T01QTEVURUQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJlZGU4MTgxMzBiMmQzYTZkN2VkY2VjMGNjY2NjZDM5YzgzMjVmN2IKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5n
LW11bHRpcGxlLmh0bWwKQEAgLTAsMCArMSw0NDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJs
eWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZl
OworfQorCisuc3BhbiB7CisgICAgZGlzcGxheTogYm94ZWQtaW5saW5lOworICAgIG1hcmdpbjog
MnB4OworICAgIGJvcmRlcjogc29saWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHNldFVwT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVl
c0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlYXJEb3duT25jZSgpIHsKKyAgICBpbnRl
cm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoZmFsc2UpOworfQorCit2YXIg
dGVzdEZ1bmNzID0gW107CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJs
ZVNoYWRvd1Jvb3QoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JF
IDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVS
IDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScp
KTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAg
IGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdE
b3VibGVTaGFkb3dSb290V2l0aE9uZVNoYWRvd0VsZW1lbnQoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNw
YW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICAvLyBN
SUQgd29uJ3QgYmUgcmVuZGVyZWQuCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlE
JykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNy
MS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3Iy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fj
dHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9
KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nVHJpcGxlU2hhZG93Um9vdChj
YWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMzwvc3Bhbj48c3Bh
bj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFu
Pk1JRDwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIg
Mjwvc3Bhbj48c3Bhbj5BRlRFUiAzPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
IDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRv
dycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykp
OworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIHZhciBzcjMgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUgMycpKTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSIDMnKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFs
LWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOwor
Cit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdUd29TaGFkb3dSb290cyhjYWxsSWZE
b25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj4iICsKKyAgICAg
ICAgICAgICI8c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIg
MTwvc3Bhbj4iICsKKyAgICAgICAgICAgICI8c3Bhbj5GQUxMQkFDSyAyLTI8L3NwYW4+IiArCisg
ICAgICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
IDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRv
dycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykp
OworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHZhciBz
aGFkb3cyMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIx
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sgMi0xJykpOworICAgIHZh
ciBzaGFkb3cyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRv
dzIyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sgMi0yJykpOworCisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKHNoYWRvdzIxKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoc2hhZG93MjIp
OworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENo
aWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5j
dGlvbiB0ZXN0V2l0aERvdWJsZVNoYWRvd1Jvb3RXaXRoQ29udGVudDEoY2FsbElmRG9uZSkgewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1M
ID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+TUlEIDI8L3NwYW4+
IiArCisgICAgICAgICI8c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQgMTwvc3Bhbj48c3Bh
bj5NSUQgMzwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QUZU
RVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlE
IDMnLCAnc3IzJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQgMScsICdzcjEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J01JRCAyJywgJ3NyMicpKTsKKworICAgIHZhciBzaGFkb3cxID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ1NIQURPVyBGQUxMQkFDSyAxJykpOworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZP
UkUgMScpKTsKKyAgICB2YXIgY29udGVudDEgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNy
MScsICdDT05URU5UIEZBTExCQUNLIDEnKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY29udGVudDEp
OworICAgIHNyMS5hcHBlbmRDaGlsZChzaGFkb3cxKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNoYWRvdzIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDInKSk7CisgICAgdmFyIHNyMiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHZhciBjb250ZW50OworICAgIHNyMi5hcHBlbmRDaGls
ZChjb250ZW50ID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5zcjInLCAnQ09OVEVOVCBGQUxM
QkFDSyAyJykpOworICAgIGNvbnRlbnQudGl0bGUgPSAiZGVidWdzdG9wIjsKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoc2hhZG93Mik7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rl
c3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50
MihjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250
YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48
c3Bhbj5NSUQgMjwvc3Bhbj48c3Bhbj5NSUQgMzwvc3Bhbj48c3Bhbj5NSUQgMTwvc3Bhbj4iICsK
KyAgICAgICAgIjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPkNPTlRFTlQgRkFMTEJBQ0sgMTwv
c3Bhbj48c3Bhbj5TSEFET1cgRkFMTEJBQ0sgMTwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPiIg
KworICAgICAgICAiPHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3Qg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDMnLCAnc3IzJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMScsICdzcjEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAyJywgJ3NyMicpKTsKKworICAgIHZhciBzaGFkb3cx
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MS5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSyAxJykpOworICAgIHZhciBz
cjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
Q29udGVudFdpdGhTZWxlY3QoJy5zcjEnLCAnQ09OVEVOVCBGQUxMQkFDSyAxJykpOworICAgIHNy
MS5hcHBlbmRDaGlsZChzaGFkb3cxKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNoYWRvdzIgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnU0hBRE9XIEZBTExCQUNLIDInKSk7CisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgn
LnNyMicsICdDT05URU5UIEZBTExCQUNLIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQgRkFMTEJBQ0sgMycpKTsKKyAgICBz
cjIuYXBwZW5kQ2hpbGQoc2hhZG93Mik7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1
YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7
CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5h
bWljYWxseUFkZGVkMShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZP
UkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZU
RVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVG
T1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3No
YWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAx
JykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5h
cHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIGNhbGxJZkRv
bmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0JFRk9SRSAyJykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93JykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHJv
b3QsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVu
Y3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRl
ZDIoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29u
dGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+
PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+
PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAg
IHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBm
ID0gKGZ1bmN0aW9uKHNyMiwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAg
ICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICAg
ICAgc3IyLmluc2VydEJlZm9yZShzaGFkb3csIHNyMi5sYXN0Q2hpbGQpOworCisgICAgICAgIGNh
bGxJZkRvbmUoKQorICAgIH07fSkoc3IyLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQo
ZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hh
ZG93Um9vdER5bmFtaWNhbGx5QWRkZWQzKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2
PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bh
bj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAg
IHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJv
b3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykp
OworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7
CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hp
bGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0
dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93Jyk7CisgICAgICAgIHNyMS5pbnNlcnRCZWZvcmUoc2hhZG93LCBzcjEubGFz
dENoaWxkKTsKKworICAgICAgICBjYWxsSWZEb25lKCkKKyAgICB9O30pKHNyMSwgY2FsbElmRG9u
ZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0
aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseVJlbW92ZWQxKGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkFGVEVS
IDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcp
KTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVh
bC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9u
KHNyMiwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNyMi5yZW1v
dmVDaGlsZChzcjIuZmlyc3RDaGlsZC5uZXh0U2libGluZyk7CisgICAgICAgIGNhbGxJZkRvbmUo
KTsKKyAgICB9O30pKHNyMiwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOwor
fSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RE
eW5hbWljYWxseVJlbW92ZWQyKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFu
PkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+
PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7Cisg
ICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAg
IHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYg
PSAoZnVuY3Rpb24oc3IxLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgc3IxLnJlbW92ZUNoaWxkKHNyMS5maXJzdENoaWxkLm5leHRTaWJsaW5nKTsKKyAgICAgICAg
Y2FsbElmRG9uZSgpOworICAgIH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVv
dXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRD
aGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+
PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFu
PjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAg
dmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKworICAgIHZhciBzcjEg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
IDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRv
dycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykp
OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBl
bmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIGNhbGxJZkRvbmUp
IHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTUlEJykpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShyb290
LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNz
LnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nT2xkZXJTaGFkb3dSb290Q29udGVudER5bmFtaWNhbGx5
QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3Nw
YW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3Nw
YW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJv
b3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykp
OworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7
CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAg
IHZhciBmID0gKGZ1bmN0aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7
CisgICAgICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7
CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHNyMSwgY2FsbElmRG9uZSk7CisKKyAg
ICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRl
cmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNw
YW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIg
cm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktp
dFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAg
IHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9v
dCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihyb290LCBjYWxsSWZEb25lKSB7IHJldHVybiBm
dW5jdGlvbigpIHsKKyAgICAgICAgcm9vdC5yZW1vdmVDaGlsZChyb290LmZpcnN0Q2hpbGQpOwor
ICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShyb290LCBjYWxsSWZEb25lKTsKKworICAg
IHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVy
aW5nT2xkZXJTaGFkb3dSb290Q29udGVudER5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwv
c3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9z
cGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisK
KyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ1NIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICB2YXIg
c3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1
bmN0aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNy
MS5yZW1vdmVDaGlsZChzcjEubGFzdENoaWxkKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAg
IH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCh0ZXN0RnVuY3MpIj4KKwor
PGRpdiBpZD0iYWN0dWFsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2
IGlkPSJleHBlY3QtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVu
ZGVyaW5nLXNpbmdsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IxMGNjYmIwOTQ3NDdjOTUz
NzFmYTkyM2IxYmE0ZWMyM2I2NDI3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIyIEBACityZW5kZXJpbmdTaW5nbGVTaGFkb3dSb290CitQQVNTCityZW5k
ZXJpbmdOb3RGYWxsYmFja2VkCitQQVNTCityZW5kZXJpbmdGYWxsYmFja2VkCitQQVNTCityZW5k
ZXJpbmdNaXhlZE9mRmFsbGJhY2tBbmROb25GYWxsYmFjaworUEFTUworcmVuZGVyaW5nU2hhZG93
Um9vdEJlZm9yZUNvbnRlbnQKK1BBU1MKK3JlbmRlcmluZ1NoYWRvd1Jvb3RBZnRlckNvbnRlbnQK
K1BBU1MKK3JlbmRlcmluZ1NoYWRvd0VsZW1lbnREeW5hbWljYWxseUFkZGVkCitQQVNTCityZW5k
ZXJpbmdTaGFkb3dFbGVtZW50RHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCityZW5kZXJpbmdMaWdo
dENoaWxkcmVuRHluYW1pY2FsbHlBZGRlZAorUEFTUworcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5
bmFtaWNhbGx5UmVtb3ZlZAorUEFTUworVEVTVCBDT01QTEVURUQKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJp
bmctc2luZ2xlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlODA2Zjk1YTE4NmM3YmM0NjE4MDgwMzk4NWNm
MThiOTdkMWEzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKQEAgLTAsMCArMSwyNDQgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBv
c2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7
CisgICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisuc3BhbiB7CisgICAgZGlzcGxheTogYm94
ZWQtaW5saW5lOworICAgIG1hcmdpbjogMnB4OworICAgIGJvcmRlcjogc29saWQ7Cit9Cis8L3N0
eWxlPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHNldFVwT25jZSgpIHsKKyAgICBpbnRlcm5hbHMu
c2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRl
YXJEb3duT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0Vu
YWJsZWQoZmFsc2UpOworfQorCit2YXIgdGVzdEZ1bmNzID0gW107CisKK3Rlc3RGdW5jcy5wdXNo
KGZ1bmN0aW9uIHJlbmRlcmluZ1NpbmdsZVNoYWRvd1Jvb3QoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRF
Ujwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykp
OworCisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyLmFwcGVuZENoaWxk
KGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRv
bmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdOb3RGYWxsYmFj
a2VkKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNv
bnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48
c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdGQUxMQkFDSycpKTsKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScp
KTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsK
K30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdGYWxsYmFja2VkKGNhbGxJ
ZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicp
LmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5GQUxM
QkFDSzwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdGQUxMQkFDSycpKTsKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUo
KTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdNaXhlZE9mRmFsbGJh
Y2tBbmROb25GYWxsYmFjayhjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5C
RUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkZBTExCQUNLIDI8L3NwYW4+PHNwYW4+
QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzaGFkb3cxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93
Jyk7CisgICAgc2hhZG93MS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNL
IDEnKSk7CisgICAgdmFyIHNoYWRvdzIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cn
KTsKKyAgICBzaGFkb3cyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sg
MicpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVu
ZENoaWxkKHNoYWRvdzEpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdzIpOworICAgIHNyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAg
IGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdT
aGFkb3dSb290QmVmb3JlQ29udGVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48
c3Bhbj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPk0gMTwvc3Bhbj48c3Bhbj5D
T05URU5UIEZBTExCQUNLPC9zcGFuPjxzcGFuPk0gMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48
L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsK
KyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAg
dmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRv
dy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSycpKTsKKyAg
ICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFk
b3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTSAxJykpOworICAg
IHNyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQg
RkFMTEJBQ0snKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDIn
KSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKwor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hp
bGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0
aW9uIHJlbmRlcmluZ1NoYWRvd1Jvb3RBZnRlckNvbnRlbnQoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5NIDE8
L3NwYW4+PHNwYW4+U0hBRE9XIEZBTExCQUNLPC9zcGFuPjxzcGFuPk0gMjwvc3Bhbj48c3Bhbj5B
RlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlE
JykpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
OworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxM
QkFDSycpKTsKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBz
ci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBl
bmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdDT05URU5UIEZBTExCQUNL
JykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTSAxJykpOworICAg
IHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdNIDInKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5j
cy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1NoYWRvd0VsZW1lbnREeW5hbWljYWxseUFkZGVkKGNh
bGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5l
cicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5N
SUQ8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScp
KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
cm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCByb290LCBzcikgeyBy
ZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKTsKKyAgICAgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICAg
ICAgY2FsbElmRG9uZSgpOworICAgIH19KShjYWxsSWZEb25lLCByb290LCBzcik7CisKKyAgICBz
ZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmlu
Z1NoYWRvd0VsZW1lbnREeW5hbWljYWxseVJlbW92ZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiIKKwor
ICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7
CisKKyAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisK
KyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChz
aGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7
CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVu
ZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oY2FsbElmRG9uZSwgc3IsIHNo
YWRvdykgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNyLnJlbW92ZUNoaWxkKHNoYWRv
dyk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwgc3IsIHNoYWRv
dyk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0
aW9uIHJlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVkKGNhbGxJZkRvbmUpIHsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRN
TCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNw
YW4+QUZURVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAg
IHNyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBz
ci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsK
KworICAgIHZhciBmID0gKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QpIHsgcmV0dXJuIGZ1bmN0
aW9uKCkgeworICAgICAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlE
JykpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3QpOwor
CisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiBy
ZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRvbmUpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+
QUZURVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hP
VUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAg
ICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFs
LWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24o
Y2FsbElmRG9uZSwgcm9vdCkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QucmVt
b3ZlQ2hpbGQocm9vdC5maXJzdENoaWxkKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH19
KShjYWxsSWZEb25lLCByb290KTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCh0ZXN0RnVuY3MpIj4KKworPGRp
diBpZD0iYWN0dWFsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlk
PSJleHBlY3QtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVk
CmluZGV4IDc1YjEzZWQ2ZjRlYjRmNmRjOWUwOGViNDNkM2ViN2YwMjE0YWE1MDAuLjc5MjA2NjNm
OThmZjU2YjA3NWYwMzMxNmFlOTljZmJmNmUwYjE1MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lw
cGVkCkBAIC0yMDk5LDYgKzIwOTksOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUu
aHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWFwcGVuZC5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNp
bmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRp
cGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCmluZGV4IGM3NzI4MWNiYWMyOTc3NGEwNDc2NWUzYzk2NTc4YWFiNjBkZjBiMmEuLjZiMjE0
OTBkODAxYjBiYjlmNDI0NDI3M2QyY2UxMDAwYzRlN2YzNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9T
a2lwcGVkCkBAIC00MzYsNiArNDM2LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlu
bmVySFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWFwcGVuZC5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNp
bmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRp
cGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3Qv
ZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAppbmRleCBiNDdjYzg1ZWVmNDU1NTg0NzJlYmFmZmNmZTEzNjM3NGNkOTliZTM4Li4yZGZhN2My
NzViOWMzMWViZWM1ZDBjNWNmNzJhM2Y4MjJjNmVkMjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBw
ZWQKQEAgLTE3NSw2ICsxNzUsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJI
VE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20v
c2hhZG93L3NoYWRvdy11bC1saS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXBw
ZW5kLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xl
Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUu
aHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20v
c2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRv
dy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
aW5kZXggNDI0NzIyZDdlMDgxZjhhMjgzNThlYWIxNmZlMGZmYWNiYWZhYTY0Mi4uNjY5YmQzOThm
OWVjYjNjNTgxMjFjMGE4ZjQ2ZTA1OWQxYjZlM2M5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBw
ZWQKQEAgLTE0NjIsNiArMTQ2Miw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1pbm5l
ckhUTUwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1h
cHBlbmQuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5n
bGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBs
ZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2Rv
bS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFzdC9kb20vc2hh
ZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKaW5kZXggOTA4YWUyMWUxMDQyNzYyMzNhZGMwMGYzNmIyMjY2YjkwOTA2ZWU2
Yy4uYjY4ZTFlZjg2YzI3OGE1NjFkNzRjNTM4Mzk2YjNlODViMWM2MWUwMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xOTc1LDYgKzE5NzUsOCBAQCBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
b290LWlubmVySFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwK
IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hcHBlbmQuaHRtbAorZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3No
YWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVs
dGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9v
dC1yZW5kZXJpbmcuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRv
cHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCBjOTQ0YWVjZjM4ODA4ZTliZDhj
M2QwYTlmM2QwOWE4MTljMWNlN2VjLi4wZWUwYzA1YWE3OTE3YjA0ZjhjYzM3Y2IwMWE1MDdkYzM2
MWU4MTVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTA3Myw2ICsxMDczLDggQEAg
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlubmVySFRNTC5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFwcGVuZC5odG1sCitmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9t
dWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dy
b290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1h
ZG9wdC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130561</attachid>
            <date>2012-03-07 00:55:53 -0800</date>
            <delta_ts>2012-03-08 00:53:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78596-20120307175552.patch</filename>
            <type>text/plain</type>
            <size>50509</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDQ4ZmZjODU1MmEyOWNj
YThiNTllMWE1MjcxYjBiMWU2ZjdhYzA3OS4uZjViNzRjYjZiZGM0NmI5MmMxY2M3YzBjM2JkYmY1
M2UyMGYyN2Y4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTAzLTA3ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBz
aG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIDxzaGFkb3c+IGVsZW1lbnQg
cmVuZGVyaW5nLgorCisgICAgICAgIFdoZW4gYXR0YWNoaW5nIDxzaGFkb3c+IGVsZW1lbnQsIGlm
IGl0IGlzIGluIHRoZSBvbGRlc3Qgc2hhZG93IHRyZWUsIGl0IHJ1bnMgYSBwYXJ0IG9mCisgICAg
ICAgIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0uIElmIGl0IGlzIGluIG5vbi1vbGRlc3Qgc2hhZG93
IHRyZWUsIGl0IHJ1bnMgdHJlZSBhIHBhcnQgb2YKKyAgICAgICAgdHJlZSBjb21wb3NpdGlvbiBh
bGdvcml0aG0gdG8gYXNzaWduIGEgb2xkZXIgc2hhZG93IHJvb3QuIEluIHRoaXMgcGF0Y2gsIElu
c2VydGlvblBvbml0CisgICAgICAgIHRyeSB0byB0cmVhdCB0aGUgZGlzdHJpYnV0ZWQgaG9zdCBj
aGlsZHJlbiBhbmQgdGhlIGFzc2lnbmVkIHNoYWRvdyBjaGlsZHJlbiBzaW1pbGFybHkuCisKKyAg
ICAgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQgc3VwcG9ydHMgcmVuZGVyaW5nIDxzaGFkb3c+IGVs
ZW1lbnQuIFNpbmNlIHRoZSBhc3NpZ25lZCBzaGFkb3cgY2hpbGRyZW4KKyAgICAgICAgYXJlIHRy
ZWF0ZWQgbGlrZSBkaXN0cmlidXRlZCBob3N0IGNoaWxkcmVuLCB0aGF0IGNoYW5nZSBpcyB0byBj
b25zaWRlciBub24teW91bmdlc3Qgc2hhZG93CisgICAgICAgIHRyZWUgYmFzaWNhbGx5IGFsc28u
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJp
bmctbXVsdGlwbGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorCisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgICBEb2Vz
IG5vdCBpZ25vcmUgbm9uLXlvdW5nZXN0IHNoYWRvdyB0cmVlLgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFzc2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmlzVXNlZEZvclJlbmRlcmluZyk6CisgICAgICAgICAgUmV0
dXJucyB0cnVlIGlmIFNoYWRvd1Jvb3QgaXMgeW91bmdlc3Qgb3IgYXNzaWduZWQgdG8gc29tZSBJ
bnNlcnRpb25Qb2ludC4KKyAgICAgICAgKFdlYkNvcmU6OnRvU2hhZG93Um9vdCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aW5z
ZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAgIFJldHVybnMgSW5zZXJ0aW9uUG9pbnQgdG8gd2hp
Y2ggbm9kZSBpcyBkaXN0cmlidXRlZC4KKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgorICAg
ICAgICAoU2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OmRvZXNTZWxlY3RG
cm9tSG9zdENoaWxkcmVuKToKKyAgICAgICAgKEhUTUxDb250ZW50RWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNoYWRvd0VsZW1lbnQ6OkhUTUxTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTaGFkb3dFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRv
d0VsZW1lbnQ6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChI
VE1MU2hhZG93RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c2VydGlvblBvaW50Ojphc3NpZ25lZEZyb20pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6YXNzaWduU2hhZG93Um9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6Y2xlYXJBc3NpZ25tZW50KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoSW5zZXJ0aW9uUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2ludCk6CisKIDIwMTItMDMtMDYgIEtlbnRhcm8g
SGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHIxMDk5NjkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRl
cmluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBjMDYwM2M3YTlkZmJkOWY4NGNmOWE2ZGU5ZWYxYmFjZjBhODE3YmI3Li45M2Yz
MTY2Njg1ZTFmNzhjYzNhODQyNmFhY2RhNjcxYWE5MzBkNDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRl
ICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2lu
Y2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUg
IlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJGdWxsU2NyZWVuLmgiCkBAIC00
Myw2ICs0NSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKKwogc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mKE5vZGUqKTsK
IHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKE5vZGUqKTsKIApAQCAtNTksMjYg
KzYzLDIxIEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2Rl
KiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAocGFy
ZW50LT5pc1NoYWRvd1Jvb3QoKSkgewotICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9y
dCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRl
cmVkLgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG9kX2J1Z3MuY2dpP2lk
PTc4NTk2Ci0gICAgICAgIGlmICh0b1NoYWRvd1Jvb3QocGFyZW50KS0+aXNZb3VuZ2VzdCgpKQot
ICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ1NoYWRvd0NoaWxkOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQ7CisgICAgaWYg
KHBhcmVudC0+aXNTaGFkb3dSb290KCkgJiYgdG9TaGFkb3dSb290KHBhcmVudCktPmlzWW91bmdl
c3QoKSkgeworICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hhZG93Q2hpbGQ7CiAgICAgICAg
IG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50LT5zaGFkb3dIb3N0KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2Rl
KCkpIHsKLSAgICAgICAgaWYgKHRvRWxlbWVudChwYXJlbnQpLT5oYXNTaGFkb3dSb290KCkpIHsK
KyAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgfHwgcGFyZW50LT5pc1NoYWRvd1Jvb3Qo
KSkgeworICAgICAgICBpZiAocGFyZW50LT5pc0VsZW1lbnROb2RlKCkgJiYgdG9FbGVtZW50KHBh
cmVudCktPmhhc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93
VHJlZSA9IHRvRWxlbWVudChwYXJlbnQpLT5zaGFkb3dUcmVlKCk7Ci0gICAgICAgICAgICBpZiAo
KG1faW5zZXJ0aW9uUG9pbnQgPSBtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUtPmluc2VydGlvblBv
aW50Rm9yKG1fbm9kZSkpCi0gICAgICAgICAgICAgICAgJiYgbV92aXN1YWxQYXJlbnRTaGFkb3dU
cmVlLT5pc1NlbGVjdG9yQWN0aXZlKCkpIHsKKyAgICAgICAgZWxzZSBpZiAocGFyZW50LT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgICAgIG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZSA9IHRvU2hh
ZG93Um9vdChwYXJlbnQpLT50cmVlKCk7CiAKLSAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
ZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdv
bid0IGJlIHJlbmRlcmVkLgotICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAgICAgICAgICAgICAgICBpZiAodG9TaGFkb3dS
b290KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKS0+aXNZb3VuZ2VzdCgp
KSB7CisgICAgICAgIGlmIChtX3Zpc3VhbFBhcmVudFNoYWRvd1RyZWUpIHsKKyAgICAgICAgICAg
IGlmICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZS0+aW5zZXJ0
aW9uUG9pbnRGb3IobV9ub2RlKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodG9TaGFkb3dSb290
KG1faW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1RyZWVSb290Tm9kZSgpKS0+aXNVc2VkRm9yUmVuZGVy
aW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0Rpc3RyaWJ1
dGVkOwogICAgICAgICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHls
ZSA9IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLnBhcmVudE5vZGVGb3JS
ZW5kZXJpbmdBbmRTdHlsZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC05MSw5
ICs5MCw3IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2Rl
KiBub2RlKQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGlzU2hhZG93Qm91bmRhcnkocGFyZW50
KSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFdlIGRvbid0IHN1cHBvcnQgPHNoYWRvdz4geWV0
LCBzbyB0aGUgbm9uLXlvdW5nZXN0IHNoYWRvdyB3b24ndCBiZSByZW5kZXJlZC4KLSAgICAgICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVncy5jZ2k/aWQ9Nzg1OTYKLSAg
ICAgICAgICAgIGlmICghdG9TaGFkb3dSb290KHBhcmVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCkp
LT5pc1lvdW5nZXN0KCkpIHsKKyAgICAgICAgICAgIGlmICghdG9TaGFkb3dSb290KHBhcmVudC0+
c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc1VzZWRGb3JSZW5kZXJpbmcoKSkgewogICAgICAgICAg
ICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZDsKICAgICAgICAgICAgICAg
ICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IHBhcmVudDsKICAgICAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggMjgwZGIxMTRlMDU0
MDMxZjJlZTc5NmJkODQ0YjkzNGY0MjFkZTQyMS4uN2E5NzFkNWZiNTBhYWFjZjQ2NTVmNDBmMzYz
M2ZlZDBlMzdkMTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtNTIsNiArNTIs
NyBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1f
cHJldigwKQogICAgICwgbV9uZXh0KDApCiAgICAgLCBtX2FwcGx5QXV0aG9yU2hlZXRzKGZhbHNl
KQorICAgICwgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8oMCkKIHsKICAgICBBU1NFUlQoZG9j
dW1lbnQpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggM2RmMjhjNmE0YjU1OWU1
YTVhMTY4NGIzOWUzOGE0Y2M4MjY2NDY2Yi4uZTU0NDI2Yjc2Y2ZlMDdhODJlYjY0NTNlZWRmY2Vi
MmE0NjBlNWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC04Myw2ICs4MywxMCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAKKyAgICBib29sIGlzVXNlZEZv
clJlbmRlcmluZygpIGNvbnN0OworICAgIEluc2VydGlvblBvaW50KiBhc3NpZ25lZFRvKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50Kik7CisKIHByaXZhdGU6
CiAgICAgU2hhZG93Um9vdChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgflNoYWRvd1Jvb3QoKTsK
QEAgLTk0LDggKzk4LDI1IEBAIHByaXZhdGU6CiAgICAgU2hhZG93Um9vdCogbV9wcmV2OwogICAg
IFNoYWRvd1Jvb3QqIG1fbmV4dDsKICAgICBib29sIG1fYXBwbHlBdXRob3JTaGVldHMgOiAxOwor
ICAgIEluc2VydGlvblBvaW50KiBtX2luc2VydGlvblBvaW50QXNzaWduZWRUbzsKIH07CiAKK2lu
bGluZSBJbnNlcnRpb25Qb2ludCogU2hhZG93Um9vdDo6YXNzaWduZWRUbygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvOworfQorCitpbmxpbmUgdm9pZCBT
aGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCkK
K3sKKyAgICBBU1NFUlQoIW1faW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvIHx8ICFpbnNlcnRpb25Q
b2ludCk7CisgICAgbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8gPSBpbnNlcnRpb25Qb2ludDsK
K30KKworaW5saW5lIGJvb2wgU2hhZG93Um9vdDo6aXNVc2VkRm9yUmVuZGVyaW5nKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXNZb3VuZ2VzdCgpIHx8IGFzc2lnbmVkVG8oKTsKK30KKwogaW5saW5l
IGNvbnN0IFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlKQogewogICAg
IEFTU0VSVCghbm9kZSB8fCBub2RlLT5pc1NoYWRvd1Jvb3QoKSk7CkBAIC0xMDcsNiArMTI4LDEy
IEBAIGlubGluZSBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3QoTm9kZSogbm9kZSkKICAgICByZXR1
cm4gY29uc3RfY2FzdDxTaGFkb3dSb290Kj4odG9TaGFkb3dSb290KHN0YXRpY19jYXN0PGNvbnN0
IE5vZGUqPihub2RlKSkpOwogfQogCitpbmxpbmUgU2hhZG93Um9vdCogdG9TaGFkb3dSb290KFRy
ZWVTY29wZSogc2NvcGUpCit7CisgICAgQVNTRVJUKCFzY29wZSB8fCBzY29wZS0+aXNTaGFkb3dS
b290KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTaGFkb3dSb290Kj4oc2NvcGUpOworfQor
CiAvLyBQdXQgdGhpcyBUcmVlU2NvcGUgbWV0aG9kIGhlcmUgdG8gaW5saW5lIGl0LgogaW5saW5l
IGJvb2wgVHJlZVNjb3BlOjppc1NoYWRvd1Jvb3QoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1RyZWUuY3BwCmluZGV4IGJlZTM3MmY3OGU3Njc3NzkwMTBhMmZjYzQ3Nzc2MTAyNTMxNWUxOWIu
LmEyMjUxMTE2MGFiMTIwYzg5NjA5MWM4NDY2M2VjYzA5Njg4NDU2NjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93VHJlZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisj
aW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVk
ZSAiU2hhZG93Um9vdC5oIgpAQCAtMTk4LDYgKzE5OSwxNSBAQCB2b2lkIFNoYWRvd1RyZWU6OmRl
dGFjaEhvc3QoRWxlbWVudCogaG9zdCkKIAogSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omlu
c2VydGlvblBvaW50Rm9yKE5vZGUqIG5vZGUpIGNvbnN0CiB7CisgICAgQVNTRVJUKG5vZGUgJiYg
bm9kZS0+cGFyZW50Tm9kZSgpKTsKKworICAgIGlmIChub2RlLT5wYXJlbnROb2RlKCktPmlzU2hh
ZG93Um9vdCgpKSB7CisgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQg
PSB0b1NoYWRvd1Jvb3Qobm9kZS0+cGFyZW50Tm9kZSgpKS0+YXNzaWduZWRUbygpKQorICAgICAg
ICAgICAgcmV0dXJuIGluc2VydGlvblBvaW50OworCisgICAgICAgIHJldHVybiAwOworICAgIH0K
KwogICAgIGlmICghbV9zZWxlY3RvcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSFRNTENvbnRl
bnRTZWxlY3Rpb24qIGZvdW5kID0gbV9zZWxlY3Rvci0+ZmluZEZvcihub2RlKTsKQEAgLTIwNiwx
MSArMjE2LDYgQEAgSW5zZXJ0aW9uUG9pbnQqIFNoYWRvd1RyZWU6Omluc2VydGlvblBvaW50Rm9y
KE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgcmV0dXJuIGZvdW5kLT5pbnNlcnRpb25Qb2ludCgpOwog
fQogCi1ib29sIFNoYWRvd1RyZWU6OmlzU2VsZWN0b3JBY3RpdmUoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3NlbGVjdG9yICYmIG1fc2VsZWN0b3ItPmhhc0NhbmRpZGF0ZXMoKTsKLX0KLQogdm9p
ZCBTaGFkb3dUcmVlOjpyZWF0dGFjaCgpCiB7CiAgICAgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1RyZWUuaAppbmRleCAwZWZiZGIxMzY3NDMwM2ZmNjdhNzFlMTBlY2M1NTFhNWE0NzU0ODRmLi41
NGM0MWJiZTQxOWY1YzNiMTJlNzg2ODJiNmQ0OTIyNWQ0NmY5YjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFk
b3dUcmVlLmgKQEAgLTgyLDggKzgyLDYgQEAgcHVibGljOgogICAgIEhUTUxDb250ZW50U2VsZWN0
b3IqIHNlbGVjdG9yKCkgY29uc3Q7CiAgICAgSFRNTENvbnRlbnRTZWxlY3RvciogZW5zdXJlU2Vs
ZWN0b3IoKTsKIAotICAgIGJvb2wgaXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0OwotCiBwcml2YXRl
OgogICAgIEVsZW1lbnQqIGhvc3QoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaAppbmRleCBkYzYzZjExZTdlNTQ4NDFiNmNlYzQx
Mjc5Y2U3NDhmMGRjMDExYjVhLi5lYzY2MjE3YzUyNTYzZjViYzJjMTJlZDc5N2Y1OTgyN2ExOGNl
OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1l
bnQuaApAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MQogICAgIHZvaWQgc2V0U2VsZWN0KGNvbnN0
IEF0b21pY1N0cmluZyYpOwogCisgICAgYm9vbCBkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFZhbGlk
KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50LmNwcAppbmRleCBjYjAxY2QyMWZlMGUwMDlhNWU4ZTAwM2FiOWI4
NGI2OGZkZDQyOTMwLi42OWM5MzYyOWY3NWRkNzM1MDhhMTg3NDVkODY3MWY3NDI0YzZmMTQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3Bw
CkBAIC0yOSwxOSArMjksMTggQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLQogI2luY2x1ZGUgIkhUTUxTaGFkb3dFbGVtZW50LmgiCiAKICNp
bmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJTaGFkb3dSb290LmgiCisjaW5jbHVkZSA8
d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RG9jdW1lbnQ7CiAKIGlubGluZSBIVE1MU2hhZG93RWxlbWVudDo6SFRNTFNoYWRvd0VsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDog
SFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCisgICAgOiBJbnNlcnRpb25Qb2ludCh0YWdO
YW1lLCBkb2N1bWVudCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShIVE1MTmFtZXM6OnNoYWRv
d1RhZykpOwogfQpAQCAtNTUsNiArNTQsMTggQEAgSFRNTFNoYWRvd0VsZW1lbnQ6On5IVE1MU2hh
ZG93RWxlbWVudCgpCiB7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK2NvbnN0IEF0b21p
Y1N0cmluZyYgSFRNTFNoYWRvd0VsZW1lbnQ6OnNlbGVjdCgpIGNvbnN0Cit7CisgICAgIHJldHVy
biBudWxsQXRvbTsKK30KIAotI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorYm9vbCBIVE1M
U2hhZG93RWxlbWVudDo6ZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4oKSBjb25zdAoreworICAg
IFRyZWVTY29wZSogc2NvcGUgPSB0cmVlU2NvcGUoKTsKKworICAgIGlmIChzY29wZS0+aXNTaGFk
b3dSb290KCkpCisgICAgICAgIHJldHVybiB0b1NoYWRvd1Jvb3Qoc2NvcGUpLT5pc09sZGVzdCgp
OworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50LmgKaW5kZXggMTUxYzdh
MmFiYmQ2YzUwNTc4OTQzZmQ2ZGNjZmZmMDVjOWM5ZmZmNy4uNWY5ODZmNWJmOGVhOTNmMTc1NjE0
MDE2Y2RjYmIzNzEyYmMzYjIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTFNoYWRvd0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9I
VE1MU2hhZG93RWxlbWVudC5oCkBAIC0zMSwxOCArMzEsMjAgQEAKICNpZm5kZWYgSFRNTFNoYWRv
d0VsZW1lbnRfaAogI2RlZmluZSBIVE1MU2hhZG93RWxlbWVudF9oCiAKLSNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKLQotI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9u
UG9pbnQuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIEhUTUxTaGFkb3dFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50IHsKK2NsYXNz
IEhUTUxTaGFkb3dFbGVtZW50IDogcHVibGljIEluc2VydGlvblBvaW50IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MU2hhZG93RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB+SFRNTFNoYWRvd0VsZW1lbnQo
KTsKIAorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc2VsZWN0KCkgY29uc3Q7CisgICAgYm9vbCBk
b2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEhUTUxT
aGFkb3dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogICAgIHZpcnR1
YWwgYm9vbCBpc1NoYWRvd0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBAIC01MCw2
ICs1Miw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8v
IEVOQUJMRShTSEFET1dfRE9NKQotCiAjZW5kaWYgLy8gSFRNTFNoYWRvd0VsZW1lbnRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCmluZGV4IDM5ZmE3
MjA0ZDkxM2Q3NzE2NjE2NDNjYjk3Yjc4MDA3ODg1NDdjZjMuLmViZDRiMjhjNDY0ODdjZDE0ODcy
NmI4ZTJkOTQxMjM3N2U3ZDA0NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hh
ZG93L0luc2VydGlvblBvaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5jcHAKQEAgLTQ4LDkgKzQ4LDE3IEBAIEluc2VydGlvblBvaW50Ojp+SW5z
ZXJ0aW9uUG9pbnQoKQogCiB2b2lkIEluc2VydGlvblBvaW50OjphdHRhY2goKQogewotICAgIGlm
IChTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkg
ewotICAgICAgICBkaXN0cmlidXRlSG9zdENoaWxkcmVuKHJvb3QtPnRyZWUoKSk7Ci0gICAgICAg
IGF0dGFjaERpc3RyaWJ1dGVkTm9kZSgpOworICAgIFRyZWVTY29wZSogc2NvcGUgPSB0cmVlU2Nv
cGUoKTsKKyAgICBpZiAoc2NvcGUtPmlzU2hhZG93Um9vdCgpKSB7CisgICAgICAgIFNoYWRvd1Jv
b3QqIHJvb3QgPSB0b1NoYWRvd1Jvb3Qoc2NvcGUpOworICAgICAgICBpZiAoZG9lc1NlbGVjdEZy
b21Ib3N0Q2hpbGRyZW4oKSkgeworICAgICAgICAgICAgZGlzdHJpYnV0ZUhvc3RDaGlsZHJlbihy
b290LT50cmVlKCkpOworICAgICAgICAgICAgYXR0YWNoRGlzdHJpYnV0ZWROb2RlKCk7CisgICAg
ICAgIH0gZWxzZSBpZiAoIXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5hc3NpZ25lZFRvKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVCghcm9vdC0+b2xkZXJTaGFkb3dSb290KCktPmF0dGFjaGVkKCkp
OworICAgICAgICAgICAgYXNzaWduU2hhZG93Um9vdChyb290LT5vbGRlclNoYWRvd1Jvb3QoKSk7
CisgICAgICAgICAgICByb290LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXR0YWNoKCk7CisgICAgICAg
IH0KICAgICB9CiAKICAgICBIVE1MRWxlbWVudDo6YXR0YWNoKCk7CkBAIC02MCw3ICs2OCwxMSBA
QCB2b2lkIEluc2VydGlvblBvaW50OjpkZXRhY2goKQogewogICAgIGlmIChTaGFkb3dSb290KiBy
b290ID0gdG9TaGFkb3dSb290KHNoYWRvd1RyZWVSb290Tm9kZSgpKSkgewogICAgICAgICBTaGFk
b3dUcmVlKiB0cmVlID0gcm9vdC0+dHJlZSgpOwotICAgICAgICBjbGVhckRpc3RyaWJ1dGlvbih0
cmVlKTsKKworICAgICAgICBpZiAoZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRyZW4oKSkKKyAgICAg
ICAgICAgIGNsZWFyRGlzdHJpYnV0aW9uKHRyZWUpOworICAgICAgICBlbHNlIGlmIChTaGFkb3dS
b290KiBhc3NpZ25lZFNoYWRvd1Jvb3QgPSBhc3NpZ25lZEZyb20oKSkKKyAgICAgICAgICAgIGNs
ZWFyQXNzaWdubWVudChhc3NpZ25lZFNoYWRvd1Jvb3QpOwogCiAgICAgICAgIC8vIFdoZW4gc2hh
ZG93IGVsZW1lbnQgaXMgZGV0YWNoZWQsIHNoYWRvdyB0cmVlIHNob3VsZCBiZSByZWNyZWF0ZWQg
dG8gcmUtY2FsY3VsYXRlIHNlbGVjdG9yIGZvcgogICAgICAgICAvLyBvdGhlciBpbnNlcnRpb24g
cG9pbnRzLgpAQCAtNzEsNiArODMsMTggQEAgdm9pZCBJbnNlcnRpb25Qb2ludDo6ZGV0YWNoKCkK
ICAgICBIVE1MRWxlbWVudDo6ZGV0YWNoKCk7CiB9CiAKK1NoYWRvd1Jvb3QqIEluc2VydGlvblBv
aW50Ojphc3NpZ25lZEZyb20oKSBjb25zdAoreworICAgIFRyZWVTY29wZSogc2NvcGUgPSB0cmVl
U2NvcGUoKTsKKyAgICBpZiAoIXNjb3BlLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBTaGFkb3dSb290KiBvbGRlclNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3Qoc2Nv
cGUpLT5vbGRlclNoYWRvd1Jvb3QoKTsKKyAgICBpZiAob2xkZXJTaGFkb3dSb290ICYmIG9sZGVy
U2hhZG93Um9vdC0+YXNzaWduZWRUbygpID09IHRoaXMpCisgICAgICAgIHJldHVybiBvbGRlclNo
YWRvd1Jvb3Q7CisgICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgSW5zZXJ0aW9uUG9pbnQ6OmlzU2hh
ZG93Qm91bmRhcnkoKSBjb25zdAogewogICAgIGlmIChUcmVlU2NvcGUqIHNjb3BlID0gdHJlZVNj
b3BlKCkpCkBAIC0xMDIsNCArMTI2LDE4IEBAIGlubGluZSB2b2lkIEluc2VydGlvblBvaW50Ojph
dHRhY2hEaXN0cmlidXRlZE5vZGUoKQogICAgICAgICBzZWxlY3Rpb24tPm5vZGUoKS0+YXR0YWNo
KCk7CiB9CiAKK2lubGluZSB2b2lkIEluc2VydGlvblBvaW50Ojphc3NpZ25TaGFkb3dSb290KFNo
YWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit7CisgICAgc2hhZG93Um9vdC0+c2V0QXNzaWduZWRUbyh0
aGlzKTsKKyAgICBtX3NlbGVjdGlvbnMuY2xlYXIoKTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBz
aGFkb3dSb290LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygp
KQorICAgICAgICBtX3NlbGVjdGlvbnMuYXBwZW5kKEhUTUxDb250ZW50U2VsZWN0aW9uOjpjcmVh
dGUodGhpcywgbm9kZSkpOworfQorCitpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6Y2xlYXJB
c3NpZ25tZW50KFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QpCit7CisgICAgc2hhZG93Um9vdC0+c2V0
QXNzaWduZWRUbygwKTsKKyAgICBtX3NlbGVjdGlvbnMuY2xlYXIoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5z
ZXJ0aW9uUG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50
LmgKaW5kZXggN2U1YWRlOTZjMDkzOTcyMTU1NzhmNzE1ZTRlZjc0OWJmOGZmOWViNy4uNjUwNDNj
MTI2MjIzOTc5ZTBiZTFmYmQ3ZWM0ZWE5ZmY5ZTVkODM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbmNsdWRl
ICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00NiwxMCArNDcsMTMgQEAgcHVibGljOgogICAgIGJvb2wgaXNTaGFkb3dC
b3VuZGFyeSgpIGNvbnN0OwogCiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNlbGVj
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZG9lc1NlbGVjdEZyb21Ib3N0Q2hpbGRy
ZW4oKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRldGFjaCgpOwogCisgICAgU2hhZG93Um9vdCogYXNzaWduZWRGcm9tKCkgY29uc3Q7
CisKIHByb3RlY3RlZDoKICAgICBJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wgcmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2Rl
UmVuZGVyaW5nQ29udGV4dCYpIE9WRVJSSURFOwpAQCAtNTksMTUgKzYzLDE4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBjbGVhckRpc3RyaWJ1dGlvbihTaGFkb3dUcmVlKik7CiAgICAgdm9pZCBhdHRh
Y2hEaXN0cmlidXRlZE5vZGUoKTsKIAorICAgIHZvaWQgYXNzaWduU2hhZG93Um9vdChTaGFkb3dS
b290Kik7CisgICAgdm9pZCBjbGVhckFzc2lnbm1lbnQoU2hhZG93Um9vdCopOworCiAgICAgSFRN
TENvbnRlbnRTZWxlY3Rpb25MaXN0IG1fc2VsZWN0aW9uczsKIH07CiAKIGlubGluZSBib29sIGlz
SW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKIHsKLSAgICAvLyBGSVhNRTogPHNoYWRvdz4gc2hv
dWxkIGFsc28gYmUgSW5zZXJ0aW9uUG9pbnQuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4NTk2CiAgICAgaWYgKCFub2RlIHx8IG5vZGUtPmlzQ29udGVu
dEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKG5vZGUtPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpzaGFkb3dUYWcpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJl
dHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlZTI5ZDlhZGI2MDk1MjRmMmMzMjM0NGNhNzcyNDlhODNj
MTk3M2ZhLi5lMDMzODQ0ZjFmYTZlOTdkYmMwNjkwNTUzNGVhMmEyMjRmNTM0ODJkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTItMDMtMDYgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIDxzaGFkb3c+IHNob3VsZCBiZSByZW5kZXJlZCBjb3JyZWN0
bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU5
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnRh
aW5zIHRlc3RzIGJvdGggaW4gY2FzZSA8c2hhZG93PiBhcHBlYXJzIGluIHRoZSBvbGRlc3Qgc2hh
ZG93IHJvb3QgYW5kCisgICAgICAgIG5vbi1vbGRlcnN0IHNoYWRvdyB0cmVlLgorCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVu
dC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmds
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisKIDIwMTItMDMt
MDYgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCB1cGRhdGUgbWFjIHRleHQgYmFzZWxpbmVzIGFmdGVyIHIxMDk4NTEKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVs
dGlwbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFkYWMy
MGZkZjNhYWVkYTYzMDI5Y2Y2OGRiYjg1ODc0Yzk2MjUzYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlw
bGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzIgQEAKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jv
b3QKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RXaXRoT25lU2hhZG93RWxlbWVudAor
UEFTUworcmVuZGVyaW5nVHJpcGxlU2hhZG93Um9vdAorUEFTUworcmVuZGVyaW5nVHdvU2hhZG93
Um9vdHMKK1BBU1MKK3Rlc3RXaXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MQorUEFTUwor
dGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQyCitQQVNTCityZW5kZXJpbmdEb3Vi
bGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDEKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRv
d1Jvb3REeW5hbWljYWxseUFkZGVkMgorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5
bmFtaWNhbGx5QWRkZWQzCitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2Fs
bHlSZW1vdmVkMQorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5UmVt
b3ZlZDIKK1BBU1MKK3JlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVkCitQQVNT
CityZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlBZGRlZAorUEFTUwor
cmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5UmVtb3ZlZAorUEFTUworcmVuZGVyaW5n
T2xkZXJTaGFkb3dSb290Q29udGVudER5bmFtaWNhbGx5UmVtb3ZlZAorUEFTUworVEVTVCBDT01Q
TEVURUQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJl
ZGU4MTgxMzBiMmQzYTZkN2VkY2VjMGNjY2NjZDM5YzgzMjVmN2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11
bHRpcGxlLmh0bWwKQEAgLTAsMCArMSw0NDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0aW9uaW5nIGVuc3VyZXMgdW5kZXJseWlu
ZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7CisgICAgcG9zaXRpb246IHJlbGF0aXZlOwor
fQorCisuc3BhbiB7CisgICAgZGlzcGxheTogYm94ZWQtaW5saW5lOworICAgIG1hcmdpbjogMnB4
OworICAgIGJvcmRlcjogc29saWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291
cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9u
IHNldFVwT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0Vu
YWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlYXJEb3duT25jZSgpIHsKKyAgICBpbnRlcm5h
bHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQoZmFsc2UpOworfQorCit2YXIgdGVz
dEZ1bmNzID0gW107CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNo
YWRvd1Jvb3QoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBl
Y3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8
L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8
L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAx
JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cn
KSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsK
KworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNh
bGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3Vi
bGVTaGFkb3dSb290V2l0aE9uZVNoYWRvd0VsZW1lbnQoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+
QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICAvLyBNSUQg
d29uJ3QgYmUgcmVuZGVyZWQuCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykp
OworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVh
bC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsK
KwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nVHJpcGxlU2hhZG93Um9vdChjYWxs
SWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMzwvc3Bhbj48c3Bhbj5C
RUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPk1J
RDwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwv
c3Bhbj48c3Bhbj5BRlRFUiAzPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEn
KSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOwor
CisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIHZhciBzcjMgPSBuZXcg
V2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdCRUZPUkUgMycpKTsKKyAgICBzcjMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDMnKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0
ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdUd29TaGFkb3dSb290cyhjYWxsSWZEb25l
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5l
ckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj4iICsKKyAgICAgICAg
ICAgICI8c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwv
c3Bhbj4iICsKKyAgICAgICAgICAgICI8c3Bhbj5GQUxMQkFDSyAyLTI8L3NwYW4+IiArCisgICAg
ICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEn
KSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOwor
CisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHZhciBzaGFk
b3cyMSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sgMi0xJykpOworICAgIHZhciBz
aGFkb3cyMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sgMi0yJykpOworCisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKHNoYWRvdzIxKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoc2hhZG93MjIpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxk
KHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlv
biB0ZXN0V2l0aERvdWJsZVNoYWRvd1Jvb3RXaXRoQ29udGVudDEoY2FsbElmRG9uZSkgeworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0K
KyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+TUlEIDI8L3NwYW4+IiAr
CisgICAgICAgICI8c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQgMTwvc3Bhbj48c3Bhbj5N
SUQgMzwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+QUZURVIg
Mjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDMn
LCAnc3IzJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQg
MScsICdzcjEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCAyJywgJ3NyMicpKTsKKworICAgIHZhciBzaGFkb3cxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93Jyk7CisgICAgc2hhZG93MS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J1NIQURPVyBGQUxMQkFDSyAxJykpOworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUg
MScpKTsKKyAgICB2YXIgY29udGVudDEgPSBjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMScs
ICdDT05URU5UIEZBTExCQUNLIDEnKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY29udGVudDEpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChzaGFkb3cxKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNoYWRvdzIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDInKSk7CisgICAgdmFyIHNyMiA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0JFRk9SRSAyJykpOworICAgIHZhciBjb250ZW50OworICAgIHNyMi5hcHBlbmRDaGlsZChj
b250ZW50ID0gY3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJy5zcjInLCAnQ09OVEVOVCBGQUxMQkFD
SyAyJykpOworICAgIGNvbnRlbnQudGl0bGUgPSAiZGVidWdzdG9wIjsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoc2hhZG93Mik7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFp
bmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RG
dW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91YmxlU2hhZG93Um9vdFdpdGhDb250ZW50Mihj
YWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bh
bj5NSUQgMjwvc3Bhbj48c3Bhbj5NSUQgMzwvc3Bhbj48c3Bhbj5NSUQgMTwvc3Bhbj4iICsKKyAg
ICAgICAgIjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPkNPTlRFTlQgRkFMTEJBQ0sgMTwvc3Bh
bj48c3Bhbj5TSEFET1cgRkFMTEJBQ0sgMTwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPiIgKwor
ICAgICAgICAiPHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnTUlEIDMnLCAnc3IzJykpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdNSUQgMScsICdzcjEnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ01JRCAyJywgJ3NyMicpKTsKKworICAgIHZhciBzaGFkb3cxID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MS5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSyAxJykpOworICAgIHZhciBzcjEg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlQ29u
dGVudFdpdGhTZWxlY3QoJy5zcjEnLCAnQ09OVEVOVCBGQUxMQkFDSyAxJykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChzaGFkb3cxKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNoYWRvdzIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnU0hBRE9XIEZBTExCQUNLIDInKSk7CisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnLnNy
MicsICdDT05URU5UIEZBTExCQUNLIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNv
bnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQgRkFMTEJBQ0sgMycpKTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoc2hhZG93Mik7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwt
Y29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisK
K3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWlj
YWxseUFkZGVkMShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4
cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUg
Mjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIg
MTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JF
IDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRv
dycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykp
OworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBl
bmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIGNhbGxJZkRvbmUp
IHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3Qocm9vdCk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0JFRk9SRSAyJykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc2hhZG93JykpOworICAgICAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUiAyJykpOworCisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHJvb3Qs
IGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3Mu
cHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRlZDIo
Y2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFp
bmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNw
YW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNw
YW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZh
ciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0g
KGZ1bmN0aW9uKHNyMiwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAg
IHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICAgICAg
c3IyLmluc2VydEJlZm9yZShzaGFkb3csIHNyMi5sYXN0Q2hpbGQpOworCisgICAgICAgIGNhbGxJ
ZkRvbmUoKQorICAgIH07fSkoc3IyLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwg
MCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93
Um9vdER5bmFtaWNhbGx5QWRkZWQzKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2Pjxz
cGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48
c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZh
ciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2Vi
S2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOwor
ICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
cm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjEsIGNhbGxJZkRvbmUpIHsgcmV0dXJu
IGZ1bmN0aW9uKCkgeworICAgICAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93Jyk7CisgICAgICAgIHNyMS5pbnNlcnRCZWZvcmUoc2hhZG93LCBzcjEubGFzdENo
aWxkKTsKKworICAgICAgICBjYWxsSWZEb25lKCkKKyAgICB9O30pKHNyMSwgY2FsbElmRG9uZSk7
CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9u
IHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseVJlbW92ZWQxKGNhbGxJZkRvbmUp
IHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVy
SFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkFGVEVSIDI8
L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsK
KworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1j
b250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHNy
MiwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNyMi5yZW1vdmVD
aGlsZChzcjIuZmlyc3RDaGlsZC5uZXh0U2libGluZyk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsK
KyAgICB9O30pKHNyMiwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7
CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5h
bWljYWxseVJlbW92ZWQyKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJF
Rk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+PHNw
YW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAg
IHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZh
ciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAo
ZnVuY3Rpb24oc3IxLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAg
c3IxLnJlbW92ZUNoaWxkKHNyMS5maXJzdENoaWxkLm5leHRTaWJsaW5nKTsKKyAgICAgICAgY2Fs
bElmRG9uZSgpOworICAgIH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQo
ZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGls
ZHJlbkR5bmFtaWNhbGx5QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNw
YW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxz
cGFuPkFGVEVSIDE8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFy
IHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKworICAgIHZhciBzcjEgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDIn
KSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0aW9uKHJvb3QsIGNhbGxJZkRvbmUpIHsg
cmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnTUlEJykpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShyb290LCBj
YWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1
c2goZnVuY3Rpb24gcmVuZGVyaW5nT2xkZXJTaGFkb3dSb290Q29udGVudER5bmFtaWNhbGx5QWRk
ZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29u
dGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+
PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+
PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3Qp
OworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisK
KyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZh
ciBmID0gKGZ1bmN0aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7Cisg
ICAgICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7Cisg
ICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHNyMSwgY2FsbElmRG9uZSk7CisKKyAgICBz
ZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmlu
Z0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseVJlbW92ZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+
QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9v
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
QkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNy
Mi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3Iy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7
CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihyb290LCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5j
dGlvbigpIHsKKyAgICAgICAgcm9vdC5yZW1vdmVDaGlsZChyb290LmZpcnN0Q2hpbGQpOworICAg
ICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShyb290LCBjYWxsSWZEb25lKTsKKworICAgIHNl
dFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5n
T2xkZXJTaGFkb3dSb290Q29udGVudER5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwg
PQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bh
bj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFu
PjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAg
ICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ1NIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisKKyAgICB2YXIgc3Iy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Fj
dHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBmID0gKGZ1bmN0
aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNyMS5y
ZW1vdmVDaGlsZChzcjEubGFzdENoaWxkKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07
fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKworPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCh0ZXN0RnVuY3MpIj4KKworPGRp
diBpZD0iYWN0dWFsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlk
PSJleHBlY3QtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVy
aW5nLXNpbmdsZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2IxMGNjYmIwOTQ3NDdjOTUzNzFm
YTkyM2IxYmE0ZWMyM2I2NDI3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDIyIEBACityZW5kZXJpbmdTaW5nbGVTaGFkb3dSb290CitQQVNTCityZW5kZXJp
bmdOb3RGYWxsYmFja2VkCitQQVNTCityZW5kZXJpbmdGYWxsYmFja2VkCitQQVNTCityZW5kZXJp
bmdNaXhlZE9mRmFsbGJhY2tBbmROb25GYWxsYmFjaworUEFTUworcmVuZGVyaW5nU2hhZG93Um9v
dEJlZm9yZUNvbnRlbnQKK1BBU1MKK3JlbmRlcmluZ1NoYWRvd1Jvb3RBZnRlckNvbnRlbnQKK1BB
U1MKK3JlbmRlcmluZ1NoYWRvd0VsZW1lbnREeW5hbWljYWxseUFkZGVkCitQQVNTCityZW5kZXJp
bmdTaGFkb3dFbGVtZW50RHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCityZW5kZXJpbmdMaWdodENo
aWxkcmVuRHluYW1pY2FsbHlBZGRlZAorUEFTUworcmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFt
aWNhbGx5UmVtb3ZlZAorUEFTUworVEVTVCBDT01QTEVURUQKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmct
c2luZ2xlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRlODA2Zjk1YTE4NmM3YmM0NjE4MDgwMzk4NWNmMThi
OTdkMWEzMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKQEAgLTAsMCArMSwyNDQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKy8qIHJlbGF0aXZlIHBvc2l0
aW9uaW5nIGVuc3VyZXMgdW5kZXJseWluZyBSZW5kZXJMYXllciAqLworLmNvbnRhaW5lciB7Cisg
ICAgcG9zaXRpb246IHJlbGF0aXZlOworfQorCisuc3BhbiB7CisgICAgZGlzcGxheTogYm94ZWQt
aW5saW5lOworICAgIG1hcmdpbjogMnB4OworICAgIGJvcmRlcjogc29saWQ7Cit9Cis8L3N0eWxl
PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9zaGFkb3ctdGVzdC1kcml2ZXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHNldFVwT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0
TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlYXJE
b3duT25jZSgpIHsKKyAgICBpbnRlcm5hbHMuc2V0TXVsdGlwbGVTaGFkb3dTdWJ0cmVlc0VuYWJs
ZWQoZmFsc2UpOworfQorCit2YXIgdGVzdEZ1bmNzID0gW107CisKK3Rlc3RGdW5jcy5wdXNoKGZ1
bmN0aW9uIHJlbmRlcmluZ1NpbmdsZVNoYWRvd1Jvb3QoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwv
c3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOwor
CisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUo
KTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdOb3RGYWxsYmFja2Vk
KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRh
aW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bh
bj5NSUQ8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdGQUxMQkFDSycpKTsKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsK
KyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30p
OworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdGYWxsYmFja2VkKGNhbGxJZkRv
bmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlu
bmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5GQUxMQkFD
Szwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdGQUxMQkFDSycpKTsKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScp
KTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsK
K30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdNaXhlZE9mRmFsbGJhY2tB
bmROb25GYWxsYmFjayhjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZP
UkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkZBTExCQUNLIDI8L3NwYW4+PHNwYW4+QUZU
RVI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcp
KTsKKworICAgIHZhciBzaGFkb3cxID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7
CisgICAgc2hhZG93MS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExCQUNLIDEn
KSk7CisgICAgdmFyIHNoYWRvdzIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsK
KyAgICBzaGFkb3cyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sgMicp
KTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENo
aWxkKHNoYWRvdzEpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdzIpOworICAgIHNyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNh
bGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdTaGFk
b3dSb290QmVmb3JlQ29udGVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPk0gMTwvc3Bhbj48c3Bhbj5DT05U
RU5UIEZBTExCQUNLPC9zcGFuPjxzcGFuPk0gMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rp
dj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFy
IHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdy5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFDSycpKTsKKyAgICB2
YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTSAxJykpOworICAgIHNy
LmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQgRkFM
TEJBQ0snKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDInKSk7
CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQo
cm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9u
IHJlbmRlcmluZ1NoYWRvd1Jvb3RBZnRlckNvbnRlbnQoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5NIDE8L3Nw
YW4+PHNwYW4+U0hBRE9XIEZBTExCQUNLPC9zcGFuPjxzcGFuPk0gMjwvc3Bhbj48c3Bhbj5BRlRF
Ujwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykp
OworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOwor
ICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIQURPVyBGQUxMQkFD
SycpKTsKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRD
aGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVjdCgnc3BhbicsICdDT05URU5UIEZBTExCQUNLJykp
OworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTSAxJykpOworICAgIHNy
LmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdNIDInKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJyku
YXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5w
dXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1NoYWRvd0VsZW1lbnREeW5hbWljYWxseUFkZGVkKGNhbGxJ
ZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicp
LmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8
L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQUZURVInKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChy
b290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsK
KyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9v
dCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCByb290LCBzcikgeyByZXR1
cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdzaGFkb3cnKTsKKyAgICAgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93KTsKKyAgICAgICAg
Y2FsbElmRG9uZSgpOworICAgIH19KShjYWxsSWZEb25lLCByb290LCBzcik7CisKKyAgICBzZXRU
aW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1No
YWRvd0VsZW1lbnREeW5hbWljYWxseVJlbW92ZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAg
IjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiIKKworICAg
IHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1NIT1VMRCBOT1QgQkUgUkVOREVSRUQnKSk7CisK
KyAgICB2YXIgc2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisKKyAg
ICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChzaGFk
b3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENo
aWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oY2FsbElmRG9uZSwgc3IsIHNoYWRv
dykgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHNyLnJlbW92ZUNoaWxkKHNoYWRvdyk7
CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwgc3IsIHNoYWRvdyk7
CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9u
IHJlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWljYWxseUFkZGVkKGNhbGxJZkRvbmUpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+
QUZURVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOwor
ICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNy
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzci5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKwor
ICAgIHZhciBmID0gKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QpIHsgcmV0dXJuIGZ1bmN0aW9u
KCkgeworICAgICAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykp
OworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3QpOworCisg
ICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5k
ZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRvbmUpIHsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9Cisg
ICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZU
RVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hPVUxE
IE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3IgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBz
ci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oY2Fs
bElmRG9uZSwgcm9vdCkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgIHJvb3QucmVtb3Zl
Q2hpbGQocm9vdC5maXJzdENoaWxkKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH19KShj
YWxsSWZEb25lLCByb290KTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImRvVGVzdCh0ZXN0RnVuY3MpIj4KKworPGRpdiBp
ZD0iYWN0dWFsLWNvbnRhaW5lciIgY2xhc3M9ImNvbnRhaW5lciI+PC9kaXY+Cis8ZGl2IGlkPSJl
eHBlY3QtY29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgorCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCmlu
ZGV4IDc1YjEzZWQ2ZjRlYjRmNmRjOWUwOGViNDNkM2ViN2YwMjE0YWE1MDAuLjc5MjA2NjNmOThm
ZjU2YjA3NWYwMzMxNmFlOTljZmJmNmUwYjE1MjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVk
CkBAIC0yMDk5LDYgKzIwOTksOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRpc2FibGUuaHRt
bAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWF0dGFjaGVkLmh0bWwKIGZhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFw
cGVuZC5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmds
ZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxl
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVk
CmluZGV4IGM3NzI4MWNiYWMyOTc3NGEwNDc2NWUzYzk2NTc4YWFiNjBkZjBiMmEuLjZiMjE0OTBk
ODAxYjBiYjlmNDI0NDI3M2QyY2UxMDAwYzRlN2YzNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lw
cGVkCkBAIC00MzYsNiArNDM2LDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlubmVy
SFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFw
cGVuZC5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmds
ZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxl
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApp
bmRleCBiNDdjYzg1ZWVmNDU1NTg0NzJlYmFmZmNmZTEzNjM3NGNkOTliZTM4Li4yZGZhN2MyNzVi
OWMzMWViZWM1ZDBjNWNmNzJhM2Y4MjJjNmVkMjliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
QEAgLTE3NSw2ICsxNzUsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJIVE1M
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy11bC1saS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXBwZW5k
Lmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0
bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRt
bAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hh
ZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9t
dWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3dpbi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5k
ZXggNDI0NzIyZDdlMDgxZjhhMjgzNThlYWIxNmZlMGZmYWNiYWZhYTY0Mi4uNjY5YmQzOThmOWVj
YjNjNTgxMjFjMGE4ZjQ2ZTA1OWQxYjZlM2M5NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
QEAgLTE0NjIsNiArMTQ2Miw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1pbm5lckhU
TUwuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXVsLWxpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hcHBl
bmQuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUu
aHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5o
dG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFzdC9kb20vc2hhZG93
L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1NraXBwZWQKaW5kZXggOTA4YWUyMWUxMDQyNzYyMzNhZGMwMGYzNmIyMjY2YjkwOTA2ZWU2Yy4u
YjY4ZTFlZjg2YzI3OGE1NjFkNzRjNTM4Mzk2YjNlODViMWM2MWUwMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xOTc1LDYgKzE5NzUsOCBAQCBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWlubmVySFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hcHBlbmQuaHRtbAorZmFzdC9kb20vc2hhZG93L3No
YWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlw
bGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1y
ZW5kZXJpbmcuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtYWRvcHQu
aHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAppbmRleCBjOTQ0YWVjZjM4ODA4ZTliZDhjM2Qw
YTlmM2QwOWE4MTljMWNlN2VjLi4wZWUwYzA1YWE3OTE3YjA0ZjhjYzM3Y2IwMWE1MDdkYzM2MWU4
MTVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZApAQCAtMTA3Myw2ICsxMDczLDggQEAgZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlubmVySFRNTC5odG1sCiBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctdWwtbGkuaHRtbAog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFwcGVuZC5odG1sCitmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0
aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290
LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9w
dC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130791</attachid>
            <date>2012-03-08 00:53:15 -0800</date>
            <delta_ts>2012-03-08 02:02:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78596-20120308175314.patch</filename>
            <type>text/plain</type>
            <size>50268</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwMTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTA2YWVkOTU0ZWQwNWI2
MGIwYTM0MWVhNTIxMzc0YjkwZDQxNmYxMC4uNzcyNmM4Y2MwYWViN2NjMzA3OTEyOGI4OWUyNWI2
MDcxN2JlYzI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTAzLTA4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICA8c2hhZG93PiBz
aG91bGQgYmUgcmVuZGVyZWQgY29ycmVjdGx5LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIDxzaGFkb3c+IGVsZW1lbnQg
cmVuZGVyaW5nLgorCisgICAgICAgIFdoZW4gYXR0YWNoaW5nIDxzaGFkb3c+IGVsZW1lbnQsIGlm
IGl0IGlzIGluIHRoZSBvbGRlc3Qgc2hhZG93IHRyZWUsIGl0IHJ1bnMgYSBwYXJ0IG9mCisgICAg
ICAgIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0uIElmIGl0IGlzIGluIG5vbi1vbGRlc3Qgc2hhZG93
IHRyZWUsIGl0IHJ1bnMgdHJlZSBhIHBhcnQgb2YKKyAgICAgICAgdHJlZSBjb21wb3NpdGlvbiBh
bGdvcml0aG0gdG8gYXNzaWduIGEgb2xkZXIgc2hhZG93IHJvb3QuIEluIHRoaXMgcGF0Y2gsIElu
c2VydGlvblBvbml0CisgICAgICAgIHRyeSB0byB0cmVhdCB0aGUgZGlzdHJpYnV0ZWQgaG9zdCBj
aGlsZHJlbiBhbmQgdGhlIGFzc2lnbmVkIHNoYWRvdyBjaGlsZHJlbiBzaW1pbGFybHkuCisKKyAg
ICAgICAgTm9kZVJlbmRlcmluZ0NvbnRleHQgc3VwcG9ydHMgcmVuZGVyaW5nIDxzaGFkb3c+IGVs
ZW1lbnQuIFNpbmNlIHRoZSBhc3NpZ25lZCBzaGFkb3cgY2hpbGRyZW4KKyAgICAgICAgYXJlIHRy
ZWF0ZWQgbGlrZSBkaXN0cmlidXRlZCBob3N0IGNoaWxkcmVuLCB0aGF0IGNoYW5nZSBpcyB0byBj
b25zaWRlciBub24teW91bmdlc3Qgc2hhZG93CisgICAgICAgIHRyZWUgYmFzaWNhbGx5IGFsc28u
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJp
bmctbXVsdGlwbGUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1l
bGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorCisgICAgICAgICogZG9tL05vZGVSZW5kZXJp
bmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgICBEb2Vz
IG5vdCBpZ25vcmUgbm9uLXlvdW5nZXN0IHNoYWRvdyB0cmVlLgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgor
ICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dSb290KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmFzc2lnbmVkVG8pOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpzZXRBc3NpZ25lZFRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmlzVXNlZEZvclJlbmRlcmluZyk6CisgICAgICAgICAgUmV0
dXJucyB0cnVlIGlmIFNoYWRvd1Jvb3QgaXMgeW91bmdlc3Qgb3IgYXNzaWduZWQgdG8gc29tZSBJ
bnNlcnRpb25Qb2ludC4KKyAgICAgICAgKFdlYkNvcmU6OnRvU2hhZG93Um9vdCk6CisgICAgICAg
ICogZG9tL1NoYWRvd1RyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VHJlZTo6aW5z
ZXJ0aW9uUG9pbnRGb3IpOgorICAgICAgICAgIFJldHVybnMgSW5zZXJ0aW9uUG9pbnQgdG8gd2hp
Y2ggbm9kZSBpcyBkaXN0cmlidXRlZC4KKyAgICAgICAgKiBkb20vU2hhZG93VHJlZS5oOgorICAg
ICAgICAoU2hhZG93VHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OmRvZXNTZWxlY3RG
cm9tSG9zdENoaWxkcmVuKToKKyAgICAgICAgKEhUTUxDb250ZW50RWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFNoYWRvd0VsZW1lbnQ6OkhUTUxTaGFkb3dFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTaGFkb3dFbGVtZW50OjpzZWxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFNoYWRv
d0VsZW1lbnQ6OmRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50Lmg6CisgICAgICAgIChI
VE1MU2hhZG93RWxlbWVudCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0aW9uUG9pbnQ6OmF0dGFjaCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c2VydGlvblBvaW50Ojphc3NpZ25lZEZyb20pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6YXNzaWduU2hhZG93Um9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6Y2xlYXJBc3NpZ25tZW50KToKKyAgICAgICAgKiBodG1s
L3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoSW5zZXJ0aW9uUG9pbnQpOgorCiAy
MDEyLTAzLTA3ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZWZhY3RvcmluZzogUmVtb3ZlIE5vZGU6OmlzQ29udGVudEVsZW1lbnQgYW5kIE5vZGU6
OmlzU2hhZG93RWxlbWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVu
ZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRl
eHQuY3BwCmluZGV4IGMwNjAzYzdhOWRmYmQ5Zjg0Y2Y5YTZkZTllZjFiYWNmMGE4MTdiYjcuLjkz
ZjMxNjY2ODVlMWY3OGNjM2E4NDI2YWFjZGE2NzFhYTkzMGQ0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtMjksNiArMjksOCBAQAogI2luY2x1
ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJIVE1MQ29udGVudEVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MQ29udGVudFNlbGVjdG9yLmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlckZ1bGxTY3JlZW4uaCIKQEAg
LTQzLDYgKzQ1LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOworCiBzdGF0aWMgUmVuZGVyT2JqZWN0KiBmaXJzdFJlbmRlcmVyT2YoTm9kZSop
Owogc3RhdGljIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2YoTm9kZSopOwogCkBAIC01OSwy
NiArNjMsMjEgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5v
ZGUqIG5vZGUpCiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChw
YXJlbnQtPmlzU2hhZG93Um9vdCgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBzdXBw
b3J0IDxzaGFkb3c+IHlldCwgc28gdGhlIG5vbi15b3VuZ2VzdCBzaGFkb3cgd29uJ3QgYmUgcmVu
ZGVyZWQuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob2RfYnVncy5jZ2k/
aWQ9Nzg1OTYKLSAgICAgICAgaWYgKHRvU2hhZG93Um9vdChwYXJlbnQpLT5pc1lvdW5nZXN0KCkp
Ci0gICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nU2hhZG93Q2hpbGQ7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZDsKKyAgICBp
ZiAocGFyZW50LT5pc1NoYWRvd1Jvb3QoKSAmJiB0b1NoYWRvd1Jvb3QocGFyZW50KS0+aXNZb3Vu
Z2VzdCgpKSB7CisgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdTaGFkb3dDaGlsZDsKICAgICAg
ICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUgPSBwYXJlbnQtPnNoYWRvd0hvc3Qo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5v
ZGUoKSkgewotICAgICAgICBpZiAodG9FbGVtZW50KHBhcmVudCktPmhhc1NoYWRvd1Jvb3QoKSkg
eworICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSB8fCBwYXJlbnQtPmlzU2hhZG93Um9v
dCgpKSB7CisgICAgICAgIGlmIChwYXJlbnQtPmlzRWxlbWVudE5vZGUoKSAmJiB0b0VsZW1lbnQo
cGFyZW50KS0+aGFzU2hhZG93Um9vdCgpKQogICAgICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFk
b3dUcmVlID0gdG9FbGVtZW50KHBhcmVudCktPnNoYWRvd1RyZWUoKTsKLSAgICAgICAgICAgIGlm
ICgobV9pbnNlcnRpb25Qb2ludCA9IG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZS0+aW5zZXJ0aW9u
UG9pbnRGb3IobV9ub2RlKSkKLSAgICAgICAgICAgICAgICAmJiBtX3Zpc3VhbFBhcmVudFNoYWRv
d1RyZWUtPmlzU2VsZWN0b3JBY3RpdmUoKSkgeworICAgICAgICBlbHNlIGlmIChwYXJlbnQtPmlz
U2hhZG93Um9vdCgpKQorICAgICAgICAgICAgbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlID0gdG9T
aGFkb3dSb290KHBhcmVudCktPnRyZWUoKTsKIAotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSBkb24ndCBzdXBwb3J0IDxzaGFkb3c+IHlldCwgc28gdGhlIG5vbi15b3VuZ2VzdCBzaGFkb3cg
d29uJ3QgYmUgcmVuZGVyZWQuCi0gICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWdzLmNnaT9pZD03ODU5NgotICAgICAgICAgICAgICAgIGlmICh0b1NoYWRv
d1Jvb3QobV9pbnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc1lvdW5nZXN0
KCkpIHsKKyAgICAgICAgaWYgKG1fdmlzdWFsUGFyZW50U2hhZG93VHJlZSkgeworICAgICAgICAg
ICAgaWYgKChtX2luc2VydGlvblBvaW50ID0gbV92aXN1YWxQYXJlbnRTaGFkb3dUcmVlLT5pbnNl
cnRpb25Qb2ludEZvcihtX25vZGUpKSkgeworICAgICAgICAgICAgICAgIGlmICh0b1NoYWRvd1Jv
b3QobV9pbnNlcnRpb25Qb2ludC0+c2hhZG93VHJlZVJvb3ROb2RlKCkpLT5pc1VzZWRGb3JSZW5k
ZXJpbmcoKSkgewogICAgICAgICAgICAgICAgICAgICBtX3BoYXNlID0gQXR0YWNoaW5nRGlzdHJp
YnV0ZWQ7CiAgICAgICAgICAgICAgICAgICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0
eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2ludCkucGFyZW50Tm9kZUZv
clJlbmRlcmluZ0FuZFN0eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTkx
LDkgKzkwLDcgQEAgTm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0KE5v
ZGUqIG5vZGUpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoaXNTaGFkb3dCb3VuZGFyeShwYXJl
bnQpKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCA8c2hhZG93PiB5
ZXQsIHNvIHRoZSBub24teW91bmdlc3Qgc2hhZG93IHdvbid0IGJlIHJlbmRlcmVkLgotICAgICAg
ICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWdzLmNnaT9pZD03ODU5Ngot
ICAgICAgICAgICAgaWYgKCF0b1NoYWRvd1Jvb3QocGFyZW50LT5zaGFkb3dUcmVlUm9vdE5vZGUo
KSktPmlzWW91bmdlc3QoKSkgeworICAgICAgICAgICAgaWYgKCF0b1NoYWRvd1Jvb3QocGFyZW50
LT5zaGFkb3dUcmVlUm9vdE5vZGUoKSktPmlzVXNlZEZvclJlbmRlcmluZygpKSB7CiAgICAgICAg
ICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkOwogICAgICAgICAgICAg
ICAgIG1fcGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gcGFyZW50OwogICAgICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCAyODBkYjExNGUw
NTQwMzFmMmVlNzk2YmQ4NDRiOTM0ZjQyMWRlNDIxLi43YTk3MWQ1ZmI1MGFhYWNmNDY1NWY0MGYz
NjMzZmVkMGUzN2QxOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC01Miw2ICs1
Miw3IEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwg
bV9wcmV2KDApCiAgICAgLCBtX25leHQoMCkKICAgICAsIG1fYXBwbHlBdXRob3JTaGVldHMoZmFs
c2UpCisgICAgLCBtX2luc2VydGlvblBvaW50QXNzaWduZWRUbygwKQogewogICAgIEFTU0VSVChk
b2N1bWVudCk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAppbmRleCAzZGYyOGM2YTRiNTU5
ZTVhNWExNjg0YjM5ZTM4YTRjYzgyNjY0NjZiLi5lNTQ0MjZiNzZjZmUwN2E4MmViNjQ1M2VlZGZj
ZWIyYTQ2MGU1ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKQEAgLTgzLDYgKzgzLDEwIEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKIAorICAgIGJvb2wgaXNVc2Vk
Rm9yUmVuZGVyaW5nKCkgY29uc3Q7CisgICAgSW5zZXJ0aW9uUG9pbnQqIGFzc2lnbmVkVG8oKSBj
b25zdDsKKyAgICB2b2lkIHNldEFzc2lnbmVkVG8oSW5zZXJ0aW9uUG9pbnQqKTsKKwogcHJpdmF0
ZToKICAgICBTaGFkb3dSb290KERvY3VtZW50Kik7CiAgICAgdmlydHVhbCB+U2hhZG93Um9vdCgp
OwpAQCAtOTQsOCArOTgsMjUgQEAgcHJpdmF0ZToKICAgICBTaGFkb3dSb290KiBtX3ByZXY7CiAg
ICAgU2hhZG93Um9vdCogbV9uZXh0OwogICAgIGJvb2wgbV9hcHBseUF1dGhvclNoZWV0cyA6IDE7
CisgICAgSW5zZXJ0aW9uUG9pbnQqIG1faW5zZXJ0aW9uUG9pbnRBc3NpZ25lZFRvOwogfTsKIAor
aW5saW5lIEluc2VydGlvblBvaW50KiBTaGFkb3dSb290Ojphc3NpZ25lZFRvKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG87Cit9CisKK2lubGluZSB2b2lk
IFNoYWRvd1Jvb3Q6OnNldEFzc2lnbmVkVG8oSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
KQoreworICAgIEFTU0VSVCghbV9pbnNlcnRpb25Qb2ludEFzc2lnbmVkVG8gfHwgIWluc2VydGlv
blBvaW50KTsKKyAgICBtX2luc2VydGlvblBvaW50QXNzaWduZWRUbyA9IGluc2VydGlvblBvaW50
OworfQorCitpbmxpbmUgYm9vbCBTaGFkb3dSb290Ojppc1VzZWRGb3JSZW5kZXJpbmcoKSBjb25z
dAoreworICAgIHJldHVybiBpc1lvdW5nZXN0KCkgfHwgYXNzaWduZWRUbygpOworfQorCiBpbmxp
bmUgY29uc3QgU2hhZG93Um9vdCogdG9TaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAg
ICAgQVNTRVJUKCFub2RlIHx8IG5vZGUtPmlzU2hhZG93Um9vdCgpKTsKQEAgLTEwNyw2ICsxMjgs
MTIgQEAgaW5saW5lIFNoYWRvd1Jvb3QqIHRvU2hhZG93Um9vdChOb2RlKiBub2RlKQogICAgIHJl
dHVybiBjb25zdF9jYXN0PFNoYWRvd1Jvb3QqPih0b1NoYWRvd1Jvb3Qoc3RhdGljX2Nhc3Q8Y29u
c3QgTm9kZSo+KG5vZGUpKSk7CiB9CiAKK2lubGluZSBTaGFkb3dSb290KiB0b1NoYWRvd1Jvb3Qo
VHJlZVNjb3BlKiBzY29wZSkKK3sKKyAgICBBU1NFUlQoIXNjb3BlIHx8IHNjb3BlLT5pc1NoYWRv
d1Jvb3QoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNoYWRvd1Jvb3QqPihzY29wZSk7Cit9
CisKIC8vIFB1dCB0aGlzIFRyZWVTY29wZSBtZXRob2QgaGVyZSB0byBpbmxpbmUgaXQuCiBpbmxp
bmUgYm9vbCBUcmVlU2NvcGU6OmlzU2hhZG93Um9vdCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93VHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93VHJlZS5jcHAKaW5kZXggYmVlMzcyZjc4ZTc2Nzc3OTAxMGEyZmNjNDc3NzYxMDI1MzE1ZTE5
Yi4uYTIyNTExMTYwYWIxMjBjODk2MDkxYzg0NjYzZWNjMDk2ODg0NTY2MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dUcmVlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxDb250ZW50U2VsZWN0b3IuaCIK
KyNpbmNsdWRlICJIVE1MU2hhZG93RWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNs
dWRlICJTaGFkb3dSb290LmgiCkBAIC0xOTgsNiArMTk5LDE1IEBAIHZvaWQgU2hhZG93VHJlZTo6
ZGV0YWNoSG9zdChFbGVtZW50KiBob3N0KQogCiBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6
aW5zZXJ0aW9uUG9pbnRGb3IoTm9kZSogbm9kZSkgY29uc3QKIHsKKyAgICBBU1NFUlQobm9kZSAm
JiBub2RlLT5wYXJlbnROb2RlKCkpOworCisgICAgaWYgKG5vZGUtPnBhcmVudE5vZGUoKS0+aXNT
aGFkb3dSb290KCkpIHsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2lu
dCA9IHRvU2hhZG93Um9vdChub2RlLT5wYXJlbnROb2RlKCkpLT5hc3NpZ25lZFRvKCkpCisgICAg
ICAgICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorCiAgICAgaWYgKCFtX3NlbGVjdG9yKQogICAgICAgICByZXR1cm4gMDsKICAgICBIVE1MQ29u
dGVudFNlbGVjdGlvbiogZm91bmQgPSBtX3NlbGVjdG9yLT5maW5kRm9yKG5vZGUpOwpAQCAtMjA2
LDExICsyMTYsNiBAQCBJbnNlcnRpb25Qb2ludCogU2hhZG93VHJlZTo6aW5zZXJ0aW9uUG9pbnRG
b3IoTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gZm91bmQtPmluc2VydGlvblBvaW50KCk7
CiB9CiAKLWJvb2wgU2hhZG93VHJlZTo6aXNTZWxlY3RvckFjdGl2ZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fc2VsZWN0b3IgJiYgbV9zZWxlY3Rvci0+aGFzQ2FuZGlkYXRlcygpOwotfQotCiB2
b2lkIFNoYWRvd1RyZWU6OnJlYXR0YWNoKCkKIHsKICAgICBkZXRhY2goKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93VHJlZS5oCmluZGV4IDBlZmJkYjEzNjc0MzAzZmY2N2E3MWUxMGVjYzU1MWE1YTQ3NTQ4NGYu
LjU0YzQxYmJlNDE5ZjVjM2IxMmU3ODY4MmI2ZDQ5MjI1ZDQ2ZjliOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1RyZWUuaApAQCAtODIsOCArODIsNiBAQCBwdWJsaWM6CiAgICAgSFRNTENvbnRlbnRTZWxl
Y3Rvciogc2VsZWN0b3IoKSBjb25zdDsKICAgICBIVE1MQ29udGVudFNlbGVjdG9yKiBlbnN1cmVT
ZWxlY3RvcigpOwogCi0gICAgYm9vbCBpc1NlbGVjdG9yQWN0aXZlKCkgY29uc3Q7Ci0KIHByaXZh
dGU6CiAgICAgRWxlbWVudCogaG9zdCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oCmluZGV4IDI1NTUyNjhkODdlNTUxMjc3ZTEy
MzY2MDkwN2YwYTE2NzBkY2UzN2QuLmJmMTQzNTI4Yjk4NGFmYjViNzYzZDQ2M2Y5NTZhYWU0ODM3
Njc3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxl
bWVudC5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlbGVjdChjb25z
dCBBdG9taWNTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RWYWxpZCgpIGNvbnN0
OwogCisgICAgYm9vbCBkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KKwogcHJvdGVjdGVkOgogICAgIEhUTUxDb250ZW50RWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSFRNTFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IGNiMDFjZDIxZmUwZTAwOWE1ZThlMDAzYWI5
Yjg0YjY4ZmRkNDI5MzAuLjY5YzkzNjI5Zjc1ZGQ3MzUwOGExODc0NWQ4NjcxZjc0MjRjNmYxNDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxTaGFkb3dFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5j
cHAKQEAgLTI5LDE5ICsyOSwxOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lm
IEVOQUJMRShTSEFET1dfRE9NKQotCiAjaW5jbHVkZSAiSFRNTFNoYWRvd0VsZW1lbnQuaCIKIAog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEb2N1bWVudDsKIAogaW5saW5lIEhUTUxTaGFkb3dFbGVtZW50OjpIVE1MU2hhZG93RWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAg
OiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKKyAgICA6IEluc2VydGlvblBvaW50KHRh
Z05hbWUsIGRvY3VtZW50KQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKEhUTUxOYW1lczo6c2hh
ZG93VGFnKSk7CiB9CkBAIC01NSw2ICs1NCwxOCBAQCBIVE1MU2hhZG93RWxlbWVudDo6fkhUTUxT
aGFkb3dFbGVtZW50KCkKIHsKIH0KIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorY29uc3QgQXRv
bWljU3RyaW5nJiBIVE1MU2hhZG93RWxlbWVudDo6c2VsZWN0KCkgY29uc3QKK3sKKyAgICAgcmV0
dXJuIG51bGxBdG9tOworfQogCi0jZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCitib29sIEhU
TUxTaGFkb3dFbGVtZW50Ojpkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigpIGNvbnN0Cit7Cisg
ICAgVHJlZVNjb3BlKiBzY29wZSA9IHRyZWVTY29wZSgpOworCisgICAgaWYgKHNjb3BlLT5pc1No
YWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIHRvU2hhZG93Um9vdChzY29wZSktPmlzT2xkZXN0
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MU2hhZG93RWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTFNoYWRvd0VsZW1lbnQuaAppbmRleCAxNTFj
N2EyYWJiZDZjNTA1Nzg5NDNmZDZkY2NmZmYwNWM5YzlmZmY3Li5hNGVjZGIzYWQ0NWZiOGVjNGU5
YWE1MDAwYTAxZTNhZWQxY2QyMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9IVE1MU2hhZG93RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0hUTUxTaGFkb3dFbGVtZW50LmgKQEAgLTMxLDI1ICszMSwyNSBAQAogI2lmbmRlZiBIVE1MU2hh
ZG93RWxlbWVudF9oCiAjZGVmaW5lIEhUTUxTaGFkb3dFbGVtZW50X2gKIAotI2lmIEVOQUJMRShT
SEFET1dfRE9NKQotCi0jaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRp
b25Qb2ludC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgSFRNTFNoYWRvd0VsZW1lbnQgOiBwdWJsaWMgSFRNTEVsZW1lbnQgeworY2xh
c3MgSFRNTFNoYWRvd0VsZW1lbnQgOiBwdWJsaWMgSW5zZXJ0aW9uUG9pbnQgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxTaGFkb3dFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIH5IVE1MU2hhZG93RWxlbWVu
dCgpOwogCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxlY3QoKSBjb25zdDsKKyAgICBib29s
IGlzU2VsZWN0VmFsaWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgYm9v
bCBkb2VzU2VsZWN0RnJvbUhvc3RDaGlsZHJlbigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIEhU
TUxTaGFkb3dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotICAgIHZp
cnR1YWwgYm9vbCBpc1NoYWRvd0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkK
LQogI2VuZGlmIC8vIEhUTUxTaGFkb3dFbGVtZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCAzOWZhNzIwNGQ5MTNkNzcxNjYxNjQzY2I5
N2I3ODAwNzg4NTQ3Y2YzLi5lYmQ0YjI4YzQ2NDg3Y2QxNDg3MjZiOGUyZDk0MTIzNzdlN2QwNDc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuY3BwCkBA
IC00OCw5ICs0OCwxNyBAQCBJbnNlcnRpb25Qb2ludDo6fkluc2VydGlvblBvaW50KCkKIAogdm9p
ZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoKCkKIHsKLSAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9
IHRvU2hhZG93Um9vdChzaGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKLSAgICAgICAgZGlzdHJpYnV0
ZUhvc3RDaGlsZHJlbihyb290LT50cmVlKCkpOwotICAgICAgICBhdHRhY2hEaXN0cmlidXRlZE5v
ZGUoKTsKKyAgICBUcmVlU2NvcGUqIHNjb3BlID0gdHJlZVNjb3BlKCk7CisgICAgaWYgKHNjb3Bl
LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBTaGFkb3dSb290KiByb290ID0gdG9TaGFkb3dS
b290KHNjb3BlKTsKKyAgICAgICAgaWYgKGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkpIHsK
KyAgICAgICAgICAgIGRpc3RyaWJ1dGVIb3N0Q2hpbGRyZW4ocm9vdC0+dHJlZSgpKTsKKyAgICAg
ICAgICAgIGF0dGFjaERpc3RyaWJ1dGVkTm9kZSgpOworICAgICAgICB9IGVsc2UgaWYgKCFyb290
LT5vbGRlclNoYWRvd1Jvb3QoKS0+YXNzaWduZWRUbygpKSB7CisgICAgICAgICAgICBBU1NFUlQo
IXJvb3QtPm9sZGVyU2hhZG93Um9vdCgpLT5hdHRhY2hlZCgpKTsKKyAgICAgICAgICAgIGFzc2ln
blNoYWRvd1Jvb3Qocm9vdC0+b2xkZXJTaGFkb3dSb290KCkpOworICAgICAgICAgICAgcm9vdC0+
b2xkZXJTaGFkb3dSb290KCktPmF0dGFjaCgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgSFRN
TEVsZW1lbnQ6OmF0dGFjaCgpOwpAQCAtNjAsNyArNjgsMTEgQEAgdm9pZCBJbnNlcnRpb25Qb2lu
dDo6ZGV0YWNoKCkKIHsKICAgICBpZiAoU2hhZG93Um9vdCogcm9vdCA9IHRvU2hhZG93Um9vdChz
aGFkb3dUcmVlUm9vdE5vZGUoKSkpIHsKICAgICAgICAgU2hhZG93VHJlZSogdHJlZSA9IHJvb3Qt
PnRyZWUoKTsKLSAgICAgICAgY2xlYXJEaXN0cmlidXRpb24odHJlZSk7CisKKyAgICAgICAgaWYg
KGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkpCisgICAgICAgICAgICBjbGVhckRpc3RyaWJ1
dGlvbih0cmVlKTsKKyAgICAgICAgZWxzZSBpZiAoU2hhZG93Um9vdCogYXNzaWduZWRTaGFkb3dS
b290ID0gYXNzaWduZWRGcm9tKCkpCisgICAgICAgICAgICBjbGVhckFzc2lnbm1lbnQoYXNzaWdu
ZWRTaGFkb3dSb290KTsKIAogICAgICAgICAvLyBXaGVuIHNoYWRvdyBlbGVtZW50IGlzIGRldGFj
aGVkLCBzaGFkb3cgdHJlZSBzaG91bGQgYmUgcmVjcmVhdGVkIHRvIHJlLWNhbGN1bGF0ZSBzZWxl
Y3RvciBmb3IKICAgICAgICAgLy8gb3RoZXIgaW5zZXJ0aW9uIHBvaW50cy4KQEAgLTcxLDYgKzgz
LDE4IEBAIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmRldGFjaCgpCiAgICAgSFRNTEVsZW1lbnQ6OmRl
dGFjaCgpOwogfQogCitTaGFkb3dSb290KiBJbnNlcnRpb25Qb2ludDo6YXNzaWduZWRGcm9tKCkg
Y29uc3QKK3sKKyAgICBUcmVlU2NvcGUqIHNjb3BlID0gdHJlZVNjb3BlKCk7CisgICAgaWYgKCFz
Y29wZS0+aXNTaGFkb3dSb290KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgU2hhZG93Um9v
dCogb2xkZXJTaGFkb3dSb290ID0gdG9TaGFkb3dSb290KHNjb3BlKS0+b2xkZXJTaGFkb3dSb290
KCk7CisgICAgaWYgKG9sZGVyU2hhZG93Um9vdCAmJiBvbGRlclNoYWRvd1Jvb3QtPmFzc2lnbmVk
VG8oKSA9PSB0aGlzKQorICAgICAgICByZXR1cm4gb2xkZXJTaGFkb3dSb290OworICAgIHJldHVy
biAwOworfQorCiBib29sIEluc2VydGlvblBvaW50Ojppc1NoYWRvd0JvdW5kYXJ5KCkgY29uc3QK
IHsKICAgICBpZiAoVHJlZVNjb3BlKiBzY29wZSA9IHRyZWVTY29wZSgpKQpAQCAtMTAyLDQgKzEy
NiwxOCBAQCBpbmxpbmUgdm9pZCBJbnNlcnRpb25Qb2ludDo6YXR0YWNoRGlzdHJpYnV0ZWROb2Rl
KCkKICAgICAgICAgc2VsZWN0aW9uLT5ub2RlKCktPmF0dGFjaCgpOwogfQogCitpbmxpbmUgdm9p
ZCBJbnNlcnRpb25Qb2ludDo6YXNzaWduU2hhZG93Um9vdChTaGFkb3dSb290KiBzaGFkb3dSb290
KQoreworICAgIHNoYWRvd1Jvb3QtPnNldEFzc2lnbmVkVG8odGhpcyk7CisgICAgbV9zZWxlY3Rp
b25zLmNsZWFyKCk7CisgICAgZm9yIChOb2RlKiBub2RlID0gc2hhZG93Um9vdC0+Zmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgbV9zZWxlY3Rp
b25zLmFwcGVuZChIVE1MQ29udGVudFNlbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIG5vZGUpKTsKK30K
KworaW5saW5lIHZvaWQgSW5zZXJ0aW9uUG9pbnQ6OmNsZWFyQXNzaWdubWVudChTaGFkb3dSb290
KiBzaGFkb3dSb290KQoreworICAgIHNoYWRvd1Jvb3QtPnNldEFzc2lnbmVkVG8oMCk7CisgICAg
bV9zZWxlY3Rpb25zLmNsZWFyKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IGZlMWU2YjE3MDZm
ZDMzMjQ4NmQzNTYyMDFjOWY1ZTNhNDJkZGViZmMuLmI1MjgyY2RkYzI3NDgyY2VjMzM1MzVkZGJl
YjY4YzcwZjU1ODg0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0lu
c2VydGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9u
UG9pbnQuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiSFRNTENvbnRlbnRTZWxlY3Rv
ci5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsMTEg
KzQ4LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBzZWxl
Y3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIGlzU2VsZWN0VmFsaWQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGRvZXNTZWxlY3RGcm9tSG9zdENoaWxkcmVuKCkgY29uc3Qg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2goKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0luc2VydGlvblBvaW50KCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIFNoYWRvd1Jvb3QqIGFzc2lnbmVkRnJvbSgpIGNvbnN0
OwogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zZXJ0aW9uUG9pbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CkBAIC02Miw2ICs2NSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjbGVhckRp
c3RyaWJ1dGlvbihTaGFkb3dUcmVlKik7CiAgICAgdm9pZCBhdHRhY2hEaXN0cmlidXRlZE5vZGUo
KTsKIAorICAgIHZvaWQgYXNzaWduU2hhZG93Um9vdChTaGFkb3dSb290Kik7CisgICAgdm9pZCBj
bGVhckFzc2lnbm1lbnQoU2hhZG93Um9vdCopOworCiAgICAgSFRNTENvbnRlbnRTZWxlY3Rpb25M
aXN0IG1fc2VsZWN0aW9uczsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYWM2NjgzNjVhMTZkZjllY2RjNzI1MzIw
M2NhMDRhNTY4ZDFkNjMxLi5lMzYzY2NkMzhmZDdiNWIwMzNmMTI4OTNiMTlhNjRmMGY3MzU3YWY5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDMtMDggIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIDxzaGFkb3c+IHNob3VsZCBiZSByZW5kZXJl
ZCBjb3JyZWN0bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODU5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENvbnRhaW5zIHRlc3RzIGJvdGggaW4gY2FzZSA8c2hhZG93PiBhcHBlYXJzIGluIHRoZSBv
bGRlc3Qgc2hhZG93IHJvb3QgYW5kCisgICAgICAgIG5vbi1vbGRlcnN0IHNoYWRvdyB0cmVlLgor
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0
aXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFk
b3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVy
aW5nLXNpbmdsZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2tpcHBlZDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRm
b3JtL3dpbmNhaXJvL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2syL1NraXBwZWQ6CisK
IDIwMTItMDMtMDcgIE1pa2UgTGF3dGhlciAgPG1pa2VsYXd0aGVyQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBDU1MzIGNhbGM6IG1peGVkIGFic29sdXRlL3BlcmNlbnRhZ2VzIHdvcmsgZm9yIHdp
ZHRoLCBoZWlnaHQsIG1hcmdpbiBhbmQgcGFkZGluZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVy
aW5nLW11bHRpcGxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWRhYzIwZmRmM2FhZWRhNjMw
MjljZjY4ZGJiODU4NzRjOTYyNTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzMiBAQAorcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdAorUEFTUworcmVu
ZGVyaW5nRG91YmxlU2hhZG93Um9vdFdpdGhPbmVTaGFkb3dFbGVtZW50CitQQVNTCityZW5kZXJp
bmdUcmlwbGVTaGFkb3dSb290CitQQVNTCityZW5kZXJpbmdUd29TaGFkb3dSb290cworUEFTUwor
dGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQxCitQQVNTCit0ZXN0V2l0aERvdWJs
ZVNoYWRvd1Jvb3RXaXRoQ29udGVudDIKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RE
eW5hbWljYWxseUFkZGVkMQorUEFTUworcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNh
bGx5QWRkZWQyCitQQVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlBZGRl
ZDMKK1BBU1MKK3JlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseVJlbW92ZWQxCitQ
QVNTCityZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2FsbHlSZW1vdmVkMgorUEFTUwor
cmVuZGVyaW5nTGlnaHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ09s
ZGVyU2hhZG93Um9vdENvbnRlbnREeW5hbWljYWxseUFkZGVkCitQQVNTCityZW5kZXJpbmdMaWdo
dENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCityZW5kZXJpbmdPbGRlclNoYWRvd1Jv
b3RDb250ZW50RHluYW1pY2FsbHlSZW1vdmVkCitQQVNTCitURVNUIENPTVBMRVRFRAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVy
aW5nLW11bHRpcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVs
ZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVkZTgxODEzMGIyZDNh
NmQ3ZWRjZWMwY2NjY2NkMzljODMyNWY3YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbApA
QCAtMCwwICsxLDQ0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxl
PgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJlcyB1bmRlcmx5aW5nIFJlbmRlckxheWVy
ICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisKKy5zcGFuIHsK
KyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAgbWFyZ2luOiAycHg7CisgICAgYm9yZGVy
OiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10
ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkg
eworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsK
K30KKworZnVuY3Rpb24gdGVhckRvd25PbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBs
ZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsK
KwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdChjYWxs
SWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXIn
KS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5C
RUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5B
RlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdN
SUQnKSk7CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAg
c3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3Ix
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNy
MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdh
Y3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOwor
fSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3RX
aXRoT25lU2hhZG93RWxlbWVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFu
PjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIC8vIE1JRCB3b24ndCBiZSByZW5k
ZXJlZC4KKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIg
c3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdC
RUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
c2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVS
IDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicp
LmFwcGVuZENoaWxkKHJvb3QpOworICAgIGNhbGxJZkRvbmUoKTsKK30pOworCit0ZXN0RnVuY3Mu
cHVzaChmdW5jdGlvbiByZW5kZXJpbmdUcmlwbGVTaGFkb3dSb290KGNhbGxJZkRvbmUpIHsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAzPC9zcGFuPjxzcGFuPkJFRk9SRSAyPC9zcGFu
PjxzcGFuPkJFRk9SRSAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+TUlEPC9zcGFuPiIgKwor
ICAgICAgICAiPHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjxzcGFuPkFG
VEVSIDM8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3Iy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgdmFyIHNyMyA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KHJvb3QpOworICAgIHNyMy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9S
RSAzJykpOworICAgIHNyMy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFk
b3cnKSk7CisgICAgc3IzLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMycp
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNo
KGZ1bmN0aW9uIHJlbmRlcmluZ1R3b1NoYWRvd1Jvb3RzKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAg
ICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPiIgKworICAgICAgICAgICAgIjxzcGFuPkJF
Rk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPiIgKworICAg
ICAgICAgICAgIjxzcGFuPkZBTExCQUNLIDItMjwvc3Bhbj4iICsKKyAgICAgICAgIjxzcGFuPkFG
VEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01J
RCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc3Iy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgdmFyIHNoYWRvdzIxID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MjEuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyLTEnKSk7CisgICAgdmFyIHNoYWRvdzIyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93MjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyLTInKSk7CisKKyAgICBzcjIuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
c2hhZG93MjEpOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cyMik7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAg
Y2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHRlc3RXaXRoRG91
YmxlU2hhZG93Um9vdFdpdGhDb250ZW50MShjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRp
dj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5NSUQgMjwvc3Bhbj4iICsKKyAgICAgICAgIjxz
cGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRCAxPC9zcGFuPjxzcGFuPk1JRCAzPC9zcGFuPjxz
cGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2
PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQgMycsICdzcjMnKSk7Cisg
ICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCAxJywgJ3NyMScpKTsK
KyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEIDInLCAnc3IyJykp
OworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsK
KyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExC
QUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHZh
ciBjb250ZW50MSA9IGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IxJywgJ0NPTlRFTlQgRkFM
TEJBQ0sgMScpOworICAgIHNyMS5hcHBlbmRDaGlsZChjb250ZW50MSk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKHNoYWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0FGVEVSIDEnKSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpOworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdT
SEFET1cgRkFMTEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
cm9vdCk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDIn
KSk7CisgICAgdmFyIGNvbnRlbnQ7CisgICAgc3IyLmFwcGVuZENoaWxkKGNvbnRlbnQgPSBjcmVh
dGVDb250ZW50V2l0aFNlbGVjdCgnLnNyMicsICdDT05URU5UIEZBTExCQUNLIDInKSk7CisgICAg
Y29udGVudC50aXRsZSA9ICJkZWJ1Z3N0b3AiOworICAgIHNyMi5hcHBlbmRDaGlsZChzaGFkb3cy
KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOwor
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRD
aGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVu
Y3Rpb24gdGVzdFdpdGhEb3VibGVTaGFkb3dSb290V2l0aENvbnRlbnQyKGNhbGxJZkRvbmUpIHsK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRN
TCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPk1JRCAyPC9zcGFu
PjxzcGFuPk1JRCAzPC9zcGFuPjxzcGFuPk1JRCAxPC9zcGFuPiIgKworICAgICAgICAiPHNwYW4+
QkVGT1JFIDE8L3NwYW4+PHNwYW4+Q09OVEVOVCBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPlNIQURP
VyBGQUxMQkFDSyAxPC9zcGFuPjxzcGFuPkFGVEVSIDE8L3NwYW4+IiArCisgICAgICAgICI8c3Bh
bj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdNSUQgMycsICdzcjMnKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ01JRCAxJywgJ3NyMScpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnTUlEIDInLCAnc3IyJykpOworCisgICAgdmFyIHNoYWRvdzEgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLIDEnKSk7CisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVDb250ZW50V2l0aFNlbGVj
dCgnLnNyMScsICdDT05URU5UIEZBTExCQUNLIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKHNo
YWRvdzEpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEn
KSk7CisKKyAgICB2YXIgc2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
OworICAgIHNoYWRvdzIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSEFET1cgRkFM
TEJBQ0sgMicpKTsKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7Cisg
ICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAg
c3IyLmFwcGVuZENoaWxkKGNyZWF0ZUNvbnRlbnRXaXRoU2VsZWN0KCcuc3IyJywgJ0NPTlRFTlQg
RkFMTEJBQ0sgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlQ29udGVudFdpdGhTZWxl
Y3QoJ3NwYW4nLCAnQ09OVEVOVCBGQUxMQkFDSyAzJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChz
aGFkb3cyKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAy
JykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5h
cHBlbmRDaGlsZChyb290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1
c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5QWRkZWQxKGNh
bGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5l
cicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFu
PkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFu
PkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQo
J01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAg
ICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBz
cjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNy
MS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3Qp
OworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVu
Y3Rpb24oKSB7CisgICAgICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsK
KyAgICAgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7
CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cn
KSk7CisgICAgICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDIn
KSk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkocm9vdCwgY2FsbElmRG9uZSk7
CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9u
IHJlbmRlcmluZ0RvdWJsZVNoYWRvd1Jvb3REeW5hbWljYWxseUFkZGVkMihjYWxsSWZEb25lKSB7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhU
TUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwv
c3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9z
cGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisK
KyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNv
bnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3Iy
LCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIHNoYWRvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgICAgICBzcjIuaW5zZXJ0QmVm
b3JlKHNoYWRvdywgc3IyLmxhc3RDaGlsZCk7CisKKyAgICAgICAgY2FsbElmRG9uZSgpCisgICAg
fTt9KShzcjIsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0
ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdEb3VibGVTaGFkb3dSb290RHluYW1pY2Fs
bHlBZGRlZDMoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBl
Y3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8
L3NwYW4+PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSIDE8
L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFkb3dSb290
KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAx
JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7
CisKKyAgICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAg
IHZhciBmID0gKGZ1bmN0aW9uKHNyMSwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rpb24oKSB7
CisgICAgICAgIHZhciBzaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsK
KyAgICAgICAgc3IxLmluc2VydEJlZm9yZShzaGFkb3csIHNyMS5sYXN0Q2hpbGQpOworCisgICAg
ICAgIGNhbGxJZkRvbmUoKQorICAgIH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRp
bWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91
YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5UmVtb3ZlZDEoY2FsbElmRG9uZSkgeworICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAg
ICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+PHNwYW4+QUZURVIgMjwvc3Bhbj48L2Rpdj4i
OworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICBy
b290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFyIHNy
MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ0JFRk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNw
YW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZP
UkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hh
ZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDIn
KSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFw
cGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IyLCBjYWxsSWZEb25l
KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IyLnJlbW92ZUNoaWxkKHNyMi5maXJz
dENoaWxkLm5leHRTaWJsaW5nKTsKKyAgICAgICAgY2FsbElmRG9uZSgpOworICAgIH07fSkoc3Iy
LCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNz
LnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nRG91YmxlU2hhZG93Um9vdER5bmFtaWNhbGx5UmVtb3Zl
ZDIoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29u
dGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFIDI8L3NwYW4+
PHNwYW4+QkVGT1JFIDE8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAyPC9z
cGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rp
dicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisK
KyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjEuYXBwZW5kQ2hp
bGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAxJykpOworCisgICAgdmFyIHNyMiA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0JFRk9SRSAyJykpOworICAgIHNyMi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnQUZURVIgMicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihzcjEs
IGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBzcjEucmVtb3ZlQ2hp
bGQoc3IxLmZpcnN0Q2hpbGQubmV4dFNpYmxpbmcpOworICAgICAgICBjYWxsSWZEb25lKCk7Cisg
ICAgfTt9KShzcjEsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOwor
Cit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2Fs
bHlBZGRlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVj
dC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwv
c3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwv
c3Bhbj48c3Bhbj5BRlRFUiAyPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNyMSA9IG5ldyBXZWJLaXRTaGFk
b3dSb290KHJvb3QpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0JF
Rk9SRSAxJykpOworICAgIHNyMS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdz
aGFkb3cnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIg
MScpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBz
cjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOwor
CisgICAgdmFyIGYgPSAoZnVuY3Rpb24ocm9vdCwgY2FsbElmRG9uZSkgeyByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQn
KSk7CisgICAgICAgIGNhbGxJZkRvbmUoKTsKKyAgICB9O30pKHJvb3QsIGNhbGxJZkRvbmUpOwor
CisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiBy
ZW5kZXJpbmdPbGRlclNoYWRvd1Jvb3RDb250ZW50RHluYW1pY2FsbHlBZGRlZChjYWxsSWZEb25l
KSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5l
ckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUg
MTwvc3Bhbj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+QUZURVIgMTwvc3Bhbj48c3Bhbj5BRlRFUiAy
PC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7
CisKKyAgICB2YXIgc3IxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDEnKSk7CisgICAgc3IxLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKworICAgIHZhciBzcjIg
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ0FGVEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rp
b24oc3IxLCBjYWxsSWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IxLmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVIgMScpKTsKKyAgICAgICAgY2FsbElm
RG9uZSgpOworICAgIH07fSkoc3IxLCBjYWxsSWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwg
MCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nTGlnaHRDaGlsZHJl
bkR5bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5CRUZPUkUgMjwvc3Bhbj48c3Bhbj5CRUZPUkUgMTwvc3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFu
PjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciByb290ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290
KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUgMScpKTsK
KyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOwor
ICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSIDEnKSk7CisKKyAg
ICB2YXIgc3IyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IyLmFwcGVuZENo
aWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFIDInKSk7CisgICAgc3IyLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUiAyJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZhciBm
ID0gKGZ1bmN0aW9uKHJvb3QsIGNhbGxJZkRvbmUpIHsgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAg
ICAgICByb290LnJlbW92ZUNoaWxkKHJvb3QuZmlyc3RDaGlsZCk7CisgICAgICAgIGNhbGxJZkRv
bmUoKTsKKyAgICB9O30pKHJvb3QsIGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAw
KTsKK30pOworCit0ZXN0RnVuY3MucHVzaChmdW5jdGlvbiByZW5kZXJpbmdPbGRlclNoYWRvd1Jv
b3RDb250ZW50RHluYW1pY2FsbHlSZW1vdmVkKGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8
ZGl2PjxzcGFuPkJFRk9SRSAyPC9zcGFuPjxzcGFuPkJFRk9SRSAxPC9zcGFuPjxzcGFuPk1JRDwv
c3Bhbj48c3Bhbj5BRlRFUiAxPC9zcGFuPjxzcGFuPkFGVEVSIDI8L3NwYW4+PC9kaXY+IjsKKwor
ICAgIHZhciByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgcm9vdC5h
cHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsKKworICAgIHZhciBzcjEgPSBu
ZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdCRUZPUkUgMScpKTsKKyAgICBzcjEuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyMS5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ0FGVEVSIDEnKSk7CisgICAgc3IxLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzcjIgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChyb290KTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdCRUZPUkUgMicpKTsKKyAgICBzcjIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc2hhZG93JykpOworICAgIHNyMi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FG
VEVSIDInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5l
cicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAoZnVuY3Rpb24oc3IxLCBjYWxs
SWZEb25lKSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgc3IxLnJlbW92ZUNoaWxkKHNy
MS5sYXN0Q2hpbGQpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfTt9KShzcjEsIGNhbGxJ
ZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8ZGl2IGlkPSJhY3R1YWwt
Y29udGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1jb250
YWluZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjEwY2NiYjA5NDc0N2M5NTM3MWZhOTIzYjFiYTRlYzIz
YjY0MjcwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIg
QEAKK3JlbmRlcmluZ1NpbmdsZVNoYWRvd1Jvb3QKK1BBU1MKK3JlbmRlcmluZ05vdEZhbGxiYWNr
ZWQKK1BBU1MKK3JlbmRlcmluZ0ZhbGxiYWNrZWQKK1BBU1MKK3JlbmRlcmluZ01peGVkT2ZGYWxs
YmFja0FuZE5vbkZhbGxiYWNrCitQQVNTCityZW5kZXJpbmdTaGFkb3dSb290QmVmb3JlQ29udGVu
dAorUEFTUworcmVuZGVyaW5nU2hhZG93Um9vdEFmdGVyQ29udGVudAorUEFTUworcmVuZGVyaW5n
U2hhZG93RWxlbWVudER5bmFtaWNhbGx5QWRkZWQKK1BBU1MKK3JlbmRlcmluZ1NoYWRvd0VsZW1l
bnREeW5hbWljYWxseVJlbW92ZWQKK1BBU1MKK3JlbmRlcmluZ0xpZ2h0Q2hpbGRyZW5EeW5hbWlj
YWxseUFkZGVkCitQQVNTCityZW5kZXJpbmdMaWdodENoaWxkcmVuRHluYW1pY2FsbHlSZW1vdmVk
CitQQVNTCitURVNUIENPTVBMRVRFRAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNGU4MDZmOTVhMTg2YzdiYzQ2MTgwODAzOTg1Y2YxOGI5N2QxYTMyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1lbGVtZW50
LXJlbmRlcmluZy1zaW5nbGUuaHRtbApAQCAtMCwwICsxLDI0NCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorLyogcmVsYXRpdmUgcG9zaXRpb25pbmcgZW5zdXJl
cyB1bmRlcmx5aW5nIFJlbmRlckxheWVyICovCisuY29udGFpbmVyIHsKKyAgICBwb3NpdGlvbjog
cmVsYXRpdmU7Cit9CisKKy5zcGFuIHsKKyAgICBkaXNwbGF5OiBib3hlZC1pbmxpbmU7CisgICAg
bWFyZ2luOiAycHg7CisgICAgYm9yZGVyOiBzb2xpZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL3NoYWRvdy10ZXN0LWRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gc2V0VXBPbmNlKCkgeworICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRv
d1N1YnRyZWVzRW5hYmxlZCh0cnVlKTsKK30KKworZnVuY3Rpb24gdGVhckRvd25PbmNlKCkgewor
ICAgIGludGVybmFscy5zZXRNdWx0aXBsZVNoYWRvd1N1YnRyZWVzRW5hYmxlZChmYWxzZSk7Cit9
CisKK3ZhciB0ZXN0RnVuY3MgPSBbXTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVy
aW5nU2luZ2xlU2hhZG93Um9vdChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7
CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc3Ig
PSBuZXcgV2ViS2l0U2hhZG93Um9vdChyb290KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ0JFRk9SRScpKTsKKyAgICBzci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdzaGFkb3cnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhU
ZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29u
dGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rl
c3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ05vdEZhbGxiYWNrZWQoY2FsbElmRG9uZSkg
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0KKyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48
c3Bhbj5BRlRFUjwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnTUlEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3No
YWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZBTExC
QUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVu
ZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdB
RlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RGdW5j
cy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0ZhbGxiYWNrZWQoY2FsbElmRG9uZSkgeworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAg
ICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPkZBTExCQUNLPC9zcGFuPjxzcGFu
PkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NoYWRvdycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0ZB
TExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAg
IHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFw
cGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFp
bmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOworfSk7CisKK3Rlc3RG
dW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ01peGVkT2ZGYWxsYmFja0FuZE5vbkZhbGxiYWNr
KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRh
aW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bhbj48c3Bh
bj5NSUQ8L3NwYW4+PHNwYW4+RkFMTEJBQ0sgMjwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rp
dj4iOworCisgICAgdmFyIHJvb3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgdmFy
IHNoYWRvdzEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKyAgICBzaGFkb3cx
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnRkFMTEJBQ0sgMScpKTsKKyAgICB2YXIg
c2hhZG93MiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycpOworICAgIHNoYWRvdzIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSyAyJykpOworCisgICAgdmFy
IHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93MSk7
CisgICAgc3IuYXBwZW5kQ2hpbGQoc2hhZG93Mik7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdh
Y3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisgICAgY2FsbElmRG9uZSgpOwor
fSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ1NoYWRvd1Jvb3RCZWZvcmVD
b250ZW50KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0
LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkJFRk9SRTwvc3Bh
bj48c3Bhbj5NSUQ8L3NwYW4+PHNwYW4+TSAxPC9zcGFuPjxzcGFuPkNPTlRFTlQgRkFMTEJBQ0s8
L3NwYW4+PHNwYW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2PiI7CisKKyAgICB2
YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIgc2hhZG93ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLJykpOworICAgIHZhciBzciA9IG5ldyBX
ZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRo
VGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDEnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQo
Y3JlYXRlQ29udGVudFdpdGhTZWxlY3QoJ3NwYW4nLCAnQ09OVEVOVCBGQUxMQkFDSycpKTsKKyAg
ICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ00gMicpKTsKKyAgICBzci5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKyAgICBj
YWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hh
ZG93Um9vdEFmdGVyQ29udGVudChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5CRUZPUkU8L3NwYW4+PHNwYW4+TUlEPC9zcGFuPjxzcGFuPk0gMTwvc3Bhbj48c3Bhbj5TSEFE
T1cgRkFMTEJBQ0s8L3NwYW4+PHNwYW4+TSAyPC9zcGFuPjxzcGFuPkFGVEVSPC9zcGFuPjwvZGl2
PiI7CisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisKKyAgICB2YXIg
c2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93Jyk7CisgICAgc2hhZG93LmFw
cGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnU0hBRE9XIEZBTExCQUNLJykpOworICAgIHZh
ciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZUNv
bnRlbnRXaXRoU2VsZWN0KCdzcGFuJywgJ0NPTlRFTlQgRkFMTEJBQ0snKSk7CisgICAgc3IuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNIDEnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQo
c2hhZG93KTsKKyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ00gMicpKTsK
KyAgICBzci5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0FGVEVSJykpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChy
b290KTsKKyAgICBjYWxsSWZEb25lKCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24g
cmVuZGVyaW5nU2hhZG93RWxlbWVudER5bmFtaWNhbGx5QWRkZWQoY2FsbElmRG9uZSkgeworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0K
KyAgICAgICAgIjxkaXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5B
RlRFUjwvc3Bhbj48L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRF
UicpKTsKKworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnTUlEJykpOworCisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZChyb290KTsKKworICAgIHZh
ciBmID0gKGZ1bmN0aW9uKGNhbGxJZkRvbmUsIHJvb3QsIHNyKSB7IHJldHVybiBmdW5jdGlvbigp
IHsKKyAgICAgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRvdycp
OworICAgICAgICBzci5hcHBlbmRDaGlsZChzaGFkb3cpOworICAgICAgICBjYWxsSWZEb25lKCk7
CisgICAgfX0pKGNhbGxJZkRvbmUsIHJvb3QsIHNyKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7
Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nU2hhZG93RWxlbWVudER5
bmFtaWNhbGx5UmVtb3ZlZChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5C
RUZPUkU8L3NwYW4+PHNwYW4+QUZURVI8L3NwYW4+PC9kaXY+IgorCisgICAgdmFyIHJvb3QgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNyZWF0
ZVNwYW5XaXRoVGV4dCgnU0hPVUxEIE5PVCBCRSBSRU5ERVJFRCcpKTsKKworICAgIHZhciBzaGFk
b3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzaGFkb3cnKTsKKworICAgIHZhciBzciA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxkKHNoYWRvdyk7CisgICAgc3Iu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicpKTsKKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQocm9vdCk7CisK
KyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCBzciwgc2hhZG93KSB7IHJldHVybiBm
dW5jdGlvbigpIHsKKyAgICAgICAgc3IucmVtb3ZlQ2hpbGQoc2hhZG93KTsKKyAgICAgICAgY2Fs
bElmRG9uZSgpOworICAgIH19KShjYWxsSWZEb25lLCBzciwgc2hhZG93KTsKKworICAgIHNldFRp
bWVvdXQoZiwgMCk7Cit9KTsKKwordGVzdEZ1bmNzLnB1c2goZnVuY3Rpb24gcmVuZGVyaW5nTGln
aHRDaGlsZHJlbkR5bmFtaWNhbGx5QWRkZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxk
aXY+PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48
L2Rpdj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
CisgICAgdmFyIHNyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qocm9vdCk7CisgICAgc3IuYXBwZW5k
Q2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdCRUZPUkUnKSk7CisgICAgc3IuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2hhZG93JykpOworICAgIHNyLmFwcGVuZENoaWxkKGNy
ZWF0ZVNwYW5XaXRoVGV4dCgnQUZURVInKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHJvb3QpOworCisgICAgdmFyIGYgPSAo
ZnVuY3Rpb24oY2FsbElmRG9uZSwgcm9vdCkgeyByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdNSUQnKSk7CisgICAgICAgIGNh
bGxJZkRvbmUoKTsKKyAgICB9fSkoY2FsbElmRG9uZSwgcm9vdCk7CisKKyAgICBzZXRUaW1lb3V0
KGYsIDApOworfSk7CisKK3Rlc3RGdW5jcy5wdXNoKGZ1bmN0aW9uIHJlbmRlcmluZ0xpZ2h0Q2hp
bGRyZW5EeW5hbWljYWxseVJlbW92ZWQoY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+
PHNwYW4+QkVGT1JFPC9zcGFuPjxzcGFuPk1JRDwvc3Bhbj48c3Bhbj5BRlRFUjwvc3Bhbj48L2Rp
dj4iCisKKyAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTSE9VTEQgTk9UIEJFIFJFTkRF
UkVEJykpOworCisgICAgdmFyIHNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NoYWRv
dycpOworICAgIHNoYWRvdy5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ01JRCcpKTsK
KworICAgIHZhciBzciA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHJvb3QpOworICAgIHNyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQkVGT1JFJykpOworICAgIHNyLmFwcGVuZENoaWxk
KHNoYWRvdyk7CisgICAgc3IuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdBRlRFUicp
KTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBw
ZW5kQ2hpbGQocm9vdCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbihjYWxsSWZEb25lLCByb290
KSB7IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgcm9vdC5yZW1vdmVDaGlsZChyb290LmZp
cnN0Q2hpbGQpOworICAgICAgICBjYWxsSWZEb25lKCk7CisgICAgfX0pKGNhbGxJZkRvbmUsIHJv
b3QpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30pOworCis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0iZG9UZXN0KHRlc3RGdW5jcykiPgorCis8ZGl2IGlkPSJhY3R1YWwtY29u
dGFpbmVyIiBjbGFzcz0iY29udGFpbmVyIj48L2Rpdj4KKzxkaXYgaWQ9ImV4cGVjdC1jb250YWlu
ZXIiIGNsYXNzPSJjb250YWluZXIiPjwvZGl2PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisK
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9T
a2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggOTFlMmFmZGYx
ZjIxMTA4MGVlNjM4MzFiMzc0NThjMzlhZWFkYmU0OS4uOWNlNGRhMTdjODc3MWJmYzYyYjUwMTA2
ZjI4NDk3YmI4MGNjYjdlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTIwODAsNiAr
MjA4MCw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZGlzYWJsZS5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93LXJvb3QtYXR0YWNoZWQuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
b290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXBwZW5kLmh0bWwKK2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1z
aGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggYzc3Mjgx
Y2JhYzI5Nzc0YTA0NzY1ZTNjOTY1NzhhYWI2MGRmMGIyYS4uNmIyMTQ5MGQ4MDFiMGJiOWY0MjQ0
MjczZDJjZTEwMDBjNGU3ZjM2NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTQzNiw2
ICs0MzYsOCBAQCBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0bWwKIGZh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRv
dy11bC1saS5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtYXBwZW5kLmh0bWwKK2Zh
c3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1yZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9k
b20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRp
cGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1z
aGFkb3dyb290LWFkb3B0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGI0N2NjODVl
ZWY0NTU1ODQ3MmViYWZmY2ZlMTM2Mzc0Y2Q5OWJlMzguLjJkZmE3YzI3NWI5YzMxZWJlYzVkMGM1
Y2Y3MmEzZjgyMmM2ZWQyOWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMTc1LDYgKzE3
NSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1pbm5lckhUTUwuaHRtbAogZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1yb290LW5ldy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXVs
LWxpLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1hcHBlbmQuaHRtbAorZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1zaW5nbGUuaHRtbAorZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1lbGVtZW50LXJlbmRlcmluZy1tdWx0aXBsZS5odG1sCiBmYXN0L2RvbS9z
aGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUt
c2hhZG93cm9vdC1yZW5kZXJpbmcuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRv
d3Jvb3QtYWRvcHQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRleCAzM2FkNjNhNWI2
ZGFkMDlmN2JmZmQzYTI0NWM2OGIyNjQ2ZTVkY2ZlLi5kMTc5MzkzNjEzZTkxM2NmNTZiYTg0OTY4
OTgzM2Q2NmFkODI5YzJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApAQCAtMTQ2Miw2ICsx
NDYyLDggQEAgZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWlubmVySFRNTC5odG1sCiBmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtbmV3Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
dWwtbGkuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWFwcGVuZC5odG1sCitmYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVuZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9t
L3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBs
ZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1sCiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hh
ZG93cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5j
YWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAppbmRl
eCA5MDhhZTIxZTEwNDI3NjIzM2FkYzAwZjM2YjIyNjZiOTA5MDZlZTZjLi5iNjhlMWVmODZjMjc4
YTU2MWQ3NGM1MzgzOTZiM2U4NWIxYzYxZTAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJv
L1NraXBwZWQKQEAgLTE5NzUsNiArMTk3NSw4IEBAIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9v
dC1hdHRhY2hlZC5odG1sCiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1uZXcuaHRtbAogZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1yb290LWFwcGVuZC5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQt
cmVuZGVyaW5nLXNpbmdsZS5odG1sCitmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWVsZW1lbnQtcmVu
ZGVyaW5nLW11bHRpcGxlLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290
Lmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LXJlbmRlcmluZy5odG1s
CiBmYXN0L2RvbS9zaGFkb3cvbXVsdGlwbGUtc2hhZG93cm9vdC1hZG9wdC5odG1sCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL3drMi9Ta2lwcGVkCmluZGV4IGM5NDRhZWNmMzg4MDhlOWJkOGMzZDBhOWYzZDA5YTgxOWMx
Y2U3ZWMuLjBlZTBjMDVhYTc5MTdiMDRmOGNjMzdjYjAxYTUwN2RjMzYxZTgxNWMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL3drMi9Ta2lwcGVkCkBAIC0xMDczLDYgKzEwNzMsOCBAQCBmYXN0L2RvbS9zaGFkb3cv
c2hhZG93LXJvb3QtaW5uZXJIVE1MLmh0bWwKIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1u
ZXcuaHRtbAogZmFzdC9kb20vc2hhZG93L3NoYWRvdy11bC1saS5odG1sCiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93LXJvb3QtYXBwZW5kLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVu
dC1yZW5kZXJpbmctc2luZ2xlLmh0bWwKK2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctZWxlbWVudC1y
ZW5kZXJpbmctbXVsdGlwbGUuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jv
b3QuaHRtbAogZmFzdC9kb20vc2hhZG93L211bHRpcGxlLXNoYWRvd3Jvb3QtcmVuZGVyaW5nLmh0
bWwKIGZhc3QvZG9tL3NoYWRvdy9tdWx0aXBsZS1zaGFkb3dyb290LWFkb3B0Lmh0bWwK
</data>
<flag name="review"
          id="133902"
          type_id="1"
          status="+"
          setter="morrita"
    />
          </attachment>
      

    </bug>

</bugzilla>