<?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>100738</bug_id>
          
          <creation_ts>2012-10-30 02:28:09 -0700</creation_ts>
          <short_desc>[Shadow DOM] Changing id, className, or attribute should invalidate distribution</short_desc>
          <delta_ts>2012-11-27 18:04:45 -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>
          
          <blocked>100451</blocked>
    
    <blocked>103474</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>754112</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-30 02:28:09 -0700</bug_when>
    <thetext>When we change className dynamically, this does not reflect to distribution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754169</commentid>
    <comment_count>1</comment_count>
      <attachid>171409</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-30 03:44:47 -0700</bug_when>
    <thetext>Created attachment 171409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754188</commentid>
    <comment_count>2</comment_count>
      <attachid>171409</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-10-30 04:03:43 -0700</bug_when>
    <thetext>Comment on attachment 171409
Patch

We could have attribute selector in @selector element. So covering class doesn&apos;t look sufficient.
Also, doing this for each attribut change looks so expensive. Is it possible to do this more efficiently?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754513</commentid>
    <comment_count>3</comment_count>
      <attachid>171409</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-30 10:57:05 -0700</bug_when>
    <thetext>Comment on attachment 171409
Patch

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

&gt; Source/WebCore/dom/Element.cpp:779
&gt; +    if (Element* parent = parentElement()) {

This seems way too specific. Can&apos;t we just put this in StyledElement::attributeChanged or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754846</commentid>
    <comment_count>4</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-10-30 18:10:43 -0700</bug_when>
    <thetext>Ah, yeah... I&apos;ve forgot the existence of attribute selector like input[type=&quot;something&quot;}...

maybe we should check selectors when we invalidate the distribution?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755447</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-31 10:36:51 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Ah, yeah... I&apos;ve forgot the existence of attribute selector like input[type=&quot;something&quot;}...
&gt; 
&gt; maybe we should check selectors when we invalidate the distribution?

I wonder if we need to revisit when we invalidate/ensure the distribution. For style calculation purposes, all the StyledElement::attributeChanged needs to do is invalidate.

I wish we had the same type of laziness available to us.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762512</commentid>
    <comment_count>6</comment_count>
      <attachid>173192</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-08 21:05:03 -0800</bug_when>
    <thetext>Created attachment 173192
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762513</commentid>
    <comment_count>7</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-08 21:05:51 -0800</bug_when>
    <thetext>The previous WIP patch contains patches for Bug 101692 and Bug 101180.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764024</commentid>
    <comment_count>8</comment_count>
      <attachid>173551</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-11 21:35:20 -0800</bug_when>
    <thetext>Created attachment 173551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764061</commentid>
    <comment_count>9</comment_count>
      <attachid>173551</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-11 22:46:18 -0800</bug_when>
    <thetext>Comment on attachment 173551
Patch

This will conflict with Bug 101697.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764065</commentid>
    <comment_count>10</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-11 22:47:47 -0800</bug_when>
    <thetext>Oops, not Bug 101697 but Bug 101891.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764476</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-12 09:16:01 -0800</bug_when>
    <thetext>Is there any performance impact on this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765024</commentid>
    <comment_count>12</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-12 17:29:37 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Is there any performance impact on this change?

Let me measure it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765159</commentid>
    <comment_count>13</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-12 20:27:41 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Is there any performance impact on this change?
&gt; 
&gt; Let me measure it.

Surprisingly this patch makes AttributeChanged faster around 10%...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765163</commentid>
    <comment_count>14</comment_count>
      <attachid>173803</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-12 20:38:22 -0800</bug_when>
    <thetext>Created attachment 173803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765166</commentid>
    <comment_count>15</comment_count>
      <attachid>173551</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-12 20:40:11 -0800</bug_when>
    <thetext>Comment on attachment 173551
Patch

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

&gt; Source/WebCore/dom/Element.cpp:836
&gt; +struct StyleInvalidationProposition {

proposition seems like the wrong word. Can we just call it a functor?  HasSelectorForClassStyleFunctor an HasSelectorForClassDistributionFunctor :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765184</commentid>
    <comment_count>16</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-12 20:51:03 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 173551 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=173551&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:836
&gt; &gt; +struct StyleInvalidationProposition {
&gt; 
&gt; proposition seems like the wrong word. Can we just call it a functor?  HasSelectorForClassStyleFunctor an HasSelectorForClassDistributionFunctor :)

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765190</commentid>
    <comment_count>17</comment_count>
      <attachid>173807</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-12 21:01:30 -0800</bug_when>
    <thetext>Created attachment 173807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765270</commentid>
    <comment_count>18</comment_count>
      <attachid>173807</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 22:50:49 -0800</bug_when>
    <thetext>Comment on attachment 173807
Patch

Clearing flags on attachment: 173807

Committed r134367: &lt;http://trac.webkit.org/changeset/134367&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765272</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 22:50:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765772</commentid>
    <comment_count>20</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-13 10:28:36 -0800</bug_when>
    <thetext>Hard to be sure it was this patch with so many webkit revisions going into this one build, but this looks like it was a ~5% improvement on dromaeo_jslibstylejquery/jslib_style_jquery_jQuery___height___x10.

http://build.chromium.org/f/chromium/perf/mac-release-10.6-webkit-latest/dromaeo_jslibstylejquery/report.html?rev=167395&amp;graph=jslib_style_jquery_jQuery___height___x10&amp;history=150</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765790</commentid>
    <comment_count>21</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-13 10:42:50 -0800</bug_when>
    <thetext>Unfortunately, it looks like it&apos;s 5% regression on dromaeo_domcoreattr/dom_attr_setAttribute:

http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dromaeo_domcoreattr/report.html?rev=167405&amp;graph=dom_attr_setAttribute&amp;history=150

And the improvement I mention in comment 20, I&apos;m now pretty sure is actually from https://bugs.webkit.org/show_bug.cgi?id=102031.

Mind committing a fix or trying a rollout so we can be sure it was this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765795</commentid>
    <comment_count>22</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-13 10:46:20 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; Unfortunately, it looks like it&apos;s 5% regression on dromaeo_domcoreattr/dom_attr_setAttribute:
&gt; 
&gt; http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dromaeo_domcoreattr/report.html?rev=167405&amp;graph=dom_attr_setAttribute&amp;history=150
&gt; 
&gt; And the improvement I mention in comment 20, I&apos;m now pretty sure is actually from https://bugs.webkit.org/show_bug.cgi?id=102031.
&gt; 
&gt; Mind committing a fix or trying a rollout so we can be sure it was this patch?

When in doubt, roll it out :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765809</commentid>
    <comment_count>23</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-13 10:54:25 -0800</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/134443/ to speculate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766241</commentid>
    <comment_count>24</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-13 17:46:10 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; Rolled out in http://trac.webkit.org/changeset/134443/ to speculate.

Hmm...
OK. I also felt weird that this patch improves the performance.

However, we have to do something like this to make ShadowDOM implementation correct.
What should I do?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767565</commentid>
    <comment_count>25</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-14 18:25:32 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; Rolled out in http://trac.webkit.org/changeset/134443/ to speculate.
&gt; 
&gt; Hmm...
&gt; OK. I also felt weird that this patch improves the performance.
&gt; 
&gt; However, we have to do something like this to make ShadowDOM implementation correct.
&gt; What should I do?

Dimitri, do you have any ideas?
If not, I will try to consider how we improve performance, but definitely it&apos;s not an easy task...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768894</commentid>
    <comment_count>26</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-15 21:01:56 -0800</bug_when>
    <thetext>Okay, here are some high-level thoughts. The problem that I see right now is that we are too slow in this situation:
1) a chunk of JS runs, twiddling a bunch of attributes
2) repaint occurs only after JS finishes.

This is exactly the optimization that style resolution made by making style recalc lazy: they only set flags and then traverse to update these flags only when the new styles are actually necessary.

Perhaps we could switch to a similar scheme somehow?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768993</commentid>
    <comment_count>27</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-16 00:26:29 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; Okay, here are some high-level thoughts. The problem that I see right now is that we are too slow in this situation:
&gt; 1) a chunk of JS runs, twiddling a bunch of attributes
&gt; 2) repaint occurs only after JS finishes.
&gt; 

Yes.

&gt; This is exactly the optimization that style resolution made by making style recalc lazy: they only set flags and then traverse to update these flags only when the new styles are actually necessary.
&gt; 
&gt; Perhaps we could switch to a similar scheme somehow?

Actually we&apos;re doing similar things already.

I&apos;m now thinking the regression reason is because just a lot of code are scatted in attributeChanged.
Let me try to merge it to one function. It will reduce performance regression, though there will still exist a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>768995</commentid>
    <comment_count>28</comment_count>
      <attachid>174622</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-16 00:31:54 -0800</bug_when>
    <thetext>Created attachment 174622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769366</commentid>
    <comment_count>29</comment_count>
      <attachid>174622</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-16 09:39:26 -0800</bug_when>
    <thetext>Comment on attachment 174622
Patch

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

&gt; Source/WebCore/dom/Element.cpp:762
&gt; +    if (ElementShadow* parentElementShadow = shadowOfParentForDistribution(this)) {

I would guess that the 3% regression that remains is from the shadowOfParentForDistribution. Looking at that call, I would guess that the most expensive bit is the virtual call to isInsertionPoint.

I&apos;m not sure what the best fix would be, but something you could experiment with locally to see if it fixes the regression would be to add a bit to NodeFlags to track whether a Node is an insertion point. Then isInsertionPoint doesn&apos;t need to be virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770329</commentid>
    <comment_count>30</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-18 21:39:40 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 174622 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174622&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Element.cpp:762
&gt; &gt; +    if (ElementShadow* parentElementShadow = shadowOfParentForDistribution(this)) {
&gt; 
&gt; I would guess that the 3% regression that remains is from the shadowOfParentForDistribution. Looking at that call, I would guess that the most expensive bit is the virtual call to isInsertionPoint.
&gt; 
&gt; I&apos;m not sure what the best fix would be, but something you could experiment with locally to see if it fixes the regression would be to add a bit to NodeFlags to track whether a Node is an insertion point. Then isInsertionPoint doesn&apos;t need to be virtual.

I&apos;ve tried this. I could improve peformance a bit (3% regression -&gt; 2% regression).
Improving attributeChanged() more needs another optimization. I think we should do in another patch if there exists such optimization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770339</commentid>
    <comment_count>31</comment_count>
      <attachid>174888</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-18 21:49:08 -0800</bug_when>
    <thetext>Created attachment 174888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770821</commentid>
    <comment_count>32</comment_count>
      <attachid>174888</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-11-19 09:44:44 -0800</bug_when>
    <thetext>Comment on attachment 174888
Patch

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

This patch has grown! :)

&gt; Source/WebCore/ChangeLog:22
&gt; +        will be the most affected by this patch. However, it&apos;s only 2% performance regression.

I am willing to say okay to this regression, only because it&apos;s such a silly use case. There&apos;s no need for anyone to modify an attribute in a tight loop like that.

&gt; Source/WebCore/dom/Node.h:238
&gt; +    bool isInsertionPoint() const { return getFlag(IsInsertionPointFlag); }

What if instead, we stored the state of whether the node&apos;s attributes would affect distribution here? Just a thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770836</commentid>
    <comment_count>33</comment_count>
      <attachid>174888</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 10:14:44 -0800</bug_when>
    <thetext>Comment on attachment 174888
Patch

Clearing flags on attachment: 174888

Committed r135174: &lt;http://trac.webkit.org/changeset/135174&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770837</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 10:14:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771343</commentid>
    <comment_count>35</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-19 18:16:27 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; &gt; Source/WebCore/dom/Node.h:238
&gt; &gt; +    bool isInsertionPoint() const { return getFlag(IsInsertionPointFlag); }
&gt; 
&gt; What if instead, we stored the state of whether the node&apos;s attributes would affect distribution here? Just a thought.

What do you mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771424</commentid>
    <comment_count>36</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-11-19 20:05:57 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; (In reply to comment #32)
&gt; &gt; &gt; Source/WebCore/dom/Node.h:238
&gt; &gt; &gt; +    bool isInsertionPoint() const { return getFlag(IsInsertionPointFlag); }
&gt; &gt; 
&gt; &gt; What if instead, we stored the state of whether the node&apos;s attributes would affect distribution here? Just a thought.
&gt; 
&gt; What do you mean?

The point is that the flag can be more generic: It can also imply that there are some attributes which 
affects node distribution. I have no clear idea what these attributes exactly are.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772863</commentid>
    <comment_count>37</comment_count>
      <attachid>174888</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-21 06:12:03 -0800</bug_when>
    <thetext>Comment on attachment 174888
Patch

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

&gt; Source/WebCore/dom/Element.cpp:866
&gt; +struct HasSelectorForClassStyleFunctor {
&gt; +    explicit HasSelectorForClassStyleFunctor(StyleResolver* resolver)
&gt; +        : styleResolver(resolver)
&gt; +    { }
&gt; +
&gt; +    bool operator()(const AtomicString&amp; className) const
&gt; +    {
&gt; +        return styleResolver-&gt;hasSelectorForClass(className);
&gt; +    }
&gt; +
&gt; +    StyleResolver* styleResolver;
&gt; +};
&gt; +
&gt; +struct HasSelectorForClassDistributionFunctor {
&gt; +    explicit HasSelectorForClassDistributionFunctor(ElementShadow* elementShadow)
&gt; +        : elementShadow(elementShadow)
&gt; +    { }
&gt; +
&gt; +    bool operator()(const AtomicString&amp; className) const
&gt; +    {
&gt; +        return elementShadow-&gt;selectRuleFeatureSet().hasSelectorForClass(className);
&gt; +    }
&gt; +
&gt; +    ElementShadow* elementShadow;
&gt; +};
&gt; +
&gt; +template&lt;typename Functor&gt;
&gt; +static bool checkFunctorForClassChange(const SpaceSplitString&amp; changedClasses, Functor functor)
&gt;  {
&gt;      unsigned changedSize = changedClasses.size();
&gt;      for (unsigned i = 0; i &lt; changedSize; ++i) {
&gt; -        if (styleResolver-&gt;hasSelectorForClass(changedClasses[i]))
&gt; +        if (functor(changedClasses[i]))
&gt;              return true;
&gt;      }
&gt;      return false;
&gt;  }

This is ridiculously verbose.

&gt; Source/WebCore/dom/Element.cpp:916
&gt; +static inline bool checkNeedsStyleInvalidationForClassChange(const SpaceSplitString&amp; changedClasses, StyleResolver* styleResolver)
&gt; +{
&gt; +    return checkFunctorForClassChange(changedClasses, HasSelectorForClassStyleFunctor(styleResolver));
&gt; +}
&gt; +
&gt; +static inline bool checkNeedsStyleInvalidationForClassChange(const SpaceSplitString&amp; oldClasses, const SpaceSplitString&amp; newClasses, StyleResolver* styleResolver)
&gt; +{
&gt; +    return checkFunctorForClassChange(oldClasses, newClasses, HasSelectorForClassStyleFunctor(styleResolver));
&gt; +}
&gt; +
&gt; +static inline bool checkNeedsDistributionInvalidationForClassChange(const SpaceSplitString&amp; changedClasses, ElementShadow* elementShadow)
&gt; +{
&gt; +    return checkFunctorForClassChange(changedClasses, HasSelectorForClassDistributionFunctor(elementShadow));
&gt; +}
&gt; +
&gt; +static inline bool checkNeedsDistributionInvalidationForClassChange(const SpaceSplitString&amp; oldClasses, const SpaceSplitString&amp; newClasses, ElementShadow* elementShadow)
&gt; +{
&gt; +    return checkFunctorForClassChange(oldClasses, newClasses, HasSelectorForClassDistributionFunctor(elementShadow));
&gt; +}

Our core code is turning into overly abstract mush. I don&apos;t think functor pattern should be used at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777433</commentid>
    <comment_count>38</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-11-27 18:04:45 -0800</bug_when>
    <thetext>Antti,

Sorry for late response. I&apos;ll try to make it simple.
https://bugs.webkit.org/show_bug.cgi?id=103474</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171409</attachid>
            <date>2012-10-30 03:44:47 -0700</date>
            <delta_ts>2012-11-08 21:04:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100738-20121030194312.patch</filename>
            <type>text/plain</type>
            <size>5569</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzU4MjhhYzgwMDVlMTli
MzQ4N2FlYmQxMzgwOWFlMjVhODc3ZGQ0Ny4uYWQ5M2EwNTdkODFlNTZmMTgxNDg2NWQxYWE0YTI1
YzEyNDFkYjgyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTEwLTMwICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbU2hhZG93IERP
TV0gQ2hhbmdpbmcgY2xhc3NOYW1lIHNob3VsZCBjYXVzZSBkaXN0cmlidXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDczOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gY2xhc3NOYW1lIGlz
IGNoYW5nZWQsIHNoYWRvdyBkaXN0cmlidXRpb24gZG9lcyBub3Qgb2NjdXIuIFdlIGhhdmUgdG8g
aW52YWxpZGF0ZSB0aGUgZGlzdHJpYnV0aW9uCisgICAgICAgIHdoZW4gdGhlIGNsYXNzTmFtZSBp
cyBjaGFuZ2VkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWNsYXNzTmFtZS1tb2RpZmllZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cv
cmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sCisKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5n
ZWQpOgorCiAyMDEyLTEwLTI5ICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgog
CiAgICAgICAgIE5TTG9jYWxlIGxlYWtzIGluIExvY2FsZU1hYwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CmluZGV4IDg5OWMzMzQ3YTcwNDViMDU3MDQ0OGY2NzA4NDM1MmViZjc5MmNhN2QuLjUxYjk5ZWQ4
MTBjM2EyMjdlZmI1ZmUyMmQ4OTA2ZjgxZGM4YjYyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
QEAgLTc3Niw2ICs3NzYsMTEgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKICAgICBpZiAoRE9NVG9rZW5MaXN0
KiBjbGFzc0xpc3QgPSBvcHRpb25hbENsYXNzTGlzdCgpKQogICAgICAgICBzdGF0aWNfY2FzdDxD
bGFzc0xpc3QqPihjbGFzc0xpc3QpLT5yZXNldChuZXdDbGFzc1N0cmluZyk7CiAKKyAgICBpZiAo
RWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudCgpKSB7CisgICAgICAgIGlmIChwYXJlbnQt
PnNoYWRvdygpKQorICAgICAgICAgICAgcGFyZW50LT5zaGFkb3coKS0+aW52YWxpZGF0ZURpc3Ry
aWJ1dGlvbigpOworICAgIH0KKwogICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDRkZDhiNGJiMmVkMWQyY2IyN2QxMmY4NjQ1NGJjOWY0OGFiNDI3M2MuLmI2ZDQxZDg0YzJh
N2JmODMzNWUwMTg0Y2M0NTNiMWEwMTRlYjkwODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMC0zMCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgW1NoYWRvdyBET01dIENoYW5naW5nIGNsYXNzTmFtZSBzaG91bGQgY2F1c2UgZGlzdHJpYnV0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3
MzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NO
YW1lLW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTEwLTI1ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgZmVJbWFnZSBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gc2VsZiBy
ZWZlcmVuY2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjMwMDQ4NmRiMjY0ZDQ4OWIxNmE1OWVjMTQ4YmFjOGMyOGMyNzNkYzgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2
PkE8L2Rpdj4KKyAgICA8ZGl2PkQ8L2Rpdj4KKyAgICA8ZGl2PkY8L2Rpdj4KKzwvZGl2PgorCis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmli
dXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ4N2I5
YjU2Y2NhYzgwYTNmZTMyNDA2NjZkNmM5MDZjYzllNTQzNGIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmll
ZC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5
PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRp
diBpZD0iaG9zdCI+CisgICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQiPkE8L2Rpdj4KKyAgICA8ZGl2
PkI8L2Rpdj4KKyAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZCI+RDwv
ZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rpdj4KKzwvZGl2Pgor
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3Qp
Oworc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIuc2VsZWN0ZWQiPjwv
Y29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEYuY2xhc3NOYW1lID0g
J3NlbGVjdGVkJzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9k
aWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2pl
Y3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjFhY2Uw
MzYyMWU5OGIwNzc5ZWNiMjE4OTdmYTlmOGUwMzEyZGRhYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVk
LWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1s
PgorPGJvZHk+CisKKzxkaXYgaWQ9Imhvc3QiPjxkaXY+CisgICAgPGRpdj5BPC9kaXY+CisgICAg
PGRpdj5EPC9kaXY+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rpdj48L2Rpdj4KKworPC9odG1sPgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNs
YXNzTmFtZS1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJv
amVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWNhMTcyZmE0ZjNh
N2RlYzc5YWIxYWQ0NzBkNjRiNjYzODkzNzExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbApA
QCAtMCwwICsxLDM1IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPHNj
cmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhv
c3QxIj4KKyAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZCI+QTwvZGl2PgorICAgIDxkaXY+QjwvZGl2
PgorICAgIDxkaXY+QzwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkIj5EPC9kaXY+Cisg
ICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+RjwvZGl2PgorPC9kaXY+CisKKzxzY3Jp
cHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3No
YWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+PHNoYWRvdz48L3NoYWRvdz48
L2Rpdj4nOworCit2YXIgaG9zdDIgPSBzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnaG9zdDIn
KTsKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QyKTsKK3NoYWRv
d1Jvb3QyLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9Ii5zZWxlY3RlZCI+PC9jb250ZW50
Pic7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgRi5jbGFzc05hbWUgPSAnc2VsZWN0
ZWQnOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173192</attachid>
            <date>2012-11-08 21:05:03 -0800</date>
            <delta_ts>2012-11-11 21:35:16 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-100738-20121109140311.patch</filename>
            <type>text/plain</type>
            <size>55938</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzOTk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTI4OWY5ZTM0OGRjZTgx
OTkxYWRhYjZkOTY0ZDVhZjc2ZTA0Y2U0Ni4uMmE0NmY1OWFiODZkODNlNzcyYTNlZDI0YjFhNWJj
Yzc1ZTkzMDFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMiBAQAorMjAxMi0xMS0wOCAgU2hp
bnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdpbmcg
aWQsIGNsYXNzTmFtZSwgb3IgYXR0cmlidXRlIHNob3VsZCBpbnZhbGlkYXRlIGRpc3RyaWJ1dGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzMw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBp
ZCwgY2xhc3NOYW1lLCBvciBhdHRyaWJ1dGUgaXMgY2hhbmdlZCwgd2UgbWlnaHQgaGF2ZSB0byBp
bnZhbGlkYXRlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgSG93ZXZlciwgd2UgZG9uJ3Qgd2FudCB0
byBkbyB1c2VsZXNzIGludmFsaWRhdGlvbi4gU28gd2UgY29uc3VsdCB3aXRoIHRoZSBSdWxlRmVh
dHVyZVNldCBvZiBFbGVtZW50U2hhZG93LAorICAgICAgICBhbmQgaW52YWxpZGF0ZSBkaXN0cmli
dXRpb24gb25seSBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgV2hlbiBjbGFzc05hbWUgaXMgY2hh
bmdlZCwgd2UgY2FuIHNoYXJlIGEgbG90IG9mIGNvZGUgYmV0d2VlbiBpbnZhbGlkYXRpbmcgZGlz
dHJpYnV0aW9uIGFuZCBpbnZhbGlkYXRpbmcgc3R5bGUuCisgICAgICAgIFNvIHdlIG1hZGUgY2hl
Y2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UgYSB0ZW1wbGF0ZSBtZXRob2Qs
IGFuZCBzaGFyZSBpdC4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1t
b2RpZmllZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9u
LWlkLW1vZGlmaWVkLmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbjo6U3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlv
bik6CisgICAgICAgIChTdHlsZUludmFsaWRhdGlvblByb3Bvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlSW52YWxpZGF0aW9uUHJvcG9zaXRpb246Om9wZXJhdG9yKCkpOiBBIHByb3Bv
c2l0aW9uIHdoaWNoIHJldHVybnMgdHJ1ZSBpZgorICAgICAgICBTdHlsZVJlc29sdmVyOjpoYXNT
ZWxlY3RvckZvckNsYXNzIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uUHJvcG9zaXRpb246OkRpc3RyaWJ1
dGlvbkludmFsaWRhdGlvblByb3Bvc2l0aW9uKTogQSBwcm9wb3NpdGlvbiB3aGljaAorICAgICAg
ICByZXR1cm5zIHRydWUgaWYgRWxlbWVudFNoYWRvdzo6aGFzU2VsZWN0b3JGb3JDbGFzcyByZXR1
cm5zIHRydWUuCisgICAgICAgIChEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Qcm9wb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Qcm9wb3NpdGlvbjo6
b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3ND
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9y
Q2xhc3NDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOZWVkc0Rpc3RyaWJ1dGlvbklu
dmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNs
YXNzQXR0cmlidXRlQ2hhbmdlZCk6CisKKzIwMTItMTEtMDggIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3ddIEVsZW1lbnRTaGFkb3cgc2hv
dWxkIGhhdmUgUnVsZUZlYXR1cmVTZXQgZm9yIHNlbGVjdCBhdHRyaWJ1dGUgc2VsZWN0b3JzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMTgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBh
IHByZXBhcmF0aW9uIHBhdGNoIGZvciBCdWcgMTAwNDUxLgorCisgICAgICAgIFdlIHByZXNlcnZl
IFJ1bGVGZWF0dXJlU2V0IGNvbGxlY3RlZCBmcm9tIHNlbGVjdCBhdHRyaWJ1dGVzIGluIFNoYWRv
d0RPTS4KKyAgICAgICAgV2hlbiBhbiBlbGVtZW50IGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLCB3ZSBt
aWdodCBoYXZlIHRvIGludmFsaWRhdGUgY29udGVudCBkaXN0cmlidXRpb24sCisgICAgICAgIGhv
d2V2ZXIgaXQncyBoaWdoIGNvc3Qgb3BlcmF0aW9uLiBTbyB3ZSB3b3VsZCBsaWtlIHRvIGNoZWNr
IFJ1bGVGZWF0dXJlU2V0IHVzZWQgaW4KKyAgICAgICAgc2VsZWN0IGF0dHJpYnV0ZXMgdG8gZGV0
ZXJtaW5lIHdlIHJlYWxseSBuZWVkIHRvIGludmFsaWRhdGUgZGlzdHJpYnV0aW9uLgorCisgICAg
ICAgIExpa2UgU3R5bGVSZXNvbHZlciwgRWxlbWVudFNoYWRvdyBoYXMgc2V2ZXJhbCBydWxlIGZl
YXR1cmVzLiBXaGVuIG5lc3RlZCBTaGFkb3dET00gaXMgdXNlZCwKKyAgICAgICAgZmlyc3Qgd2Ug
Y29sbGVjdCBmZWF0dXJlcyBpbiBuZXN0ZWQgU2hhZG93RE9NLCBhbmQgbWVyZ2UgaXQgdG8gdGhl
IHBhcmVudCBTaGFkb3dET00uCisgICAgICAgIEZvciB0aGUgcGVyZm9ybWFuY2UgcmVhc29uLCB3
ZSBoYXZlIGEgZmxhZyB0byBjaGVjayB3aGV0aGVyIHdlIG5lZWQgdG8gY29sbGVjdCBmZWF0dXJl
cyBhZ2Fpbi4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LXNlbGVjdC1h
dHRyaWJ1dGUtZmVhdHVyZXNldC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAg
ICAgICAgKiBkb20vRWxlbWVudFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
U2hhZG93OjpFbGVtZW50U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6
OnNldFNob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KTogRW5hYmxlIGEgZmxhZyB0byBjb2xs
ZWN0IGZlYXR1cmUgc2V0IG9mIGRlc2NlbmRhbnQKKyAgICAgICAgbm9kZXMgKGFuZCB0aGVpciBT
aGFkb3dET00pLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
U2hhZG93OjplbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnRTaGFkb3c6OmNvbGxlY3RTZWxlY3RGZWF0dXJlU2V0RnJvbSk6IENvbGxlY3Qg
UnVsZUZlYXR1cmVTZXQgZnJvbSBhbGwgZGVzY2VuZGFudCBOb2RlcyBhbmQgdGhlaXIKKyAgICAg
ICAgU2hhZG93RE9NLiBXZSBuZWVkIHRvIGNvbGxlY3QgaWQsIGNsYXNzLCBhbmQgYXR0cmlidXRl
IG5hbWVzLgorICAgICAgICAqIGRvbS9FbGVtZW50U2hhZG93Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50U2hhZG93OjpzaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCk6CisgICAgICAg
IChFbGVtZW50U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRTaGFkb3c6Omhhc1Nl
bGVjdG9yRm9ySWQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVt
ZW50U2hhZG93OjpoYXNTZWxlY3RvckZvckNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRTaGFkb3c6Omhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9IVE1MQ29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnRlbnRF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6IFdoZW4gc2VsZWN0IGF0dHJpYnV0ZSBpcyBjaGFuZ2Vk
LCBlbmFibGUgYSBmbGFnIHRvIHJlY29sbGVjdCBmZWF0dXJlcy4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxDb250ZW50RWxlbWVudDo6aW5zZXJ0ZWRJbnRvKTogV2UgaGF2ZSB0byByZWNvbGxlY3Qg
ZmVhdHVyZXMgd2hlbiBIVE1MQ29udGVudEVsZW1lbnQgaXMgbW92ZWQuCisgICAgICAgIChXZWJD
b3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OnJlbW92ZWRGcm9tKTogZGl0dG8uCisgICAgICAgICog
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b0hU
TUxDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc1NlbGVjdG9y
Rm9ySWRJblNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyk6CisgICAgICAgICog
dGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKEludGVybmFscyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaWRsOgorCisyMDEyLTExLTA4ICBTaGlueWEgS2F3YW5ha2EgIDxzaGlu
eWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBbUmVmYWN0b3JpbmddIEV4cG9zZSBjb2xsZWN0
RmVhdHVyZXNGcm9tU2VsZWN0b3IgZnJvbSBSdWxlU2V0LmNwcAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgZXhwb3NlIGNvbGxlY3RGZWF0dXJlc0Zy
b21TZWxlY3RvciBpbiBSdWxlU2V0LmNwcCB0byB1c2UgaXQgZm9yIGNvbGxlY3RpbmcgU2hhZG93
RE9NIHNlbGVjdCBhdHRyaWJ1dGUgZmVhdHVyZXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBz
aW1wbGUgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBjc3MvUnVsZUZlYXR1cmUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0dXJlc0Zyb21TZWxlY3Rv
cik6IE1vdmVkIGZyb20gUnVsZVNldC5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBjc3MvUnVsZUZlYXR1cmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUnVsZUZl
YXR1cmVTZXQpOgorICAgICAgICAqIGNzcy9SdWxlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxlY3RGZWF0dXJlc0Zyb21SdWxlRGF0YSk6CisKIDIwMTItMTEtMDggIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZWQgLi4uSW5saW5lTWV0aG9kcy5o
IGZpbGVzIHRvIC4uLklubGluZXMuaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0ZjgzODg3N2ExYmQxZDdjMGFi
M2Q0MmVkMDBiZjE1ZTJkMGEyYmM0Li5iZWNmYTI4Mjg2OTViOTc0NmZiNzU2NjJiMTNiMTA4MTI3
NDQ4YWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTEtMDggIFNoaW55YSBL
YXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtTaGFkb3ddIEVsZW1l
bnRTaGFkb3cgc2hvdWxkIGhhdmUgUnVsZUZlYXR1cmVTZXQgZm9yIHNlbGVjdCBhdHRyaWJ1dGUg
c2VsZWN0b3JzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAxMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisgICAgICAgICogd2luL1dlYktpdDJDRkxpdGUuZGVmOgor
CiAyMDEyLTExLTA4ICBLeXVuZ1RhZSBLaW0gIDxrdGYua2ltQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtXSzJdIFVudXNlZCBwYXJhbWV0ZXJzIG9uIExheWVyVHJlZVJlbmRlcmVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCBhNWYyMzY3YWIxMmU1NTRkNDhmOGFjMTQ1NTJhZGEwY2U2M2Zh
MWNhLi42MGRhNDg3Zjk3MzVjMWE2MzM2MzMxZTgwNDYxZjljNjA2ZjdiOGFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtMjE1LDYgKzIxNSw3IEBAIF9fWk43V2ViQ29yZTEzQVhPYmplY3RDYWNo
ZTQyZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VFbmFibGVkRQogX19aTjdXZWJD
b3JlMTNDaGFyYWN0ZXJEYXRhN3NldERhdGFFUktOM1dURjZTdHJpbmdFUmkKIF9fWk43V2ViQ29y
ZTEzQ29udGFpbmVyTm9kZTExYXBwZW5kQ2hpbGRFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVF
RUVSaWIKIF9fWk43V2ViQ29yZTEzQ29udGFpbmVyTm9kZTExcmVtb3ZlQ2hpbGRFUE5TXzROb2Rl
RVJpCitfX1pON1dlYkNvcmUxM0VsZW1lbnRTaGFkb3czMWVuc3VyZVNlbGVjdEZlYXR1cmVTZXRD
b2xsZWN0ZWRFdgogX19aTjdXZWJDb3JlMTNIVFRQSGVhZGVyTWFwQzFFdgogX19aTjdXZWJDb3Jl
MTNIVFRQSGVhZGVyTWFwRDFFdgogX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuY3BwCmluZGV4IGIxZjkyOTY4NzkyN2ZkNzcwOWZmMDIy
ZjU1ZDBlYjNkOTdjMmQ3ZGMuLjFiMTFjOGZhZWQ0Mzg0MWI4N2MxZjYxOTYyNDBhNWIyM2U3NDRh
OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlRmVhdHVyZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCiAKKyNpbmNsdWRlICJD
U1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoU2V0Lmg+CkBAIC0zNiw2ICszNywyNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3ZvaWQgUnVsZUZlYXR1cmVTZXQ6OmNvbGxlY3RGZWF0
dXJlc0Zyb21TZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCit7CisgICAgaWYg
KHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkKKyAgICAgICAgaWRzSW5SdWxl
cy5hZGQoc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKKyAgICBlbHNlIGlmIChzZWxlY3Rvci0+
bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpCisgICAgICAgIGNsYXNzZXNJblJ1bGVzLmFk
ZChzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOworICAgIGVsc2UgaWYgKHNlbGVjdG9yLT5pc0F0
dHJpYnV0ZVNlbGVjdG9yKCkpCisgICAgICAgIGF0dHJzSW5SdWxlcy5hZGQoc2VsZWN0b3ItPmF0
dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmltcGwoKSk7CisgICAgc3dpdGNoIChzZWxlY3Rvci0+cHNl
dWRvVHlwZSgpKSB7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RMaW5lOgorICAg
ICAgICB1c2VzRmlyc3RMaW5lUnVsZXMgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9CZWZvcmU6CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
QWZ0ZXI6CisgICAgICAgIHVzZXNCZWZvcmVBZnRlclJ1bGVzID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB2b2lkIFJ1bGVG
ZWF0dXJlU2V0OjphZGQoY29uc3QgUnVsZUZlYXR1cmVTZXQmIG90aGVyKQogewogICAgIEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBvdGhlci5pZHNJblJ1
bGVzLmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVGZWF0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAppbmRleCBjZTZkMDRlNjY0ZTQyZjRm
YWJmYmYyNWYzOGRkYjJiNGUyYmJhM2I3Li4wZmZjNmU1ZWUyMTcyYTY3YjdlN2VkOWMwOWYxMTJm
YWNlNzgxNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZUZlYXR1cmUuaApAQCAtMzAsNiArMzAsNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTdHlsZVJ1bGU7CitjbGFzcyBDU1NTZWxlY3Rv
cjsKIAogc3RydWN0IFJ1bGVGZWF0dXJlIHsKICAgICBSdWxlRmVhdHVyZShTdHlsZVJ1bGUqIHJ1
bGUsIHVuc2lnbmVkIHNlbGVjdG9ySW5kZXgsIGJvb2wgaGFzRG9jdW1lbnRTZWN1cml0eU9yaWdp
bikKQEAgLTUxLDcgKzUyLDExIEBAIHN0cnVjdCBSdWxlRmVhdHVyZVNldCB7CiAKICAgICB2b2lk
IGFkZChjb25zdCBSdWxlRmVhdHVyZVNldCYpOwogICAgIHZvaWQgY2xlYXIoKTsKKworICAgIHZv
aWQgY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKik7CisKICAg
ICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAg
IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+IGlkc0luUnVsZXM7CiAgICAgSGFzaFNldDxBdG9t
aWNTdHJpbmdJbXBsKj4gY2xhc3Nlc0luUnVsZXM7CiAgICAgSGFzaFNldDxBdG9taWNTdHJpbmdJ
bXBsKj4gYXR0cnNJblJ1bGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVT
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1J1bGVTZXQuY3BwCmluZGV4IGU5MmQxNzY4YjI5
OGQ3YWU4OTZjMDdiZTI4ODdhYTc0MWM1YTZkMzguLmE1MzY3ZWU4MmRiZDU5MzFlOTRiNjg0OWQ0
M2U3YjFlZmQ5YzkxODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9SdWxlU2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUnVsZVNldC5jcHAKQEAgLTE1NywzOCArMTU3LDE3
IEBAIHZvaWQgUnVsZVNldDo6UnVsZVNldFNlbGVjdG9yUGFpcjo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqCiAgICAgaW5mby5hZGRNZW1iZXIocnVsZVNldCk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoUnVs
ZUZlYXR1cmVTZXQmIGZlYXR1cmVzLCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IpCi17Ci0g
ICAgaWYgKHNlbGVjdG9yLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpJZCkKLSAgICAgICAgZmVh
dHVyZXMuaWRzSW5SdWxlcy5hZGQoc2VsZWN0b3ItPnZhbHVlKCkuaW1wbCgpKTsKLSAgICBlbHNl
IGlmIChzZWxlY3Rvci0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpCi0gICAgICAgIGZl
YXR1cmVzLmNsYXNzZXNJblJ1bGVzLmFkZChzZWxlY3Rvci0+dmFsdWUoKS5pbXBsKCkpOwotICAg
IGVsc2UgaWYgKHNlbGVjdG9yLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpCi0gICAgICAgIGZlYXR1
cmVzLmF0dHJzSW5SdWxlcy5hZGQoc2VsZWN0b3ItPmF0dHJpYnV0ZSgpLmxvY2FsTmFtZSgpLmlt
cGwoKSk7Ci0gICAgc3dpdGNoIChzZWxlY3Rvci0+cHNldWRvVHlwZSgpKSB7Ci0gICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RMaW5lOgotICAgICAgICBmZWF0dXJlcy51c2VzRmlyc3RM
aW5lUnVsZXMgPSB0cnVlOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9CZWZvcmU6Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQWZ0ZXI6Ci0gICAgICAg
IGZlYXR1cmVzLnVzZXNCZWZvcmVBZnRlclJ1bGVzID0gdHJ1ZTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotfQotCiBzdGF0aWMgdm9pZCBjb2xs
ZWN0RmVhdHVyZXNGcm9tUnVsZURhdGEoUnVsZUZlYXR1cmVTZXQmIGZlYXR1cmVzLCBjb25zdCBS
dWxlRGF0YSYgcnVsZURhdGEpCiB7CiAgICAgYm9vbCBmb3VuZFNpYmxpbmdTZWxlY3RvciA9IGZh
bHNlOwogICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gcnVsZURhdGEuc2VsZWN0b3Io
KTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewotICAgICAg
ICBjb2xsZWN0RmVhdHVyZXNGcm9tU2VsZWN0b3IoZmVhdHVyZXMsIHNlbGVjdG9yKTsKKyAgICAg
ICAgZmVhdHVyZXMuY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKHNlbGVjdG9yKTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChDU1NTZWxlY3Rvckxpc3QqIHNlbGVjdG9yTGlzdCA9IHNlbGVjdG9y
LT5zZWxlY3Rvckxpc3QoKSkgewogICAgICAgICAgICAgZm9yIChDU1NTZWxlY3Rvciogc3ViU2Vs
ZWN0b3IgPSBzZWxlY3Rvckxpc3QtPmZpcnN0KCk7IHN1YlNlbGVjdG9yOyBzdWJTZWxlY3RvciA9
IENTU1NlbGVjdG9yTGlzdDo6bmV4dChzdWJTZWxlY3RvcikpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIWZvdW5kU2libGluZ1NlbGVjdG9yICYmIHNlbGVjdG9yLT5pc1NpYmxpbmdTZWxlY3Rvcigp
KQogICAgICAgICAgICAgICAgICAgICBmb3VuZFNpYmxpbmdTZWxlY3RvciA9IHRydWU7Ci0gICAg
ICAgICAgICAgICAgY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVjdG9yKGZlYXR1cmVzLCBzdWJTZWxl
Y3Rvcik7CisgICAgICAgICAgICAgICAgZmVhdHVyZXMuY29sbGVjdEZlYXR1cmVzRnJvbVNlbGVj
dG9yKHN1YlNlbGVjdG9yKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICghZm91
bmRTaWJsaW5nU2VsZWN0b3IgJiYgc2VsZWN0b3ItPmlzU2libGluZ1NlbGVjdG9yKCkpCiAgICAg
ICAgICAgICBmb3VuZFNpYmxpbmdTZWxlY3RvciA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
aW5kZXggOGMxMTJkZmE1ZWM0MGFjY2VhYzI1ODgyMGJjMDJiYTQ2OTgyYjEzZS4uYmY3YTVkM2Ux
YzU2OTE2ODA0NTQyYTJiZjFiMGU2NjlmOTJiMDkyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApA
QCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVj
dGlvbi5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3Jv
dXAuaCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgpAQCAtNzY0LDggKzc2NSwxMyBAQCB2
b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuZQogICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9u
KCk7CiAKICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9jdW1lbnQoKS0+c3R5
bGVSZXNvbHZlcklmRXhpc3RzKCk7CisgICAgRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9
IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpOworICAgIGlmIChlbGVtZW50U2hh
ZG93KQorICAgICAgICBlbGVtZW50U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVj
dGVkKCk7CisKICAgICBib29sIHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBhdHRhY2hlZCgp
ICYmIHN0eWxlUmVzb2x2ZXIgJiYgc3R5bGVDaGFuZ2VUeXBlKCkgPCBGdWxsU3R5bGVDaGFuZ2U7
CiAgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBmYWxzZTsKKyAgICBib29sIHNob3Vs
ZEludmFsaWRhdGVEaXN0cmlidXRpb24gPSBmYWxzZTsKIAogICAgIGlmIChpc0lkQXR0cmlidXRl
TmFtZShuYW1lKSkgewogICAgICAgICBBdG9taWNTdHJpbmcgb2xkSWQgPSBhdHRyaWJ1dGVEYXRh
KCktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CkBAIC03NzMsNiArNzc5LDggQEAgdm9pZCBFbGVt
ZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmUKICAgICAgICAgaWYgKG5ld0lkICE9IG9sZElkKSB7CiAgICAgICAgICAg
ICBhdHRyaWJ1dGVEYXRhKCktPnNldElkRm9yU3R5bGVSZXNvbHV0aW9uKG5ld0lkKTsKICAgICAg
ICAgICAgIHNob3VsZEludmFsaWRhdGVTdHlsZSA9IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUg
JiYgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9ySWRDaGFuZ2Uob2xkSWQsIG5ld0lkLCBz
dHlsZVJlc29sdmVyKTsKKyAgICAgICAgICAgIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24g
fD0gZWxlbWVudFNoYWRvdyAmJiAhb2xkSWQuaXNFbXB0eSgpICYmIGVsZW1lbnRTaGFkb3ctPmhh
c1NlbGVjdG9yRm9ySWQob2xkSWQpOworICAgICAgICAgICAgc2hvdWxkSW52YWxpZGF0ZURpc3Ry
aWJ1dGlvbiB8PSBlbGVtZW50U2hhZG93ICYmICFuZXdJZC5pc0VtcHR5KCkgJiYgZWxlbWVudFNo
YWRvdy0+aGFzU2VsZWN0b3JGb3JJZChuZXdJZCk7ICAKICAgICAgICAgfQogICAgIH0gZWxzZSBp
ZiAobmFtZSA9PSBIVE1MTmFtZXM6Om5hbWVBdHRyKQogICAgICAgICBzZXRIYXNOYW1lKCFuZXdW
YWx1ZS5pc051bGwoKSk7CkBAIC03ODAsMTIgKzc4OCwxNSBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuZQogICAgICAgICBzaG91bGRJbnZhbGlkYXRlU3R5bGUgfD0gdGVzdFNob3VsZEludmFsaWRh
dGVTdHlsZSAmJiBpc0luU2hhZG93VHJlZSgpOwogCiAgICAgc2hvdWxkSW52YWxpZGF0ZVN0eWxl
IHw9IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgJiYgc3R5bGVSZXNvbHZlci0+aGFzU2VsZWN0
b3JGb3JBdHRyaWJ1dGUobmFtZS5sb2NhbE5hbWUoKSk7CisgICAgc2hvdWxkSW52YWxpZGF0ZURp
c3RyaWJ1dGlvbiB8PSBlbGVtZW50U2hhZG93ICYmIGVsZW1lbnRTaGFkb3ctPmhhc1NlbGVjdG9y
Rm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOwogCiAgICAgaW52YWxpZGF0ZU5vZGVMaXN0
Q2FjaGVzSW5BbmNlc3RvcnMoJm5hbWUsIHRoaXMpOwogCiAgICAgaWYgKHNob3VsZEludmFsaWRh
dGVTdHlsZSkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotCisgICAgaWYgKHNob3Vs
ZEludmFsaWRhdGVEaXN0cmlidXRpb24pCisgICAgICAgIGVsZW1lbnRTaGFkb3ctPmludmFsaWRh
dGVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vz
c2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChuYW1lLCB0aGlzKTsKIH0KQEAgLTgyMywyMSArODM0LDQ5
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogICAgIHJldHVybiBjbGFzc1N0cmluZ0hhc0NsYXNz
TmFtZShuZXdDbGFzc1N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKIH0KIAotc3RhdGlj
IGJvb2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3Bh
Y2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2
ZXIpCitzdHJ1Y3QgU3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbiB7CisgICAgZXhwbGljaXQg
U3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbihTdHlsZVJlc29sdmVyKiByZXNvbHZlcikKKyAg
ICAgICAgOiBzdHlsZVJlc29sdmVyKHJlc29sdmVyKQorICAgIHsgfQorCisgICAgYm9vbCBvcGVy
YXRvcigpKGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsK
KyAgICB9CisKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyOworfTsKKworc3RydWN0
IERpc3RyaWJ1dGlvbkludmFsaWRhdGlvblByb3Bvc2l0aW9uIHsKKyAgICBleHBsaWNpdCBEaXN0
cmlidXRpb25JbnZhbGlkYXRpb25Qcm9wb3NpdGlvbihFbGVtZW50U2hhZG93KiBlbGVtZW50U2hh
ZG93KQorICAgICAgICA6IGVsZW1lbnRTaGFkb3coZWxlbWVudFNoYWRvdykKKyAgICB7IH0KKwor
ICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBlbGVtZW50U2hhZG93LT5oYXNTZWxlY3RvckZvckNsYXNz
KGNsYXNzTmFtZSk7CisgICAgfQorCisgICAgRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdzsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFByb3Bvc2l0aW9uPgorc3RhdGljIGJvb2wgY2hlY2tQ
cm9wb3NpdGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNoYW5nZWRD
bGFzc2VzLCBQcm9wb3NpdGlvbiBwcm9wb3NpdGlvbikKIHsKICAgICB1bnNpZ25lZCBjaGFuZ2Vk
U2l6ZSA9IGNoYW5nZWRDbGFzc2VzLnNpemUoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY2hhbmdlZFNpemU7ICsraSkgewotICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci0+aGFzU2Vs
ZWN0b3JGb3JDbGFzcyhjaGFuZ2VkQ2xhc3Nlc1tpXSkpCisgICAgICAgIGlmIChwcm9wb3NpdGlv
bihjaGFuZ2VkQ2xhc3Nlc1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlk
YXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzLCBj
b25zdCBTcGFjZVNwbGl0U3RyaW5nJiBuZXdDbGFzc2VzLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyKQordGVtcGxhdGU8dHlwZW5hbWUgUHJvcG9zaXRpb24+CitzdGF0aWMgYm9vbCBjaGVj
a1Byb3Bvc2l0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xh
c3NlcywgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3NlcywgUHJvcG9zaXRpb24gcHJv
cG9zaXRpb24pCiB7CiAgICAgdW5zaWduZWQgb2xkU2l6ZSA9IG9sZENsYXNzZXMuc2l6ZSgpOwog
ICAgIGlmICghb2xkU2l6ZSkKLSAgICAgICAgcmV0dXJuIGNoZWNrTmVlZHNTdHlsZUludmFsaWRh
dGlvbkZvckNsYXNzQ2hhbmdlKG5ld0NsYXNzZXMsIHN0eWxlUmVzb2x2ZXIpOworICAgICAgICBy
ZXR1cm4gY2hlY2tQcm9wb3NpdGlvbkZvckNsYXNzQ2hhbmdlKG5ld0NsYXNzZXMsIHByb3Bvc2l0
aW9uKTsKICAgICBCaXRWZWN0b3IgcmVtYWluaW5nQ2xhc3NCaXRzOwogICAgIHJlbWFpbmluZ0Ns
YXNzQml0cy5lbnN1cmVTaXplKG9sZFNpemUpOwogICAgIC8vIENsYXNzIHZlY3RvcnMgdGVuZCB0
byBiZSB2ZXJ5IHNob3J0LiBUaGlzIGlzIGZhc3RlciB0aGFuIHVzaW5nIGEgaGFzaCB0YWJsZS4K
QEAgLTg0OSwyNSArODg4LDUwIEBAIHN0YXRpYyBib29sIGNoZWNrTmVlZHNTdHlsZUludmFsaWRh
dGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHN0
eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xhc3MobmV3Q2xhc3Nlc1tpXSkpCisgICAgICAg
IGlmIChwcm9wb3NpdGlvbihuZXdDbGFzc2VzW2ldKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2xkU2l6ZTsgKytpKSB7CiAg
ICAgICAgIC8vIElmIHRoZSBiaXQgaXMgbm90IHNldCB0aGUgdGhlIGNvcnJlc3BvbmRpbmcgY2xh
c3MgaGFzIGJlZW4gcmVtb3ZlZC4KICAgICAgICAgaWYgKHJlbWFpbmluZ0NsYXNzQml0cy5xdWlj
a0dldChpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAoc3R5bGVSZXNvbHZl
ci0+aGFzU2VsZWN0b3JGb3JDbGFzcyhvbGRDbGFzc2VzW2ldKSkKKyAgICAgICAgaWYgKHByb3Bv
c2l0aW9uKG9sZENsYXNzZXNbaV0pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGNoZWNrTmVlZHNTdHls
ZUludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNoYW5n
ZWRDbGFzc2VzLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQoreworICAgIHJldHVybiBj
aGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3NDaGFuZ2UoY2hhbmdlZENsYXNzZXMsIFN0eWxlSW52YWxp
ZGF0aW9uUHJvcG9zaXRpb24oc3R5bGVSZXNvbHZlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3Nl
cywgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3sKKyAgICByZXR1cm4gY2hlY2tQcm9w
b3NpdGlvbkZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNzZXMsIFN0eWxlSW52YWxp
ZGF0aW9uUHJvcG9zaXRpb24oc3R5bGVSZXNvbHZlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgY2hlY2tOZWVkc0Rpc3RyaWJ1dGlvbkludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0
IFNwYWNlU3BsaXRTdHJpbmcmIGNoYW5nZWRDbGFzc2VzLCBFbGVtZW50U2hhZG93KiBlbGVtZW50
U2hhZG93KQoreworICAgIHJldHVybiBjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3NDaGFuZ2UoY2hh
bmdlZENsYXNzZXMsIERpc3RyaWJ1dGlvbkludmFsaWRhdGlvblByb3Bvc2l0aW9uKGVsZW1lbnRT
aGFkb3cpKTsKK30KKworc3RhdGljIGlubGluZSBib29sIGNoZWNrTmVlZHNEaXN0cmlidXRpb25J
bnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFz
c2VzLCBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBuZXdDbGFzc2VzLCBFbGVtZW50U2hhZG93KiBl
bGVtZW50U2hhZG93KQoreworICAgIHJldHVybiBjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3NDaGFu
Z2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgRGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uUHJvcG9z
aXRpb24oZWxlbWVudFNoYWRvdykpOworfQorCiB2b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogewogICAgIFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVySWZFeGlz
dHMoKTsKICAgICBib29sIHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBhdHRhY2hlZCgpICYm
IHN0eWxlUmVzb2x2ZXIgJiYgc3R5bGVDaGFuZ2VUeXBlKCkgPCBGdWxsU3R5bGVDaGFuZ2U7CiAg
ICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBmYWxzZTsKIAorICAgIEVsZW1lbnRTaGFk
b3cqIGVsZW1lbnRTaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKTsK
KyAgICBpZiAoZWxlbWVudFNoYWRvdykKKyAgICAgICAgZWxlbWVudFNoYWRvdy0+ZW5zdXJlU2Vs
ZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOworICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZURpc3Ry
aWJ1dGlvbiA9IGZhbHNlOworCiAgICAgaWYgKGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1lKG5ld0Ns
YXNzU3RyaW5nKSkgewogICAgICAgICBjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmli
dXRlRGF0YSA9IGVuc3VyZUF0dHJpYnV0ZURhdGEoKTsKICAgICAgICAgY29uc3QgYm9vbCBzaG91
bGRGb2xkQ2FzZSA9IGRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwpAQCAtODc3LDEwICs5NDEs
MTEgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3Ry
aW5nJiBuZXdDbGFzc1N0cmluZykKIAogICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBu
ZXdDbGFzc2VzID0gYXR0cmlidXRlRGF0YS0+Y2xhc3NOYW1lcygpOwogICAgICAgICBzaG91bGRJ
bnZhbGlkYXRlU3R5bGUgPSB0ZXN0U2hvdWxkSW52YWxpZGF0ZVN0eWxlICYmIGNoZWNrTmVlZHNT
dHlsZUludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNzZXMsIHN0
eWxlUmVzb2x2ZXIpOworICAgICAgICBzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uID0gZWxl
bWVudFNoYWRvdyAmJiBjaGVja05lZWRzRGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uRm9yQ2xhc3ND
aGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgZWxlbWVudFNoYWRvdyk7CiAgICAgfSBlbHNl
IGlmIChjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHRoaXMtPmF0
dHJpYnV0ZURhdGEoKSkgewogICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFz
c2VzID0gYXR0cmlidXRlRGF0YS0+Y2xhc3NOYW1lcygpOwogICAgICAgICBzaG91bGRJbnZhbGlk
YXRlU3R5bGUgPSB0ZXN0U2hvdWxkSW52YWxpZGF0ZVN0eWxlICYmIGNoZWNrTmVlZHNTdHlsZUlu
dmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIHN0eWxlUmVzb2x2ZXIpOwotCisg
ICAgICAgIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24gPSBlbGVtZW50U2hhZG93ICYmIGNo
ZWNrTmVlZHNEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShvbGRDbGFzc2Vz
LCBlbGVtZW50U2hhZG93KTsKICAgICAgICAgYXR0cmlidXRlRGF0YS0+Y2xlYXJDbGFzcygpOwog
ICAgIH0KIApAQCAtODg5LDYgKzk1NCw4IEBAIHZvaWQgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiAKICAgICBpZiAoc2hv
dWxkSW52YWxpZGF0ZVN0eWxlKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAg
aWYgKHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24pCisgICAgICAgIGVsZW1lbnRTaGFkb3ct
PmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlzIHRoZSBn
aXZlbiBhdHRyaWJ1dGUgaXMgYW4gZXZlbnQgaGFuZGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50U2hhZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
U2hhZG93LmNwcAppbmRleCA2Zjg3ZjE2NDRhZmI5NGJmYmZlNWViNzhjZWIzMWZlZTQ1MTYyZjFi
Li5kMDcwNWVmMjRlM2YxZjM0MTMwMDM2MzIwMWJlMDljNTQxNjUwOWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRTaGFkb3cuY3BwCkBAIC0yNyw5ICsyNywxMiBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkVsZW1lbnRTaGFkb3cuaCIKIAorI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgorI2luY2x1ZGUgIkNTU1NlbGVjdG9yTGlzdC5oIgogI2luY2x1ZGUgIkNvbnRhaW5lck5vZGVB
bGdvcml0aG1zLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CisjaW5jbHVkZSAiSFRNTENvbnRlbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNoYWRvd0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCkBAIC0zOSw2ICs0Miw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IEVsZW1lbnRTaGFkb3c6OkVsZW1lbnRTaGFkb3coKQorICAgIDogbV9zaG91bGRDb2xsZWN0U2Vs
ZWN0RmVhdHVyZVNldChmYWxzZSkKIHsKIH0KIApAQCAtMjAzLDYgKzIwNyw1MiBAQCB2b2lkIEVs
ZW1lbnRTaGFkb3c6OmludmFsaWRhdGVEaXN0cmlidXRpb24oRWxlbWVudCogaG9zdCkKICAgICAg
ICAgbV9kaXN0cmlidXRvci5maW5pc2hJbml2YWxpZGF0aW9uKCk7CiB9CiAKK3ZvaWQgRWxlbWVu
dFNoYWRvdzo6c2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKQoreworICAgIGlmIChz
aG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3Nob3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0ID0gdHJ1ZTsKKworICAgIGlmIChTaGFkb3dS
b290KiBwYXJlbnRTaGFkb3dSb290ID0gaG9zdCgpLT5zaGFkb3dSb290KCkpIHsKKyAgICAgICAg
aWYgKEVsZW1lbnRTaGFkb3cqIHBhcmVudEVsZW1lbnRTaGFkb3cgPSBwYXJlbnRTaGFkb3dSb290
LT5vd25lcigpKQorICAgICAgICAgICAgcGFyZW50RWxlbWVudFNoYWRvdy0+c2V0U2hvdWxkQ29s
bGVjdFNlbGVjdEZlYXR1cmVTZXQoKTsKKyAgICB9Cit9CisKK3ZvaWQgRWxlbWVudFNoYWRvdzo6
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpCit7CisgICAgaWYgKCFtX3Nob3VsZENv
bGxlY3RTZWxlY3RGZWF0dXJlU2V0KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3NlbGVjdEZl
YXR1cmVzLmNsZWFyKCk7CisgICAgZm9yIChTaGFkb3dSb290KiByb290ID0gb2xkZXN0U2hhZG93
Um9vdCgpOyByb290OyByb290ID0gcm9vdC0+eW91bmdlclNoYWRvd1Jvb3QoKSkKKyAgICAgICAg
Y29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKHJvb3QpOworICAgIG1fc2hvdWxkQ29sbGVjdFNl
bGVjdEZlYXR1cmVTZXQgPSBmYWxzZTsKK30KKwordm9pZCBFbGVtZW50U2hhZG93Ojpjb2xsZWN0
U2VsZWN0RmVhdHVyZVNldEZyb20oU2hhZG93Um9vdCogcm9vdCkKK3sKKyAgICBpZiAocm9vdC0+
aGFzRWxlbWVudFNoYWRvdygpKSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHJvb3QtPmZp
cnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAg
ICAgICAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cgPSBub2RlLT5pc0VsZW1l
bnROb2RlKCkgPyB0b0VsZW1lbnQobm9kZSktPnNoYWRvdygpIDogMCkgeworICAgICAgICAgICAg
ICAgIGVsZW1lbnRTaGFkb3ctPmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKKyAg
ICAgICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmFkZChlbGVtZW50U2hhZG93LT5tX3NlbGVj
dEZlYXR1cmVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChy
b290LT5oYXNDb250ZW50RWxlbWVudCgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHJv
b3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkg
eworICAgICAgICAgICAgaWYgKGlzSFRNTENvbnRlbnRFbGVtZW50KG5vZGUpKSB7CisgICAgICAg
ICAgICAgICAgY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBsaXN0ID0gdG9IVE1MQ29udGVudEVsZW1l
bnQobm9kZSktPnNlbGVjdG9yTGlzdCgpOworICAgICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0
b3IqIHNlbGVjdG9yID0gbGlzdC5maXJzdCgpOyBzZWxlY3Rvcjsgc2VsZWN0b3IgPSBsaXN0Lm5l
eHQoc2VsZWN0b3IpKQorICAgICAgICAgICAgICAgICAgICBtX3NlbGVjdEZlYXR1cmVzLmNvbGxl
Y3RGZWF0dXJlc0Zyb21TZWxlY3RvcihzZWxlY3Rvcik7ICAgICAgICAgICAgICAgICAgICAKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwogdm9pZCBFbGVtZW50U2hhZG93Ojpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50U2hhZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFNoYWRvdy5oCmluZGV4
IDJmNmY1NmM3NGY2NjkyY2VlMzQ0ODZhOWE3ZjliMDIxYzcwZTkyODUuLmQxMDE2YzU2NWE3Nzgx
NWVmNjBlM2E3ZDNkOTgyMjYxMjhhNjA5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50U2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRTaGFkb3cu
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiQ29udGVudERpc3RyaWJ1dG9yLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCiAjaW5j
bHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgPHd0Zi9Eb3VibHlMaW5rZWRMaXN0Lmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CkBAIC02OSwxMyArNzAsMjUgQEAgcHVibGljOgog
ICAgIENvbnRlbnREaXN0cmlidXRvciYgZGlzdHJpYnV0b3IoKTsKICAgICBjb25zdCBDb250ZW50
RGlzdHJpYnV0b3ImIGRpc3RyaWJ1dG9yKCkgY29uc3Q7CiAKKyAgICBib29sIHNob3VsZENvbGxl
Y3RTZWxlY3RGZWF0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRDb2xsZWN0U2VsZWN0
RmVhdHVyZVNldDsgfQorICAgIHZvaWQgc2V0U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQo
KTsKKyAgICB2b2lkIGVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKKworICAgIGJv
b2wgaGFzU2VsZWN0b3JGb3JJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKyAgICBib29s
IGhhc1NlbGVjdG9yRm9yQ2xhc3MoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisgICAgYm9v
bCBoYXNTZWxlY3RvckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKwog
ICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZURpc3RyaWJ1dGlvbihFbGVtZW50KiBob3N0KTsK
IAorICAgIHZvaWQgY29sbGVjdFNlbGVjdEZlYXR1cmVTZXRGcm9tKFNoYWRvd1Jvb3QqKTsKKwog
ICAgIERvdWJseUxpbmtlZExpc3Q8U2hhZG93Um9vdD4gbV9zaGFkb3dSb290czsKICAgICBDb250
ZW50RGlzdHJpYnV0b3IgbV9kaXN0cmlidXRvcjsKKyAgICBSdWxlRmVhdHVyZVNldCBtX3NlbGVj
dEZlYXR1cmVzOworICAgIGJvb2wgbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCA6IDE7
CiB9OwogCiBpbmxpbmUgU2hhZG93Um9vdCogRWxlbWVudFNoYWRvdzo6eW91bmdlc3RTaGFkb3dS
b290KCkgY29uc3QKQEAgLTExMyw2ICsxMjYsMjcgQEAgaW5saW5lIFNoYWRvd1Jvb3QqIE5vZGU6
OnlvdW5nZXN0U2hhZG93Um9vdCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK2lubGluZSBi
b29sIEVsZW1lbnRTaGFkb3c6Omhhc1NlbGVjdG9yRm9ySWQoY29uc3QgQXRvbWljU3RyaW5nJiBp
ZFZhbHVlKSBjb25zdAoreworICAgIEFTU0VSVCghaWRWYWx1ZS5pc0VtcHR5KCkpOworICAgIEFT
U0VSVCghbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCk7CisgICAgcmV0dXJuIG1fc2Vs
ZWN0RmVhdHVyZXMuaWRzSW5SdWxlcy5jb250YWlucyhpZFZhbHVlLmltcGwoKSk7Cit9CisKK2lu
bGluZSBib29sIEVsZW1lbnRTaGFkb3c6Omhhc1NlbGVjdG9yRm9yQ2xhc3MoY29uc3QgQXRvbWlj
U3RyaW5nJiBjbGFzc1ZhbHVlKSBjb25zdAoreworICAgIEFTU0VSVCghY2xhc3NWYWx1ZS5pc0Vt
cHR5KCkpOworICAgIEFTU0VSVCghbV9zaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCk7Cisg
ICAgcmV0dXJuIG1fc2VsZWN0RmVhdHVyZXMuY2xhc3Nlc0luUnVsZXMuY29udGFpbnMoY2xhc3NW
YWx1ZS5pbXBsKCkpOworfQorCitpbmxpbmUgYm9vbCBFbGVtZW50U2hhZG93OjpoYXNTZWxlY3Rv
ckZvckF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJpYnV0ZU5hbWUpIGNvbnN0Cit7
CisgICAgQVNTRVJUKCFhdHRyaWJ1dGVOYW1lLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKCFtX3No
b3VsZENvbGxlY3RTZWxlY3RGZWF0dXJlU2V0KTsKKyAgICByZXR1cm4gbV9zZWxlY3RGZWF0dXJl
cy5hdHRyc0luUnVsZXMuY29udGFpbnMoYXR0cmlidXRlTmFtZS5pbXBsKCkpOworfQorCiBjbGFz
cyBTaGFkb3dSb290VmVjdG9yIDogcHVibGljIFZlY3RvcjxSZWZQdHI8U2hhZG93Um9vdD4gPiB7
CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgU2hhZG93Um9vdFZlY3RvcihFbGVtZW50U2hhZG93KiB0
cmVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVu
dC5jcHAKaW5kZXggNzE0ODlmOWYzOGQzNzE5ZDIzOGUwZDc3YjJhM2QwMzMwZTQ1MDIwYS4uM2Q5
NjNmOTMzNDZhNzNmMjg1Nzg2MDVjNTUxMTBhMTZmZDc5Nzc4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCkBAIC0xMDEsOCArMTAx
LDEwIEBAIHZvaWQgSFRNTENvbnRlbnRFbGVtZW50OjplbnN1cmVTZWxlY3RQYXJzZWQoKQogdm9p
ZCBIVE1MQ29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKQogewogICAgIGlmIChhdHRyaWJ1dGUubmFtZSgpID09IHNlbGVjdEF0dHIpIHsKLSAg
ICAgICAgaWYgKFNoYWRvd1Jvb3QqIHJvb3QgPSBzaGFkb3dSb290KCkpCisgICAgICAgIGlmIChT
aGFkb3dSb290KiByb290ID0gc2hhZG93Um9vdCgpKSB7CisgICAgICAgICAgICByb290LT5vd25l
cigpLT5zZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpOwogICAgICAgICAgICAgcm9v
dC0+b3duZXIoKS0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOworICAgICAgICB9CiAgICAgICAg
IG1fc2hvdWxkUGFyc2VTZWxlY3Rvckxpc3QgPSB0cnVlOwogICAgIH0gZWxzZQogICAgICAgICBJ
bnNlcnRpb25Qb2ludDo6cGFyc2VBdHRyaWJ1dGUoYXR0cmlidXRlKTsKQEAgLTExMyw3ICsxMTUs
OSBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRpb25SZXF1ZXN0IEhUTUxDb250ZW50RWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvKENvbnRhaW5lck5vZAogICAgIEluc2VydGlvblBvaW50OjppbnNlcnRl
ZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogCiAgICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3Vt
ZW50KCkgJiYgaXNBY3RpdmUoKSkgewotICAgICAgICBzaGFkb3dSb290KCktPnJlZ2lzdGVyQ29u
dGVudEVsZW1lbnQoKTsKKyAgICAgICAgU2hhZG93Um9vdCogcm9vdCA9IHNoYWRvd1Jvb3QoKTsK
KyAgICAgICAgcm9vdC0+cmVnaXN0ZXJDb250ZW50RWxlbWVudCgpOworICAgICAgICByb290LT5v
d25lcigpLT5zZXRTaG91bGRDb2xsZWN0U2VsZWN0RmVhdHVyZVNldCgpOwogICAgICAgICBtX3Jl
Z2lzdGVyZWRXaXRoU2hhZG93Um9vdCA9IHRydWU7CiAgICAgfQogCkBAIC0xMjksNiArMTMzLDkg
QEAgdm9pZCBIVE1MQ29udGVudEVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGlu
c2VydGlvblBvaW50KQogICAgICAgICBpZiAocm9vdCkKICAgICAgICAgICAgIHJvb3QtPnVucmVn
aXN0ZXJDb250ZW50RWxlbWVudCgpOwogICAgICAgICBtX3JlZ2lzdGVyZWRXaXRoU2hhZG93Um9v
dCA9IGZhbHNlOworCisgICAgICAgIGlmIChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0g
cm9vdCA/IHJvb3QtPm93bmVyKCkgOiAwKQorICAgICAgICAgICAgZWxlbWVudFNoYWRvdy0+c2V0
U2hvdWxkQ29sbGVjdFNlbGVjdEZlYXR1cmVTZXQoKTsKICAgICB9CiAgICAgSW5zZXJ0aW9uUG9p
bnQ6OnJlbW92ZWRGcm9tKGluc2VydGlvblBvaW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmgKaW5kZXggMDQyNTRlMTJiMjIzYmMwMzkw
M2VkMzQyY2JhZWJmMTdkZTlmMjAxNi4uZWQwYjA4ODg0MzJjZDNmMzZlOTExN2ZhOTE5OTI5ODE2
ZWExNDlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRl
bnRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRF
bGVtZW50LmgKQEAgLTg2LDYgKzg2LDEyIEBAIGlubGluZSBib29sIGlzSFRNTENvbnRlbnRFbGVt
ZW50KGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTENv
bnRlbnRFbGVtZW50Ojpjb250ZW50VGFnTmFtZShub2RlLT5kb2N1bWVudCgpKSk7CiB9CiAKK2lu
bGluZSBIVE1MQ29udGVudEVsZW1lbnQqIHRvSFRNTENvbnRlbnRFbGVtZW50KE5vZGUqIG5vZGUp
Cit7CisgICAgQVNTRVJUKCFub2RlIHx8IGlzSFRNTENvbnRlbnRFbGVtZW50KG5vZGUpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTENvbnRlbnRFbGVtZW50Kj4obm9kZSk7Cit9CisKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZTRkMzA4NDEw
YTA2MzM2OGZjZWM2MGMyZGVjMzkyYmY3ZTJlOWRhNy4uN2JlMThkOWJlNWI3NTVkNGNhZjc5YWE4
ZTc0Zjg0ODUyODgwNjZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAt
MzA2LDYgKzMwNiwzOSBAQCBOb2RlKiBJbnRlcm5hbHM6OnBhcmVudFRyZWVTY29wZShOb2RlKiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICByZXR1cm4gcGFyZW50VHJlZVNjb3BlID8gcGFy
ZW50VHJlZVNjb3BlLT5yb290Tm9kZSgpIDogMDsKIH0KIAorYm9vbCBJbnRlcm5hbHM6Omhhc1Nl
bGVjdG9yRm9ySWRJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGlkVmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICghaG9zdCB8fCAhaG9zdC0+c2hhZG93KCkp
IHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOwor
ICAgIH0KKworICAgIGhvc3QtPnNoYWRvdygpLT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVj
dGVkKCk7CisgICAgcmV0dXJuIGhvc3QtPnNoYWRvdygpLT5oYXNTZWxlY3RvckZvcklkKGlkVmFs
dWUpOworfQorCitib29sIEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KEVs
ZW1lbnQqIGhvc3QsIGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAoIWhvc3QgfHwgIWhvc3QtPnNoYWRvdygpKSB7CisgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBob3N0LT5z
aGFkb3coKS0+ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZCgpOworICAgIHJldHVybiBo
b3N0LT5zaGFkb3coKS0+aGFzU2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOworfQorCitib29s
IEludGVybmFsczo6aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBob3N0
LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IGlmICghaG9zdCB8fCAhaG9zdC0+c2hhZG93KCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FD
Q0VTU19FUlI7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIGhvc3QtPnNoYWRvdygp
LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CisgICAgcmV0dXJuIGhvc3QtPnNo
YWRvdygpLT5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lKTsKK30KKwogYm9v
bCBJbnRlcm5hbHM6Omhhc1NoYWRvd0luc2VydGlvblBvaW50KGNvbnN0IE5vZGUqIHJvb3QsIEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewogICAgIGlmIChyb290ICYmIHJvb3QtPmlzU2hhZG93
Um9vdCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggMjExMTczOTdjODExYzg1
OGYzYjFmNDlmYzU3ZDE2YWMyNWE3MTEyMS4uNTQ0ZDMxZTg4OTQ1MGU1NTFkN2M4YmQyOTEzNmM3
YzcxMmEwNGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC05Niw2ICs5Niw5
IEBAIHB1YmxpYzoKICAgICBib29sIGlzVmFsaWRDb250ZW50U2VsZWN0KEVsZW1lbnQqIGluc2Vy
dGlvblBvaW50LCBFeGNlcHRpb25Db2RlJik7CiAgICAgTm9kZSogdHJlZVNjb3BlUm9vdE5vZGUo
Tm9kZSosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBOb2RlKiBwYXJlbnRUcmVlU2NvcGUoTm9kZSos
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIGhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhFbGVt
ZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGlkVmFsdWUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBi
b29sIGhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJp
bmcmIGNsYXNzTmFtZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgaGFzU2VsZWN0b3JGb3JB
dHRyaWJ1dGVJblNoYWRvdyhFbGVtZW50KiBob3N0LCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZU5h
bWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIGJvb2wgYXR0YWNoZWQoTm9kZSosIEV4Y2VwdGlv
bkNvZGUmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IDdhNWFiN2I5
MGVkYjY0YjY1MGRjMzQzN2I0M2ExZDY5OTcxYjAxYWQuLjMwNGU2NGM4ZWVjZDAwZjUzMjNlZGM2
MmEwYWVmOGVmODMxN2JlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAg
LTU5LDYgKzU5LDkgQEAKICAgICBib29sZWFuIGlzVmFsaWRDb250ZW50U2VsZWN0KGluIEVsZW1l
bnQgY29udGVudEVsZW1lbnQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIE5vZGUgdHJlZVNj
b3BlUm9vdE5vZGUoaW4gTm9kZSBub2RlKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CiAgICAgTm9k
ZSBwYXJlbnRUcmVlU2NvcGUoaW4gTm9kZSBub2RlKSByYWlzZXMgKERPTUV4Y2VwdGlvbik7Cisg
ICAgYm9vbGVhbiBoYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaW4gRWxlbWVudCBob3N0LCBpbiBE
T01TdHJpbmcgaWQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBib29sZWFuIGhhc1NlbGVj
dG9yRm9yQ2xhc3NJblNoYWRvdyhpbiBFbGVtZW50IGhvc3QsIGluIERPTVN0cmluZyBjbGFzc05h
bWUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBib29sZWFuIGhhc1NlbGVjdG9yRm9yQXR0
cmlidXRlSW5TaGFkb3coaW4gRWxlbWVudCBob3N0LCBpbiBET01TdHJpbmcgYXR0cmlidXRlTmFt
ZSkgcmFpc2VzIChET01FeGNlcHRpb24pOwogCiAgICAgTm9kZSBuZXh0U2libGluZ0J5V2Fsa2Vy
KGluIE5vZGUgbm9kZSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgTm9kZSBmaXJzdENoaWxk
QnlXYWxrZXIoaW4gTm9kZSBub2RlKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZgppbmRleCA5NjYyODJmOThjNGY3N2RmMTg5MWNlMWU5ZjEwNTNlYWE5MTIwYmYwLi43
NTIxY2E3NTgxMmQxMmEyOTI0ZjdjZjE5MWU3MzliMjIwZmRhMjcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmCkBAIC0xNjgsNiArMTY4LDcgQEAgRVhQT1JUUwogICAgICAgICA/Y3JlYXRlQFNoYWRv
d1Jvb3RAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlNoYWRvd1Jvb3RAV2ViQ29yZUBAQFdU
RkBAUEFWRWxlbWVudEAyQEFBSEBaCiAgICAgICAgID9jcmVhdGVXcmFwcGVyQFdlYkNvcmVAQFlB
P0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFW
Tm9kZUAxQEBaCiAgICAgICAgID9kb2N1bWVudFN0YXRlQEhpc3RvcnlJdGVtQFdlYkNvcmVAQFFC
RUFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAWFoKKyAgICAgICAgP2Vuc3VyZVNl
bGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWRARWxlbWVudFNoYWRvd0BXZWJDb3JlQEBRQUVYWFoKICAg
ICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUBQQkVAWgogICAgICAgICA/ZXF1
YWxAV1RGQEBZQV9OUEJWU3RyaW5nSW1wbEAxQDBAWgogICAgICAgICA/ZXF1YWxJZ25vcmluZ0Nh
c2VAV1RGQEBZQV9OUEFWU3RyaW5nSW1wbEAxQFBCRUBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNG
TGl0ZS5kZWYKaW5kZXggYzc5NmI2MDE2MTE4NmExMTQzNzRmN2QwMjhkYTEzODVkM2RlNmE2Ni4u
NDZmOGZhOTUyN2VhNTQ3YjBmMjIzMWI3MDBiNjdlYzgwNmJhYWQ3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dp
bi9XZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTYxLDYgKzE2MSw3IEBAIEVYUE9SVFMKICAgICAgICAg
P2NyZWF0ZUBTaGFkb3dSb290QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZTaGFkb3dSb290
QFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBBQUhAWgogICAgICAgICA/Y3JlYXRlV3JhcHBl
ckBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2Jh
bE9iamVjdEAxQFBBVk5vZGVAMUBAWgogICAgICAgICA/ZG9jdW1lbnRTdGF0ZUBIaXN0b3J5SXRl
bUBXZWJDb3JlQEBRQkVBQlY/JFZlY3RvckBWU3RyaW5nQFdURkBAJDBBQEBXVEZAQFhaCisgICAg
ICAgID9lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkQEVsZW1lbnRTaGFkb3dAV2ViQ29y
ZUBAUUFFWFhaCiAgICAgICAgID9lcXVhbEBXVEZAQFlBX05QQlZTdHJpbmdJbXBsQDFAUEJFQFoK
ICAgICAgICAgP2VxdWFsQFdURkBAWUFfTlBCVlN0cmluZ0ltcGxAMUAwQFoKICAgICAgICAgP2Vx
dWFsSWdub3JpbmdDYXNlQFdURkBAWUFfTlBBVlN0cmluZ0ltcGxAMUBQQkVAWgpkaWZmIC0tZ2l0
IGEvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlciBiL1NvdXJjZS9hdXRvdG9vbHMvc3lt
Ym9scy5maWx0ZXIKaW5kZXggZDgyZjE3OTg1MTFjMjZkNDdiZjU0NTQ1MDRmYzA2NjVmZWM5NmJl
OS4uOTRkNDZjYzc4NzljODZjM2VmYmUyZWExZjQzMTEyM2Q3MWQzMjk1YiAxMDA2NDQKLS0tIGEv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgorKysgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCkBAIC01Niw2ICs1Niw3IEBAIF9aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3Iy
NnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU18xM0NvbnRhaW5lck5vZGVFaWliOwogX1pO
N1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5T
XzdFbGVtZW50RVBLTlNfNVJhbmdlRVJqUzZfOwogX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjI5
Z2V0TG9jYXRpb25BbmRMZW5ndGhGcm9tUmFuZ2VFUE5TXzdFbGVtZW50RVBLTlNfNVJhbmdlRVJt
UzZfOwogX1pON1dlYkNvcmUxMlByaW50Q29udGV4dDIwcGFnZU51bWJlckZvckVsZW1lbnRFUE5T
XzdFbGVtZW50RVJLTlNfOUZsb2F0U2l6ZUU7CitfWk43V2ViQ29yZTEzRWxlbWVudFNoYWRvdzMx
ZW5zdXJlU2VsZWN0RmVhdHVyZVNldENvbGxlY3RlZEV2OwogX1pON1dlYkNvcmUxM2NyZWF0ZVdy
YXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfNE5vZGVF
OwogX1pON1dlYkNvcmUxNENsaWVudFJlY3RMaXN0QzFFUktOM1dURjZWZWN0b3JJTlNfOUZsb2F0
UXVhZEVMajBFRUU7CiBfWk43V2ViQ29yZTE0Q2xpZW50UmVjdExpc3RDMUVSS04zV1RGNlZlY3Rv
cklOU185RmxvYXRRdWFkRUxtMEVFRTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjYjNlNTc2YTZjMWFhZTE4MjQ4N2NjNzBj
ZGY1M2YxZDBkZTU0NDVjLi42NDc3YThiZGNlN2RlZDhkMTRlN2ZlODgzNzRlNDVhZTRhYjNhMjc3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTItMTEtMDggIFNoaW55YSBLYXdhbmFrYSAgPHNo
aW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENvZGUKKworICAgICAgICBbU2hhZG93XSBF
bGVtZW50U2hhZG93IHNob3VsZCBoYXZlIFJ1bGVGZWF0dXJlU2V0IGZvciBzZWxlY3QgYXR0cmli
dXRlIHNlbGVjdG9ycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTE4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJv
YWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxv
dyAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRy
aWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlv
bi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlm
aWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1l
LW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2pl
Y3Rpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC5odG1sOiBBZGRlZC4KKworMjAxMi0x
MS0wOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W1NoYWRvd10gRWxlbWVudFNoYWRvdyBzaG91bGQgaGF2ZSBSdWxlRmVhdHVyZVNldCBmb3Igc2Vs
ZWN0IGF0dHJpYnV0ZSBzZWxlY3RvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDExODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0LWF0dHJpYnV0
ZS1mZWF0dXJlc2V0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1zZWxlY3QtYXR0cmlidXRlLWZlYXR1cmVzZXQuaHRtbDogQWRkZWQuCisKIDIw
MTItMTEtMDggIERvbmd3b28gSm9zaHVhIEltICA8ZHcuaW1Ac2Ftc3VuZy5jb20+CiAKICAgICAg
ICAgW1FUXSBjc3MzL2xpbmUtYnJlYWsgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSBUZXN0RXhwZWN0
YXRpb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGMyODJjN2MwZDkxNWNkMzcxMzYzNzQyZDMxMzhkNjhkMTJmZTUyMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24t
YXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+
RjwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3YzBlNjIyYWVhNWQ4YjU0NDRkY2M5OTk0MTViZTVkOTY4NTJhMjYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1s
PgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpz
Ij48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj5BPC9kaXY+CisgICAgPGRp
dj5CPC9kaXY+CisgICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5F
PC9kaXY+CisgICAgPGRpdiBpZD0iRiI+RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3Zh
ciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7CitzaGFkb3dSb290Lmlu
bmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdlt0aXRsZV0iPjwvY29udGVudD4nOworCitz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEYudGl0bGUgPSAnc29tZXRoaW5nJzsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
fSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2Rp
ZmllZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTY5NWNlMGE3OWM4ZGFlMjAwNmVmMWU2
MTNmMDdhMjAyNTc0OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlk
PSJob3N0Ij4KKyAgICA8ZGl2PkE8L2Rpdj4KKyAgICA8ZGl2PkQ8L2Rpdj4KKyAgICA8ZGl2PkY8
L2Rpdj4KKzwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNTQ4ZTBkZTMzOWIwNjMzZWQ3MWM5Y2ZhZjljNGYzYzI4NzI2MDIwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1j
bGFzc05hbWUtbW9kaWZpZWQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4K
KworPGh0bWw+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+
PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkIj5B
PC9kaXY+CisgICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdiBjbGFz
cz0ic2VsZWN0ZWQiPkQ8L2Rpdj4KKyAgICA8ZGl2PkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJGIj5G
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChob3N0KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVj
dD0iLnNlbGVjdGVkIj48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICBGLmNsYXNzTmFtZSA9ICdzZWxlY3RlZCc7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyODJj
N2MwZDkxNWNkMzcxMzYzNzQyZDMxMzhkNjhkMTJmZTUyMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9k
eT4KKworPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rpdj4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1p
ZC1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlv
bi1pZC1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMzVjZTc5YjZiNzRmMWZlNTQ0ZDM0Yzlj
ZGQxOGFhMjMwMGI0YWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
cG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IGlkPSJz
ZWxlY3RlZCI+QTwvZGl2PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2PgorICAg
IDxkaXY+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGhvc3QpOworc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIjc2Vs
ZWN0ZWQiPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEEgPSBz
ZWxlY3RlZDsKKyAgICBGLmlkID0gJ3NlbGVjdGVkJzsgICAgCisgICAgQS5pZCA9ICcnOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1v
ZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1YTQyMTlhN2U3MGNjYzllZmQyZTg1
YzNjNDhlYTk2YjkyYzhhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxkaXYg
aWQ9Imhvc3QiPjxkaXY+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rpdj48L2Rpdj4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1h
dHRyaWJ1dGUtbW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM1MTY1YjAxZDli
ZDU2MmM1OGFkMjJhMDJhMGM4ZWFkZTI5MWUwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJo
b3N0MSI+CisgICAgPGRpdj5BPC9kaXY+CisgICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9k
aXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+
RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJo
b3N0MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDIgPSBzaGFkb3dSb290
MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKTsKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KGhvc3QyKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxl
Y3Q9ImRpdlt0aXRsZT1zZWxlY3RlZF0iPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgIEYudGl0bGUgPSAnc2VsZWN0ZWQnOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJv
amVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGVlOGE2MGM4ODE2NjljZTA0YWFhMGMyZDYyOTUxZjUyMzhiZjZkYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rp
b24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9Imhvc3QiPjxkaXY+Cisg
ICAgPGRpdj5BPC9kaXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rp
dj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTczZGE2NjRhZTJmMDUzNWVhNDk4NGRkMGM5ZjIyMWY5OWJmOWY4MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NO
YW1lLW1vZGlmaWVkLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2Ny
aXB0PgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQiPkE8L2Rp
dj4KKyAgICA8ZGl2PkI8L2Rpdj4KKyAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJz
ZWxlY3RlZCI+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rp
dj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIi
PjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKKwordmFyIGhvc3QyID0gc2hhZG93Um9vdDEuZ2V0
RWxlbWVudEJ5SWQoJ2hvc3QyJyk7Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChob3N0Mik7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIu
c2VsZWN0ZWQiPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEYu
Y2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQt
bW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTVhNDIxOWE3
ZTcwY2NjOWVmZDJlODVjM2M0OGVhOTZiOTJjOGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5Pgor
Cis8ZGl2IGlkPSJob3N0Ij48ZGl2PgorICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+PC9kaXY+CisK
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2pl
Y3Rpb24taWQtbW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24taWQtbW9kaWZpZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDAwYjg0NjhhOGViNmJhMjhi
YWE0MzMxZjZhMmVjYTA2NmQ3ZGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzYg
QEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxk
aXYgaWQ9InNlbGVjdGVkIj5BPC9kaXY+CisgICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9k
aXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+
RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJo
b3N0MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDIgPSBzaGFkb3dSb290
MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKTsKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KGhvc3QyKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxl
Y3Q9IiNzZWxlY3RlZCI+PC9jb250ZW50Pic7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgQSA9IHNlbGVjdGVkOworICAgIEEuaWQgPSAnJzsKKyAgICBGLmlkID0gJ3NlbGVjdGVkJzsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0LWF0dHJpYnV0ZS1mZWF0dXJlc2V0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0LWF0dHJp
YnV0ZS1mZWF0dXJlc2V0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jY2RhNDRkOTA0ZDIzMWVm
NDYwNzA2NTY4MmI2ZjBmMTg2OWJiMDI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1zZWxlY3QtYXR0cmlidXRlLWZlYXR1cmVzZXQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNzUgQEAKK0lkIHNob3VsZCBiZSBjb2xsZWN0ZWQKK1BBU1MgaW50
ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiZm9vIikgaXMgdHJ1ZQorUEFT
UyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJiYXIiKSBpcyBmYWxz
ZQorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJob3N0Iikg
aXMgZmFsc2UKKworQ2xhc3Mgc2hvdWxkIGJlIGNvbGxlY3RlZAorUEFTUyBpbnRlcm5hbHMuaGFz
U2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KGhvc3QsICJmb28iKSBpcyB0cnVlCitQQVNTIGludGVy
bmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImhvc3QiKSBpcyBmYWxzZQor
CitBdHRyaWJ1dGUgc2hvdWxkIGJlIGNvbGxlY3RlZAorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0
b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhob3N0LCAiZm9vIikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5h
bHMuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhob3N0LCAiaG9zdCIpIGlzIGZhbHNl
CisKK1NlbGVjdCBhdHRyaWJ1dGUgbWlnaHQgaGF2ZSBzZXZlcmFsIHNlbGVjdG9ycworUEFTUyBp
bnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJmb28iKSBpcyB0cnVlCitQ
QVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaG9zdCwgImJhciIpIGlzIGZh
bHNlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaG9zdCwgImJheiIp
IGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9z
dCwgImZvbyIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5T
aGFkb3coaG9zdCwgImJhciIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9y
Q2xhc3NJblNoYWRvdyhob3N0LCAiYmF6IikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1Nl
bGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coaG9zdCwgImZvbyIpIGlzIGZhbHNlCitQQVNTIGlu
dGVybmFscy5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KGhvc3QsICJiYXIiKSBpcyBm
YWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhob3N0
LCAiYmF6IikgaXMgdHJ1ZQorCitEb24ndCBjb3VudCBzaGFkb3cgZWxlbWVudAorUEFTUyBpbnRl
cm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJmb28iKSBpcyBmYWxzZQorUEFT
UyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJiYXIiKSBpcyBmYWxz
ZQorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJiYXoiKSBp
cyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KGhvc3Qs
ICJmb28iKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JDbGFzc0luU2hh
ZG93KGhvc3QsICJiYXIiKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JD
bGFzc0luU2hhZG93KGhvc3QsICJiYXoiKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU2Vs
ZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhob3N0LCAiZm9vIikgaXMgZmFsc2UKK1BBU1MgaW50
ZXJuYWxzLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coaG9zdCwgImJhciIpIGlzIGZh
bHNlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KGhvc3Qs
ICJiYXoiKSBpcyBmYWxzZQorCitDb21wbGV4IGNhc2UgZm9yIHNpbmdsZSBTaGFkb3dSb290CitQ
QVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaG9zdCwgImZvbyIpIGlzIGZh
bHNlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImZv
byIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hh
ZG93KGhvc3QsICJmb28iKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvckF0
dHJpYnV0ZUluU2hhZG93KGhvc3QsICJwaXlvIikgaXMgZmFsc2UKKworQW5vdGhlciBjb21wbGV4
IGNhc2UgZm9yIHNpbmdsZSBTaGFkb3dSb290CitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZv
cklkSW5TaGFkb3coaG9zdCwgImZvbyIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NlbGVj
dG9yRm9yQ2xhc3NJblNoYWRvdyhob3N0LCAiZm9vIikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMu
aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhob3N0LCAiZm9vIikgaXMgdHJ1ZQorCitN
dWx0aXBsZSBTaGFkb3dSb290IGNhc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJ
blNoYWRvdyhob3N0LCAiZm9vIikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JG
b3JJZEluU2hhZG93KGhvc3QsICJiYXIiKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTZWxl
Y3RvckZvcklkSW5TaGFkb3coaG9zdCwgImJheiIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5o
YXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImZvbyIpIGlzIGZhbHNlCitQQVNTIGlu
dGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImJhciIpIGlzIHRydWUK
K1BBU1MgaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRvdyhob3N0LCAiYmF6Iikg
aXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3co
aG9zdCwgImZvbyIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvckF0dHJp
YnV0ZUluU2hhZG93KGhvc3QsICJiYXIiKSBpcyBmYWxzZQorUEFTUyBpbnRlcm5hbHMuaGFzU2Vs
ZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhob3N0LCAiYmF6IikgaXMgdHJ1ZQorCitEeW5hbWlj
IHNlbGVjdCBhdHRyaWJ1dGUgdXBkYXRlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvcklk
SW5TaGFkb3coaG9zdCwgImZvbyIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NlbGVjdG9y
Rm9ySWRJblNoYWRvdyhob3N0LCAiYmFyIikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1Nl
bGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiZm9vIikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxz
Lmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiYmFyIikgaXMgdHJ1ZQorCitOZXN0ZWQg
U2hhZG93RE9NIGNhc2UKK1BBU1MgaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyho
b3N0LCAiZm9vIikgaXMgdHJ1ZQorUEFTUyBpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hh
ZG93KGhvc3QsICJiYXIiKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3RvckZvcklk
SW5TaGFkb3coaG9zdCwgImJheiIpIGlzIGZhbHNlCitQQVNTIGludGVybmFscy5oYXNTZWxlY3Rv
ckZvcklkSW5TaGFkb3coaG9zdCwgImZvbyIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1Nl
bGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiYmFyIikgaXMgZmFsc2UKK1BBU1MgaW50ZXJuYWxz
Lmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiYmF6IikgaXMgdHJ1ZQorCitQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1zZWxlY3QtYXR0cmlidXRlLWZlYXR1
cmVzZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0LWF0
dHJpYnV0ZS1mZWF0dXJlc2V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTJhNTUxNDk1NjZhODgyYzU3OWM5
ZDdhMzNlYmQ5ZGFjYTY5ZjAzNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctc2VsZWN0LWF0dHJpYnV0ZS1mZWF0dXJlc2V0Lmh0bWwKQEAgLTAs
MCArMSwxNzUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYgaWQ9
ImNvbnRhaW5lciI+PC9kaXY+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKworPHNjcmlwdD4K
K2Z1bmN0aW9uIHRlc3RDYXNlKGYpCit7CisgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnOwor
ICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdCd9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgp
KSk7CisgICAgc2hhZG93Um9vdCA9IGludGVybmFscy5zaGFkb3dSb290KGhvc3QpOworCisgICAg
ZigpOworICAgIGRlYnVnKCcnKTsKK30KKwordGVzdENhc2UoZnVuY3Rpb24oKQoreworICAgIGRl
YnVnKCdJZCBzaG91bGQgYmUgY29sbGVjdGVkJyk7CisKKyAgICBzaGFkb3dSb290LmlubmVySFRN
TCA9ICc8Y29udGVudCBzZWxlY3Q9IiNmb28iPjwvY29udGVudD4nOworICAgIHNob3VsZEJlKCdp
bnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJmb28iKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaG9zdCwg
ImJhciIpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZv
cklkSW5TaGFkb3coaG9zdCwgImhvc3QiKScsICdmYWxzZScpOworfSk7CisKK3Rlc3RDYXNlKGZ1
bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygnQ2xhc3Mgc2hvdWxkIGJlIGNvbGxlY3RlZCcpOworCisg
ICAgc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIuZm9vIj48L2NvbnRl
bnQ+JzsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9yQ2xhc3NJblNoYWRv
dyhob3N0LCAiZm9vIiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2Vs
ZWN0b3JGb3JDbGFzc0luU2hhZG93KGhvc3QsICJob3N0IiknLCAnZmFsc2UnKTsKK30pOworCit0
ZXN0Q2FzZShmdW5jdGlvbigpCit7CisgICAgZGVidWcoJ0F0dHJpYnV0ZSBzaG91bGQgYmUgY29s
bGVjdGVkJyk7CisKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9
ImRpdltmb29dIj48L2NvbnRlbnQ+JzsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVj
dG9yRm9yQXR0cmlidXRlSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ3RydWUnKTsKKyAgICBzaG91
bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coaG9zdCwgImhv
c3QiKScsICdmYWxzZScpOworfSk7CisKK3Rlc3RDYXNlKGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1
ZygnU2VsZWN0IGF0dHJpYnV0ZSBtaWdodCBoYXZlIHNldmVyYWwgc2VsZWN0b3JzJyk7CisKKyAg
ICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9IiNmb28sLmJhcixkaXZb
YmF6XSI+PC9jb250ZW50Pic7CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZv
cklkSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnaW50ZXJu
YWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiYmFyIiknLCAnZmFsc2UnKTsKKyAg
ICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiYmF6
IiknLCAnZmFsc2UnKTsKKworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JD
bGFzc0luU2hhZG93KGhvc3QsICJmb28iKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdpbnRl
cm5hbHMuaGFzU2VsZWN0b3JGb3JDbGFzc0luU2hhZG93KGhvc3QsICJiYXIiKScsICd0cnVlJyk7
CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9z
dCwgImJheiIpJywgJ2ZhbHNlJyk7CisKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVj
dG9yRm9yQXR0cmlidXRlSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ2ZhbHNlJyk7CisgICAgc2hv
dWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KGhvc3QsICJi
YXIiKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JB
dHRyaWJ1dGVJblNoYWRvdyhob3N0LCAiYmF6IiknLCAndHJ1ZScpOworfSk7CisKK3Rlc3RDYXNl
KGZ1bmN0aW9uKCkKK3sKKyAgICBkZWJ1ZygnRG9uXCd0IGNvdW50IHNoYWRvdyBlbGVtZW50Jyk7
CisKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8c2hhZG93IHNlbGVjdD0iI2ZvbywuYmFy
LGRpdltiYXpdIj48L3NoYWRvdz4nOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2VsZWN0
b3JGb3JJZEluU2hhZG93KGhvc3QsICJmb28iKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdp
bnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJiYXIiKScsICdmYWxzZScp
OworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3Qs
ICJiYXoiKScsICdmYWxzZScpOworCisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3Rv
ckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUo
J2ludGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImJhciIpJywgJ2Zh
bHNlJyk7CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFk
b3coaG9zdCwgImJheiIpJywgJ2ZhbHNlJyk7CisKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhh
c1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ2ZhbHNlJyk7Cisg
ICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KGhv
c3QsICJiYXIiKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2VsZWN0
b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhob3N0LCAiYmF6IiknLCAnZmFsc2UnKTsKK30pOworCit0
ZXN0Q2FzZShmdW5jdGlvbigpCit7CisgICAgZGVidWcoJ0NvbXBsZXggY2FzZSBmb3Igc2luZ2xl
IFNoYWRvd1Jvb3QnKTsKKworICAgIHNoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxkaXY+PGRpdj48
L2Rpdj48Y29udGVudCBzZWxlY3Q9IioiPjwvY29udGVudD48ZGl2Pjxjb250ZW50IHNlbGVjdD0i
ZGl2W2Zvbz1waXlvXSI+PC9jb250ZW50PjwvZGl2Pic7CisgICAgc2hvdWxkQmUoJ2ludGVybmFs
cy5oYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ2ZhbHNlJyk7CisgICAg
c2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImZv
byIpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvckF0
dHJpYnV0ZUluU2hhZG93KGhvc3QsICJmb28iKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2lu
dGVybmFscy5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KGhvc3QsICJwaXlvIiknLCAn
ZmFsc2UnKTsKK30pOworCit0ZXN0Q2FzZShmdW5jdGlvbigpCit7CisgICAgZGVidWcoJ0Fub3Ro
ZXIgY29tcGxleCBjYXNlIGZvciBzaW5nbGUgU2hhZG93Um9vdCcpOworCisgICAgc2hhZG93Um9v
dC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIjZm9vLC5mb28sZGl2W2Zvb10iPjwvY29u
dGVudD4nOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93
KGhvc3QsICJmb28iKScsICd0cnVlJyk7CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxl
Y3RvckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ3RydWUnKTsKKyAgICBzaG91bGRC
ZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlSW5TaGFkb3coaG9zdCwgImZvbyIp
JywgJ3RydWUnKTsKK30pOworCit0ZXN0Q2FzZShmdW5jdGlvbigpCit7CisgICAgZGVidWcoJ011
bHRpcGxlIFNoYWRvd1Jvb3QgY2FzZScpOworCisgICAgdmFyIGFub3RoZXJTaGFkb3dSb290ID0g
bmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7CisKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9
ICc8Y29udGVudCBzZWxlY3Q9IiNmb28iPjwvY29udGVudD4nOworICAgIGFub3RoZXJTaGFkb3dS
b290LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9IiNiYXIiPjwvY29udGVudD48Y29udGVu
dCBzZWxlY3Q9ImRpdltiYXpdLC5iYXIiPjwvY29udGVudD4nOworCisgICAgc2hvdWxkQmUoJ2lu
dGVybmFscy5oYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ3RydWUnKTsK
KyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAi
YmFyIiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJ
ZEluU2hhZG93KGhvc3QsICJiYXoiKScsICdmYWxzZScpOworCisgICAgc2hvdWxkQmUoJ2ludGVy
bmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ2ZhbHNlJyk7
CisgICAgc2hvdWxkQmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvckNsYXNzSW5TaGFkb3coaG9z
dCwgImJhciIpJywgJ3RydWUnKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9y
Rm9yQ2xhc3NJblNoYWRvdyhob3N0LCAiYmF6IiknLCAnZmFsc2UnKTsKKworICAgIHNob3VsZEJl
KCdpbnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGVJblNoYWRvdyhob3N0LCAiZm9vIikn
LCAnZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9yQXR0cmli
dXRlSW5TaGFkb3coaG9zdCwgImJhciIpJywgJ2ZhbHNlJyk7CisgICAgc2hvdWxkQmUoJ2ludGVy
bmFscy5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZUluU2hhZG93KGhvc3QsICJiYXoiKScsICd0cnVl
Jyk7Cit9KTsKKwordGVzdENhc2UoZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCdEeW5hbWljIHNl
bGVjdCBhdHRyaWJ1dGUgdXBkYXRlJyk7CisKKyAgICBzaGFkb3dSb290LmlubmVySFRNTCA9ICc8
Y29udGVudCBzZWxlY3Q9IiNmb28iPjwvY29udGVudD4nOworCisgICAgc2hvdWxkQmUoJ2ludGVy
bmFscy5oYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaG9zdCwgImZvbyIpJywgJ3RydWUnKTsKKyAg
ICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiYmFy
IiknLCAnZmFsc2UnKTsKKworICAgIHZhciBjb250ZW50ID0gc2hhZG93Um9vdC5xdWVyeVNlbGVj
dG9yKCdjb250ZW50Jyk7CisgICAgY29udGVudC5zZWxlY3QgPSAnI2Jhcic7CisKKyAgICBzaG91
bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyhob3N0LCAiZm9vIiknLCAn
ZmFsc2UnKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRv
dyhob3N0LCAiYmFyIiknLCAndHJ1ZScpOworfSk7CisKK3Rlc3RDYXNlKGZ1bmN0aW9uKCkKK3sK
KyAgICBkZWJ1ZygnTmVzdGVkIFNoYWRvd0RPTSBjYXNlJyk7CisKKyAgICBzaGFkb3dSb290Lmlu
bmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9IiNmb28iPjwvY29udGVudD4nOworCisgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHZhciBuZXN0ZWRTaGFk
b3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoZGl2KTsKKyAgICBuZXN0ZWRTaGFkb3dSb290
LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9IiNiYXIiPjwvY29udGVudD4nOworICAgIHNo
YWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZGl2KTsKKworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFz
U2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJmb28iKScsICd0cnVlJyk7CisgICAgc2hvdWxk
QmUoJ2ludGVybmFscy5oYXNTZWxlY3RvckZvcklkSW5TaGFkb3coaG9zdCwgImJhciIpJywgJ3Ry
dWUnKTsKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyho
b3N0LCAiYmF6IiknLCAnZmFsc2UnKTsKKworICAgIHZhciBjb250ZW50ID0gbmVzdGVkU2hhZG93
Um9vdC5xdWVyeVNlbGVjdG9yKCdjb250ZW50Jyk7CisgICAgY29udGVudC5zZWxlY3QgPSAnI2Jh
eic7CisKKyAgICBzaG91bGRCZSgnaW50ZXJuYWxzLmhhc1NlbGVjdG9yRm9ySWRJblNoYWRvdyho
b3N0LCAiZm9vIiknLCAndHJ1ZScpOworICAgIHNob3VsZEJlKCdpbnRlcm5hbHMuaGFzU2VsZWN0
b3JGb3JJZEluU2hhZG93KGhvc3QsICJiYXIiKScsICdmYWxzZScpOworICAgIHNob3VsZEJlKCdp
bnRlcm5hbHMuaGFzU2VsZWN0b3JGb3JJZEluU2hhZG93KGhvc3QsICJiYXoiKScsICd0cnVlJyk7
Cit9KTsKKworZmluaXNoSlNUZXN0KCk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBhZjZkOTc2ZmYwMzUxYTk5
MTMyN2FmNzM1Y2I5ZDg5ZTUwZTZmNjRhLi41NGI1MTQxOTg2OTcyZGYxOGJkMzU4ZGE0NzY4ZGU5
YjJmYmI4MDdhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMTEtMDggIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFtTaGFkb3ddIEVsZW1lbnRTaGFkb3cgc2hvdWxkIGhhdmUgUnVsZUZl
YXR1cmVTZXQgZm9yIHNlbGVjdCBhdHRyaWJ1dGUgc2VsZWN0b3JzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMTgwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3NlcyBuZWNlc3Nhcnkgc3ltYm9s
cy4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTIt
MTEtMDggIFJhcGhhZWwgS3VibyBkYSBDb3N0YSAgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRl
bC5jb20+CiAKICAgICAgICAgW0VGTF0gVHVybiBXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUg
aW4gT3B0aW9uc0VmbC5jbWFrZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173551</attachid>
            <date>2012-11-11 21:35:20 -0800</date>
            <delta_ts>2012-11-12 21:01:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100738-20121112143323.patch</filename>
            <type>text/plain</type>
            <size>21422</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTcxN2MyNjlhNWRjMTQ1
MTU0NmRmNTg0YzlhMTFlZmQ5OTgxMGE5Yi4uNTYzN2Q5ZDU0MjUyMDY0MjI5MGM1MDdmMjI0ZGZk
MGY4OGVkMmExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTExLTA4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2luZyBp
ZCwgY2xhc3NOYW1lLCBvciBhdHRyaWJ1dGUgc2hvdWxkIGludmFsaWRhdGUgZGlzdHJpYnV0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGlk
LCBjbGFzc05hbWUsIG9yIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLCB3ZSBtaWdodCBoYXZlIHRvIGlu
dmFsaWRhdGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRv
IGRvIHVzZWxlc3MgaW52YWxpZGF0aW9uLiBTbyB3ZSBjb25zdWx0IHdpdGggdGhlIFJ1bGVGZWF0
dXJlU2V0IG9mIEVsZW1lbnRTaGFkb3csCisgICAgICAgIGFuZCBpbnZhbGlkYXRlIGRpc3RyaWJ1
dGlvbiBvbmx5IGlmIG5lY2Vzc2FyeS4KKworICAgICAgICBXaGVuIGNsYXNzTmFtZSBpcyBjaGFu
Z2VkLCB3ZSBjYW4gc2hhcmUgYSBsb3Qgb2YgY29kZSBiZXR3ZWVuIGludmFsaWRhdGluZyBkaXN0
cmlidXRpb24gYW5kIGludmFsaWRhdGluZyBzdHlsZS4KKyAgICAgICAgU28gd2UgbWFkZSBjaGVj
a05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZSBhIHRlbXBsYXRlIG1ldGhvZCwg
YW5kIHNoYXJlIGl0LgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1v
ZGlmaWVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24t
aWQtbW9kaWZpZWQuaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUludmFsaWRhdGlvblByb3Bvc2l0aW9uOjpTdHlsZUludmFsaWRhdGlvblByb3Bvc2l0aW9u
KToKKyAgICAgICAgKFN0eWxlSW52YWxpZGF0aW9uUHJvcG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbjo6b3BlcmF0b3IoKSk6IEEgcHJvcG9z
aXRpb24gd2hpY2ggcmV0dXJucyB0cnVlIGlmCisgICAgICAgIFN0eWxlUmVzb2x2ZXI6Omhhc1Nl
bGVjdG9yRm9yQ2xhc3MgcmV0dXJucyB0cnVlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Qcm9wb3NpdGlvbjo6RGlzdHJpYnV0
aW9uSW52YWxpZGF0aW9uUHJvcG9zaXRpb24pOiBBIHByb3Bvc2l0aW9uIHdoaWNoCisgICAgICAg
IHJldHVybnMgdHJ1ZSBpZiBFbGVtZW50U2hhZG93OjpoYXNTZWxlY3RvckZvckNsYXNzIHJldHVy
bnMgdHJ1ZS4KKyAgICAgICAgKERpc3RyaWJ1dGlvbkludmFsaWRhdGlvblByb3Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3RyaWJ1dGlvbkludmFsaWRhdGlvblByb3Bvc2l0aW9uOjpv
cGVyYXRvcigpKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrUHJvcG9zaXRpb25Gb3JDbGFzc0No
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JD
bGFzc0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja05lZWRzRGlzdHJpYnV0aW9uSW52
YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xh
c3NBdHRyaWJ1dGVDaGFuZ2VkKToKKwogMjAxMi0xMS0xMSAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBIVE1MRG9jdW1lbnQ6OmFsbCgpIG5lZWRz
IG5vdCB0byBiZSBjdXN0b20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAzYjE0MWVjOGExNDEx
ODNkNDg1MGE1NTNmMzlkODdkYTFjZmVkZjE3Li4yZTJlY2NjZjVmYmMwZWUxZmU4NjEyNGNmMDcx
ZDNmMjZiM2Q3ZTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAj
aW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklk
aW9tcy5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAi
SW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5oIgogI2luY2x1ZGUgIk11
dGF0aW9uUmVjb3JkLmgiCkBAIC03NjMsOCArNzY0LDEzIEBAIHZvaWQgRWxlbWVudDo6YXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5lCiAgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNpb24oKTsKIAogICAgIFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVySWZFeGlzdHMo
KTsKKyAgICBFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JE
aXN0cmlidXRpb24odGhpcyk7CisgICAgaWYgKGVsZW1lbnRTaGFkb3cpCisgICAgICAgIGVsZW1l
bnRTaGFkb3ctPmVuc3VyZVNlbGVjdEZlYXR1cmVTZXRDb2xsZWN0ZWQoKTsKKwogICAgIGJvb2wg
dGVzdFNob3VsZEludmFsaWRhdGVTdHlsZSA9IGF0dGFjaGVkKCkgJiYgc3R5bGVSZXNvbHZlciAm
JiBzdHlsZUNoYW5nZVR5cGUoKSA8IEZ1bGxTdHlsZUNoYW5nZTsKICAgICBib29sIHNob3VsZElu
dmFsaWRhdGVTdHlsZSA9IGZhbHNlOworICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1
dGlvbiA9IGZhbHNlOwogCiAgICAgaWYgKGlzSWRBdHRyaWJ1dGVOYW1lKG5hbWUpKSB7CiAgICAg
ICAgIEF0b21pY1N0cmluZyBvbGRJZCA9IGF0dHJpYnV0ZURhdGEoKS0+aWRGb3JTdHlsZVJlc29s
dXRpb24oKTsKQEAgLTc3Miw2ICs3NzgsOCBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZQogICAg
ICAgICBpZiAobmV3SWQgIT0gb2xkSWQpIHsKICAgICAgICAgICAgIGF0dHJpYnV0ZURhdGEoKS0+
c2V0SWRGb3JTdHlsZVJlc29sdXRpb24obmV3SWQpOwogICAgICAgICAgICAgc2hvdWxkSW52YWxp
ZGF0ZVN0eWxlID0gdGVzdFNob3VsZEludmFsaWRhdGVTdHlsZSAmJiBjaGVja05lZWRzU3R5bGVJ
bnZhbGlkYXRpb25Gb3JJZENoYW5nZShvbGRJZCwgbmV3SWQsIHN0eWxlUmVzb2x2ZXIpOworICAg
ICAgICAgICAgc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbiB8PSBlbGVtZW50U2hhZG93ICYm
ICFvbGRJZC5pc0VtcHR5KCkgJiYgZWxlbWVudFNoYWRvdy0+aGFzU2VsZWN0b3JGb3JJZChvbGRJ
ZCk7CisgICAgICAgICAgICBzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uIHw9IGVsZW1lbnRT
aGFkb3cgJiYgIW5ld0lkLmlzRW1wdHkoKSAmJiBlbGVtZW50U2hhZG93LT5oYXNTZWxlY3RvckZv
cklkKG5ld0lkKTsgIAogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChuYW1lID09IEhUTUxOYW1l
czo6bmFtZUF0dHIpCiAgICAgICAgIHNldEhhc05hbWUoIW5ld1ZhbHVlLmlzTnVsbCgpKTsKQEAg
LTc3OSwxMiArNzg3LDE1IEBAIHZvaWQgRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5lCiAgICAgICAgIHNob3Vs
ZEludmFsaWRhdGVTdHlsZSB8PSB0ZXN0U2hvdWxkSW52YWxpZGF0ZVN0eWxlICYmIGlzSW5TaGFk
b3dUcmVlKCk7CiAKICAgICBzaG91bGRJbnZhbGlkYXRlU3R5bGUgfD0gdGVzdFNob3VsZEludmFs
aWRhdGVTdHlsZSAmJiBzdHlsZVJlc29sdmVyLT5oYXNTZWxlY3RvckZvckF0dHJpYnV0ZShuYW1l
LmxvY2FsTmFtZSgpKTsKKyAgICBzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uIHw9IGVsZW1l
bnRTaGFkb3cgJiYgZWxlbWVudFNoYWRvdy0+aGFzU2VsZWN0b3JGb3JBdHRyaWJ1dGUobmFtZS5s
b2NhbE5hbWUoKSk7CiAKICAgICBpbnZhbGlkYXRlTm9kZUxpc3RDYWNoZXNJbkFuY2VzdG9ycygm
bmFtZSwgdGhpcyk7CiAKICAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZVN0eWxlKQogICAgICAgICBz
ZXROZWVkc1N0eWxlUmVjYWxjKCk7Ci0KKyAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1
dGlvbikKKyAgICAgICAgZWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwor
ICAgICAgICAKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkK
ICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5oYW5kbGVBdHRyaWJ1dGVDaGFu
Z2VkKG5hbWUsIHRoaXMpOwogfQpAQCAtODIyLDIxICs4MzMsNDkgQEAgc3RhdGljIGlubGluZSBi
b29sIGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NT
dHJpbmcpCiAgICAgcmV0dXJuIGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1lKG5ld0NsYXNzU3RyaW5n
LmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpOwogfQogCi1zdGF0aWMgYm9vbCBjaGVja05lZWRzU3R5
bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjaGFu
Z2VkQ2xhc3NlcywgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3N0cnVjdCBTdHlsZUlu
dmFsaWRhdGlvblByb3Bvc2l0aW9uIHsKKyAgICBleHBsaWNpdCBTdHlsZUludmFsaWRhdGlvblBy
b3Bvc2l0aW9uKFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyKQorICAgICAgICA6IHN0eWxlUmVzb2x2
ZXIocmVzb2x2ZXIpCisgICAgeyB9CisKKyAgICBib29sIG9wZXJhdG9yKCkoY29uc3QgQXRvbWlj
U3RyaW5nJiBjbGFzc05hbWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gc3R5bGVSZXNv
bHZlci0+aGFzU2VsZWN0b3JGb3JDbGFzcyhjbGFzc05hbWUpOworICAgIH0KKworICAgIFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXI7Cit9OworCitzdHJ1Y3QgRGlzdHJpYnV0aW9uSW52YWxp
ZGF0aW9uUHJvcG9zaXRpb24geworICAgIGV4cGxpY2l0IERpc3RyaWJ1dGlvbkludmFsaWRhdGlv
blByb3Bvc2l0aW9uKEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cpCisgICAgICAgIDogZWxl
bWVudFNoYWRvdyhlbGVtZW50U2hhZG93KQorICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcigp
KGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVsZW1lbnRTaGFkb3ctPmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICB9
CisKKyAgICBFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93OworfTsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgUHJvcG9zaXRpb24+CitzdGF0aWMgYm9vbCBjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3ND
aGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIFByb3Bvc2l0aW9u
IHByb3Bvc2l0aW9uKQogewogICAgIHVuc2lnbmVkIGNoYW5nZWRTaXplID0gY2hhbmdlZENsYXNz
ZXMuc2l6ZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGFuZ2VkU2l6ZTsgKytp
KSB7Ci0gICAgICAgIGlmIChzdHlsZVJlc29sdmVyLT5oYXNTZWxlY3RvckZvckNsYXNzKGNoYW5n
ZWRDbGFzc2VzW2ldKSkKKyAgICAgICAgaWYgKHByb3Bvc2l0aW9uKGNoYW5nZWRDbGFzc2VzW2ld
KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXN0YXRpYyBib29sIGNoZWNrTmVlZHNTdHlsZUludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdl
KGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRTdHJp
bmcmIG5ld0NsYXNzZXMsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBQcm9wb3NpdGlvbj4KK3N0YXRpYyBib29sIGNoZWNrUHJvcG9zaXRpb25Gb3JDbGFz
c0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzLCBjb25zdCBTcGFjZVNw
bGl0U3RyaW5nJiBuZXdDbGFzc2VzLCBQcm9wb3NpdGlvbiBwcm9wb3NpdGlvbikKIHsKICAgICB1
bnNpZ25lZCBvbGRTaXplID0gb2xkQ2xhc3Nlcy5zaXplKCk7CiAgICAgaWYgKCFvbGRTaXplKQot
ICAgICAgICByZXR1cm4gY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2Uo
bmV3Q2xhc3Nlcywgc3R5bGVSZXNvbHZlcik7CisgICAgICAgIHJldHVybiBjaGVja1Byb3Bvc2l0
aW9uRm9yQ2xhc3NDaGFuZ2UobmV3Q2xhc3NlcywgcHJvcG9zaXRpb24pOwogICAgIEJpdFZlY3Rv
ciByZW1haW5pbmdDbGFzc0JpdHM7CiAgICAgcmVtYWluaW5nQ2xhc3NCaXRzLmVuc3VyZVNpemUo
b2xkU2l6ZSk7CiAgICAgLy8gQ2xhc3MgdmVjdG9ycyB0ZW5kIHRvIGJlIHZlcnkgc2hvcnQuIFRo
aXMgaXMgZmFzdGVyIHRoYW4gdXNpbmcgYSBoYXNoIHRhYmxlLgpAQCAtODQ4LDI1ICs4ODcsNTAg
QEAgc3RhdGljIGJvb2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2Uo
Y29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2wKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci0+aGFzU2Vs
ZWN0b3JGb3JDbGFzcyhuZXdDbGFzc2VzW2ldKSkKKyAgICAgICAgaWYgKHByb3Bvc2l0aW9uKG5l
d0NsYXNzZXNbaV0pKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kpIHsKICAgICAgICAgLy8gSWYgdGhlIGJp
dCBpcyBub3Qgc2V0IHRoZSB0aGUgY29ycmVzcG9uZGluZyBjbGFzcyBoYXMgYmVlbiByZW1vdmVk
LgogICAgICAgICBpZiAocmVtYWluaW5nQ2xhc3NCaXRzLnF1aWNrR2V0KGkpKQogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGlmIChzdHlsZVJlc29sdmVyLT5oYXNTZWxlY3RvckZvckNs
YXNzKG9sZENsYXNzZXNbaV0pKQorICAgICAgICBpZiAocHJvcG9zaXRpb24ob2xkQ2xhc3Nlc1tp
XSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xh
c3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCit7CisgICAgcmV0dXJuIGNoZWNrUHJvcG9zaXRpb25Gb3JD
bGFzc0NoYW5nZShjaGFuZ2VkQ2xhc3NlcywgU3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbihz
dHlsZVJlc29sdmVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzU3R5bGVJ
bnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFz
c2VzLCBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBuZXdDbGFzc2VzLCBTdHlsZVJlc29sdmVyKiBz
dHlsZVJlc29sdmVyKQoreworICAgIHJldHVybiBjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3NDaGFu
Z2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgU3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbihz
dHlsZVJlc29sdmVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzRGlzdHJp
YnV0aW9uSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYg
Y2hhbmdlZENsYXNzZXMsIEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cpCit7CisgICAgcmV0
dXJuIGNoZWNrUHJvcG9zaXRpb25Gb3JDbGFzc0NoYW5nZShjaGFuZ2VkQ2xhc3NlcywgRGlzdHJp
YnV0aW9uSW52YWxpZGF0aW9uUHJvcG9zaXRpb24oZWxlbWVudFNoYWRvdykpOworfQorCitzdGF0
aWMgaW5saW5lIGJvb2wgY2hlY2tOZWVkc0Rpc3RyaWJ1dGlvbkludmFsaWRhdGlvbkZvckNsYXNz
Q2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3Bs
aXRTdHJpbmcmIG5ld0NsYXNzZXMsIEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cpCit7Cisg
ICAgcmV0dXJuIGNoZWNrUHJvcG9zaXRpb25Gb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBuZXdD
bGFzc2VzLCBEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Qcm9wb3NpdGlvbihlbGVtZW50U2hhZG93
KSk7Cit9CisKIHZvaWQgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiB7CiAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNv
bHZlciA9IGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJJZkV4aXN0cygpOwogICAgIGJvb2wgdGVz
dFNob3VsZEludmFsaWRhdGVTdHlsZSA9IGF0dGFjaGVkKCkgJiYgc3R5bGVSZXNvbHZlciAmJiBz
dHlsZUNoYW5nZVR5cGUoKSA8IEZ1bGxTdHlsZUNoYW5nZTsKICAgICBib29sIHNob3VsZEludmFs
aWRhdGVTdHlsZSA9IGZhbHNlOwogCisgICAgRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9
IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpOworICAgIGlmIChlbGVtZW50U2hh
ZG93KQorICAgICAgICBlbGVtZW50U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVj
dGVkKCk7CisgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uID0gZmFsc2U7CisK
ICAgICBpZiAoY2xhc3NTdHJpbmdIYXNDbGFzc05hbWUobmV3Q2xhc3NTdHJpbmcpKSB7CiAgICAg
ICAgIGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gZW5zdXJlQXR0
cmlidXRlRGF0YSgpOwogICAgICAgICBjb25zdCBib29sIHNob3VsZEZvbGRDYXNlID0gZG9jdW1l
bnQoKS0+aW5RdWlya3NNb2RlKCk7CkBAIC04NzYsMTAgKzk0MCwxMSBAQCB2b2lkIEVsZW1lbnQ6
OmNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5n
KQogCiAgICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMgPSBhdHRyaWJ1
dGVEYXRhLT5jbGFzc05hbWVzKCk7CiAgICAgICAgIHNob3VsZEludmFsaWRhdGVTdHlsZSA9IHRl
c3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgJiYgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9y
Q2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3Nlcywgc3R5bGVSZXNvbHZlcik7CisgICAg
ICAgIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24gPSBlbGVtZW50U2hhZG93ICYmIGNoZWNr
TmVlZHNEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBu
ZXdDbGFzc2VzLCBlbGVtZW50U2hhZG93KTsKICAgICB9IGVsc2UgaWYgKGNvbnN0IEVsZW1lbnRB
dHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gdGhpcy0+YXR0cmlidXRlRGF0YSgpKSB7CiAg
ICAgICAgIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMgPSBhdHRyaWJ1dGVEYXRh
LT5jbGFzc05hbWVzKCk7CiAgICAgICAgIHNob3VsZEludmFsaWRhdGVTdHlsZSA9IHRlc3RTaG91
bGRJbnZhbGlkYXRlU3R5bGUgJiYgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3ND
aGFuZ2Uob2xkQ2xhc3Nlcywgc3R5bGVSZXNvbHZlcik7Ci0KKyAgICAgICAgc2hvdWxkSW52YWxp
ZGF0ZURpc3RyaWJ1dGlvbiA9IGVsZW1lbnRTaGFkb3cgJiYgY2hlY2tOZWVkc0Rpc3RyaWJ1dGlv
bkludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIGVsZW1lbnRTaGFkb3cpOwog
ICAgICAgICBhdHRyaWJ1dGVEYXRhLT5jbGVhckNsYXNzKCk7CiAgICAgfQogCkBAIC04ODgsNiAr
OTUzLDggQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdDbGFzc1N0cmluZykKIAogICAgIGlmIChzaG91bGRJbnZhbGlkYXRlU3R5bGUp
CiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICBpZiAoc2hvdWxkSW52YWxpZGF0
ZURpc3RyaWJ1dGlvbikKKyAgICAgICAgZWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1
dGlvbigpOwogfQogCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBh
biBldmVudCBoYW5kbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGJhNTBkMTkxMDJiZDhlMzljMzYzZDlmOTMyOTc5ZDY5
YzRlY2Y4YWYuLjM5OTFkY2JkMDA2ODA0MWExY2IwMDhiNzI4YTA2ZDg3ZDczZTMyNGQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNSBAQAorMjAxMi0xMS0wOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdpbmcgaWQsIGNsYXNzTmFtZSwgb3IgYXR0cmli
dXRlIHNob3VsZCBpbnZhbGlkYXRlIGRpc3RyaWJ1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaGF2ZSB0ZXN0IGNhc2VzIHRoYXQgaWQvY2xh
c3MvYXR0cmlidXRlIGlzIGNoYW5nZWQsIGFuZCB0aGllciByZXByb2plY3Rpb24gY2FzZXMuCisK
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmll
ZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1t
b2RpZmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0
aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRy
aWJ1dGUtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3Jl
cHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2Rp
ZmllZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVw
cm9qZWN0aW9uLWlkLW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTExICBLZWlzaGkg
SGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlYmFzZWxpbmUgbW9udGgv
d2VlayBhcHBlYXJhbmNlIHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40YzI4MmM3YzBkOTE1Y2QzNzEzNjM3NDJkMzEzOGQ2
OGQxMmZlNTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPGRpdiBpZD0iaG9z
dCI+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0cmlidXRl
LW1vZGlmaWVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdjMGU2MjJhZWE1ZDhiNTQ0NGRjYzk5OTQxNWJl
NWQ5Njg1MmEyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwKQEAgLTAsMCArMSwzMCBAQAor
PCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PkE8
L2Rpdj4KKyAgICA8ZGl2PkI8L2Rpdj4KKyAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2PkQ8L2Rp
dj4KKyAgICA8ZGl2PkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJGIj5GPC9kaXY+Cis8L2Rpdj4KKwor
PHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0KTsK
K3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iZGl2W3RpdGxlXSI+PC9j
b250ZW50Pic7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgRi50aXRsZSA9ICdzb21l
dGhpbmcnOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24t
Y2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDlhNjk1Y2UwYTc5
YzhkYWUyMDA2ZWYxZTYxM2YwN2EyMDI1NzQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJv
ZHk+CisKKzxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+QTwvZGl2PgorICAgIDxkaXY+RDwvZGl2
PgorICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1t
b2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NDhlMGRlMzM5YjA2MzNlZDcxYzljZmFmOWM0ZjNj
Mjg3MjYwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwh
RE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBjbGFz
cz0ic2VsZWN0ZWQiPkE8L2Rpdj4KKyAgICA8ZGl2PkI8L2Rpdj4KKyAgICA8ZGl2PkM8L2Rpdj4K
KyAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZCI+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAg
IDxkaXYgaWQ9IkYiPkY8L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9v
dCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOworc2hhZG93Um9vdC5pbm5lckhUTUwgPSAn
PGNvbnRlbnQgc2VsZWN0PSIuc2VsZWN0ZWQiPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1
bmN0aW9uKCkgeworICAgIEYuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKKyAgICBpZiAod2luZG93
LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8
L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40YzI4MmM3YzBkOTE1Y2QzNzEzNjM3NDJkMzEzOGQ2OGQxMmZlNTIyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1t
b2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgor
Cis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PkY8L2Rpdj4KKzwv
ZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGUzNWNlNzliNmI3
NGYxZmU1NDRkMzRjOWNkZDE4YWEyMzAwYjRhYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQuaHRtbApAQCAtMCww
ICsxLDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPHNjcmlwdCBz
cmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QiPgor
ICAgIDxkaXYgaWQ9InNlbGVjdGVkIj5BPC9kaXY+CisgICAgPGRpdj5CPC9kaXY+CisgICAgPGRp
dj5DPC9kaXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBp
ZD0iRiI+RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290ID0gbmV3
IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7CitzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVu
dCBzZWxlY3Q9IiNzZWxlY3RlZCI+PC9jb250ZW50Pic7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24o
KSB7CisgICAgQSA9IHNlbGVjdGVkOworICAgIEYuaWQgPSAnc2VsZWN0ZWQnOyAgICAKKyAgICBB
LmlkID0gJyc7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmll
ZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlv
bi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTVhNDIxOWE3
ZTcwY2NjOWVmZDJlODVjM2M0OGVhOTZiOTJjOGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhw
ZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8
Ym9keT4KKworPGRpdiBpZD0iaG9zdCI+PGRpdj4KKyAgICA8ZGl2PkY8L2Rpdj4KKzwvZGl2Pjwv
ZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
cmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zMzUxNjViMDFkOWJkNTYyYzU4YWQyMmEwMmEwYzhlYWRlMjkxZTBmCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUt
bW9kaWZpZWQuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+
Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+
CisKKzxkaXYgaWQ9Imhvc3QxIj4KKyAgICA8ZGl2PkE8L2Rpdj4KKyAgICA8ZGl2PkI8L2Rpdj4K
KyAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2PkQ8L2Rpdj4KKyAgICA8ZGl2PkU8L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJGIj5GPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwordmFyIHNoYWRvd1Jv
b3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1M
ID0gJzxkaXYgaWQ9Imhvc3QyIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2Pic7CisKK3ZhciBob3N0
MiA9IHNoYWRvd1Jvb3QxLmdldEVsZW1lbnRCeUlkKCdob3N0MicpOwordmFyIHNoYWRvd1Jvb3Qy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDIpOworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0g
Jzxjb250ZW50IHNlbGVjdD0iZGl2W3RpdGxlPXNlbGVjdGVkXSI+PC9jb250ZW50Pic7CisKK3Nl
dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgRi50aXRsZSA9ICdzZWxlY3RlZCc7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30s
IDApOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZp
ZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZWU4YTYwYzg4MTY2OWNlMDRhYWEwYzJkNjI5
NTFmNTIzOGJmNmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCww
ICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPGRpdiBpZD0i
aG9zdCI+PGRpdj4KKyAgICA8ZGl2PkE8L2Rpdj4KKyAgICA8ZGl2PkQ8L2Rpdj4KKyAgICA8ZGl2
PkY8L2Rpdj4KKzwvZGl2PjwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZp
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45NzNkYTY2NGFlMmYwNTM1ZWE0OTg0ZGQwYzlmMjIxZjk5YmY5
ZjgwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJv
amVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5
ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QxIj4KKyAgICA8ZGl2IGNsYXNzPSJz
ZWxlY3RlZCI+QTwvZGl2PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2PgorICAg
IDxkaXYgY2xhc3M9InNlbGVjdGVkIj5EPC9kaXY+CisgICAgPGRpdj5FPC9kaXY+CisgICAgPGRp
diBpZD0iRiI+RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290MSA9
IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8
ZGl2IGlkPSJob3N0MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDIgPSBz
aGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKTsKK3ZhciBzaGFkb3dSb290MiA9IG5l
dyBXZWJLaXRTaGFkb3dSb290KGhvc3QyKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8Y29u
dGVudCBzZWxlY3Q9Ii5zZWxlY3RlZCI+PC9jb250ZW50Pic7CisKK3NldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgRi5jbGFzc05hbWUgPSAnc2VsZWN0ZWQnOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2Ny
aXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jl
cHJvamVjdGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJlNWE0MjE5YTdlNzBjY2M5ZWZkMmU4NWMzYzQ4ZWE5NmI5MmM4YWIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlkLW1vZGlm
aWVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9Imhvc3QiPjxkaXY+CisgICAgPGRpdj5GPC9kaXY+Cis8
L2Rpdj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQwMDBi
ODQ2OGE4ZWI2YmEyOGJhYTQzMzFmNmEyZWNhMDY2ZDdkYWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlkLW1vZGlmaWVkLmh0bWwK
QEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJo
b3N0MSI+CisgICAgPGRpdiBpZD0ic2VsZWN0ZWQiPkE8L2Rpdj4KKyAgICA8ZGl2PkI8L2Rpdj4K
KyAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2PkQ8L2Rpdj4KKyAgICA8ZGl2PkU8L2Rpdj4KKyAg
ICA8ZGl2IGlkPSJGIj5GPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwordmFyIHNoYWRvd1Jv
b3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1M
ID0gJzxkaXYgaWQ9Imhvc3QyIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2Pic7CisKK3ZhciBob3N0
MiA9IHNoYWRvd1Jvb3QxLmdldEVsZW1lbnRCeUlkKCdob3N0MicpOwordmFyIHNoYWRvd1Jvb3Qy
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDIpOworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0g
Jzxjb250ZW50IHNlbGVjdD0iI3NlbGVjdGVkIj48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChm
dW5jdGlvbigpIHsKKyAgICBBID0gc2VsZWN0ZWQ7CisgICAgQS5pZCA9ICcnOworICAgIEYuaWQg
PSAnc2VsZWN0ZWQnOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173803</attachid>
            <date>2012-11-12 20:38:22 -0800</date>
            <delta_ts>2012-11-12 21:01:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100738-20121113133623.patch</filename>
            <type>text/plain</type>
            <size>27211</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcyODM1ZTFiNmQxMGFh
Nzg1MDkwZDg1NWEyZTI1YWU3NzE4NGE0NC4uMDcyZDYxN2YyYjdkNmEyYjhkNzViOTMzMDkwNWRk
MDdmYjM2OTAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDEyLTExLTEyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2luZyBp
ZCwgY2xhc3NOYW1lLCBvciBhdHRyaWJ1dGUgc2hvdWxkIGludmFsaWRhdGUgZGlzdHJpYnV0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGlk
LCBjbGFzc05hbWUsIG9yIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLCB3ZSBtaWdodCBoYXZlIHRvIGlu
dmFsaWRhdGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRv
IGRvIHVzZWxlc3MgaW52YWxpZGF0aW9uLiBTbyB3ZSBjb25zdWx0IHdpdGggdGhlIFJ1bGVGZWF0
dXJlU2V0IG9mIEVsZW1lbnRTaGFkb3csCisgICAgICAgIGFuZCBpbnZhbGlkYXRlIGRpc3RyaWJ1
dGlvbiBvbmx5IGlmIG5lY2Vzc2FyeS4KKworICAgICAgICBXaGVuIGNsYXNzTmFtZSBpcyBjaGFu
Z2VkLCB3ZSBjYW4gc2hhcmUgYSBsb3Qgb2YgY29kZSBiZXR3ZWVuIGludmFsaWRhdGluZyBkaXN0
cmlidXRpb24gYW5kIGludmFsaWRhdGluZyBzdHlsZS4KKyAgICAgICAgU28gd2UgbWFkZSBjaGVj
a05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZSBhIHRlbXBsYXRlIG1ldGhvZCwg
YW5kIHNoYXJlIGl0LgorCisgICAgICAgIEFsc28gd2UndmUgbWVhc3VyZWQgaG93IHRoaXMgcGF0
Y2ggbWFrZXMgY2hhbmdpbmcgYXR0cmlidXRlIHNsb3cuIEJ5IGNvbnZlcnRpbmcgY2hlY2tOZWVk
c1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UKKyAgICAgICAgdG8gdGVtcGxhdGUsIGFj
dHVhbGx5IHRoaXMgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9mIGNoYW5naW5nIGF0dHJpYnV0
ZSBjb2RlLiBJJ3ZlIG1lYXN1cmVkIGVhY2ggY29kZSAzIHRpbWVzLgorCisgICAgICAgIERPTS9N
b2RpZnlBdHRyaWJ1dGUuaHRtbAorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaDoKKyAgICAgICAg
ICAgICAgICBtZWRpYW4gIHN0ZGV2ICBtaW4gICAgICBtYXggICAgW21zXQorICAgICAgICAgIDFz
dCAgIDExNS42MiAgIDAuNjcgIDExNC43NSAgIDExNy4wMAorICAgICAgICAgIDJuZCAgIDExNS4w
OCAgIDEuMTMgIDExMy4yNSAgIDExNy41OAorICAgICAgICAgIDNyZCAgIDExNC43NSAgIDEuMTYg
IDExMy40MiAgIDExNy44MworCisgICAgICAgIEFmdGVyIHRoaXMgcGF0Y2g6CisgICAgICAgICAg
ICAgICAgbWVkaWFuICBzdGRldiAgbWluICAgICAgbWF4ICAgIFttc10KKyAgICAgICAgICAxc3Qg
ICAxMDIuNTUgICAwLjk1ICAxMDEuMjUgICAxMDQuNTAKKyAgICAgICAgICAybmQgICAxMDMuMTAg
ICAwLjg2ICAxMDIuMjAgICAxMDAuOTUKKyAgICAgICAgICAzcmQgICAxMDMuMzAgICAxLjA1ICAx
MDIuMTAgICAxMDYuNjUKKworICAgICAgICBUZXN0czogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1t
b2RpZmllZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9u
LWlkLW1vZGlmaWVkLmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbjo6U3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlv
bik6CisgICAgICAgIChTdHlsZUludmFsaWRhdGlvblByb3Bvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlSW52YWxpZGF0aW9uUHJvcG9zaXRpb246Om9wZXJhdG9yKCkpOiBBIHByb3Bv
c2l0aW9uIHdoaWNoIHJldHVybnMgdHJ1ZSBpZgorICAgICAgICBTdHlsZVJlc29sdmVyOjpoYXNT
ZWxlY3RvckZvckNsYXNzIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uUHJvcG9zaXRpb246OkRpc3RyaWJ1
dGlvbkludmFsaWRhdGlvblByb3Bvc2l0aW9uKTogQSBwcm9wb3NpdGlvbiB3aGljaAorICAgICAg
ICByZXR1cm5zIHRydWUgaWYgRWxlbWVudFNoYWRvdzo6aGFzU2VsZWN0b3JGb3JDbGFzcyByZXR1
cm5zIHRydWUuCisgICAgICAgIChEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Qcm9wb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Qcm9wb3NpdGlvbjo6
b3BlcmF0b3IoKSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3ND
aGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9y
Q2xhc3NDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOZWVkc0Rpc3RyaWJ1dGlvbklu
dmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNs
YXNzQXR0cmlidXRlQ2hhbmdlZCk6CisKIDIwMTItMTEtMTIgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZpbHRlciBkaXJ0eSByZWN0IHJlZ3Jl
c3Npb24gZnJvbSByMTM0MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggM2IxNDFlYzhhMTQx
MTgzZDQ4NTBhNTUzZjM5ZDg3ZGExY2ZlZGYxNy4uZDlmZTBlMGY2N2FkMWZiNjg1NjlmYjNhZWNj
NGJkYmZjYTk2NjgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNTMsNiArNTMsNyBAQAog
I2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJ
ZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUg
Ikluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCIKICNpbmNsdWRlICJN
dXRhdGlvblJlY29yZC5oIgpAQCAtNzYzLDggKzc2NCwxMyBAQCB2b2lkIEVsZW1lbnQ6OmF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5n
JiBuZQogICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJzaW9uKCk7CiAKICAgICBTdHlsZVJl
c29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlcklmRXhpc3Rz
KCk7CisgICAgRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9y
RGlzdHJpYnV0aW9uKHRoaXMpOworICAgIGlmIChlbGVtZW50U2hhZG93KQorICAgICAgICBlbGVt
ZW50U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CisKICAgICBib29s
IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBhdHRhY2hlZCgpICYmIHN0eWxlUmVzb2x2ZXIg
JiYgc3R5bGVDaGFuZ2VUeXBlKCkgPCBGdWxsU3R5bGVDaGFuZ2U7CiAgICAgYm9vbCBzaG91bGRJ
bnZhbGlkYXRlU3R5bGUgPSBmYWxzZTsKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVEaXN0cmli
dXRpb24gPSBmYWxzZTsKIAogICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShuYW1lKSkgewogICAg
ICAgICBBdG9taWNTdHJpbmcgb2xkSWQgPSBhdHRyaWJ1dGVEYXRhKCktPmlkRm9yU3R5bGVSZXNv
bHV0aW9uKCk7CkBAIC03NzIsNiArNzc4LDggQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmUKICAg
ICAgICAgaWYgKG5ld0lkICE9IG9sZElkKSB7CiAgICAgICAgICAgICBhdHRyaWJ1dGVEYXRhKCkt
PnNldElkRm9yU3R5bGVSZXNvbHV0aW9uKG5ld0lkKTsKICAgICAgICAgICAgIHNob3VsZEludmFs
aWRhdGVTdHlsZSA9IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgJiYgY2hlY2tOZWVkc1N0eWxl
SW52YWxpZGF0aW9uRm9ySWRDaGFuZ2Uob2xkSWQsIG5ld0lkLCBzdHlsZVJlc29sdmVyKTsKKyAg
ICAgICAgICAgIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24gfD0gZWxlbWVudFNoYWRvdyAm
JiAhb2xkSWQuaXNFbXB0eSgpICYmIGVsZW1lbnRTaGFkb3ctPnNlbGVjdFJ1bGVGZWF0dXJlU2V0
KCkuaGFzU2VsZWN0b3JGb3JJZChvbGRJZCk7CisgICAgICAgICAgICBzaG91bGRJbnZhbGlkYXRl
RGlzdHJpYnV0aW9uIHw9IGVsZW1lbnRTaGFkb3cgJiYgIW5ld0lkLmlzRW1wdHkoKSAmJiBlbGVt
ZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9ySWQobmV3SWQp
OyAgCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gSFRNTE5hbWVzOjpuYW1lQXR0
cikKICAgICAgICAgc2V0SGFzTmFtZSghbmV3VmFsdWUuaXNOdWxsKCkpOwpAQCAtNzc5LDEyICs3
ODcsMTUgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmUKICAgICAgICAgc2hvdWxkSW52YWxpZGF0
ZVN0eWxlIHw9IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgJiYgaXNJblNoYWRvd1RyZWUoKTsK
IAogICAgIHNob3VsZEludmFsaWRhdGVTdHlsZSB8PSB0ZXN0U2hvdWxkSW52YWxpZGF0ZVN0eWxl
ICYmIHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1l
KCkpOworICAgIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24gfD0gZWxlbWVudFNoYWRvdyAm
JiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQXR0
cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOwogCiAgICAgaW52YWxpZGF0ZU5vZGVMaXN0Q2FjaGVz
SW5BbmNlc3RvcnMoJm5hbWUsIHRoaXMpOwogCiAgICAgaWYgKHNob3VsZEludmFsaWRhdGVTdHls
ZSkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwotCisgICAgaWYgKHNob3VsZEludmFs
aWRhdGVEaXN0cmlidXRpb24pCisgICAgICAgIGVsZW1lbnRTaGFkb3ctPmludmFsaWRhdGVEaXN0
cmlidXRpb24oKTsKKyAgICAgICAgCiAgICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxp
dHlFbmFibGVkKCkpCiAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+aGFuZGxl
QXR0cmlidXRlQ2hhbmdlZChuYW1lLCB0aGlzKTsKIH0KQEAgLTgyMiwyMSArODMzLDQ5IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShjb25zdCBBdG9taWNTdHJp
bmcmIG5ld0NsYXNzU3RyaW5nKQogICAgIHJldHVybiBjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShu
ZXdDbGFzc1N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKTsKIH0KIAotc3RhdGljIGJvb2wg
Y2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxp
dFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCitz
dHJ1Y3QgU3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbiB7CisgICAgZXhwbGljaXQgU3R5bGVJ
bnZhbGlkYXRpb25Qcm9wb3NpdGlvbihTdHlsZVJlc29sdmVyKiByZXNvbHZlcikKKyAgICAgICAg
OiBzdHlsZVJlc29sdmVyKHJlc29sdmVyKQorICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcigp
KGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICB9
CisKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyOworfTsKKworc3RydWN0IERpc3Ry
aWJ1dGlvbkludmFsaWRhdGlvblByb3Bvc2l0aW9uIHsKKyAgICBleHBsaWNpdCBEaXN0cmlidXRp
b25JbnZhbGlkYXRpb25Qcm9wb3NpdGlvbihFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93KQor
ICAgICAgICA6IGVsZW1lbnRTaGFkb3coZWxlbWVudFNoYWRvdykKKyAgICB7IH0KKworICAgIGJv
b2wgb3BlcmF0b3IoKShjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhh
c1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICB9CisKKyAgICBFbGVtZW50U2hhZG93
KiBlbGVtZW50U2hhZG93OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgUHJvcG9zaXRpb24+Citz
dGF0aWMgYm9vbCBjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxp
dFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIFByb3Bvc2l0aW9uIHByb3Bvc2l0aW9uKQogewogICAg
IHVuc2lnbmVkIGNoYW5nZWRTaXplID0gY2hhbmdlZENsYXNzZXMuc2l6ZSgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjaGFuZ2VkU2l6ZTsgKytpKSB7Ci0gICAgICAgIGlmIChzdHls
ZVJlc29sdmVyLT5oYXNTZWxlY3RvckZvckNsYXNzKGNoYW5nZWRDbGFzc2VzW2ldKSkKKyAgICAg
ICAgaWYgKHByb3Bvc2l0aW9uKGNoYW5nZWRDbGFzc2VzW2ldKSkKICAgICAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBib29sIGNoZWNr
TmVlZHNTdHlsZUludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJp
bmcmIG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMsIFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCit0ZW1wbGF0ZTx0eXBlbmFtZSBQcm9wb3NpdGlvbj4K
K3N0YXRpYyBib29sIGNoZWNrUHJvcG9zaXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBTcGFjZVNw
bGl0U3RyaW5nJiBvbGRDbGFzc2VzLCBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBuZXdDbGFzc2Vz
LCBQcm9wb3NpdGlvbiBwcm9wb3NpdGlvbikKIHsKICAgICB1bnNpZ25lZCBvbGRTaXplID0gb2xk
Q2xhc3Nlcy5zaXplKCk7CiAgICAgaWYgKCFvbGRTaXplKQotICAgICAgICByZXR1cm4gY2hlY2tO
ZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UobmV3Q2xhc3Nlcywgc3R5bGVSZXNv
bHZlcik7CisgICAgICAgIHJldHVybiBjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3NDaGFuZ2UobmV3
Q2xhc3NlcywgcHJvcG9zaXRpb24pOwogICAgIEJpdFZlY3RvciByZW1haW5pbmdDbGFzc0JpdHM7
CiAgICAgcmVtYWluaW5nQ2xhc3NCaXRzLmVuc3VyZVNpemUob2xkU2l6ZSk7CiAgICAgLy8gQ2xh
c3MgdmVjdG9ycyB0ZW5kIHRvIGJlIHZlcnkgc2hvcnQuIFRoaXMgaXMgZmFzdGVyIHRoYW4gdXNp
bmcgYSBoYXNoIHRhYmxlLgpAQCAtODQ4LDI1ICs4ODcsNTAgQEAgc3RhdGljIGJvb2wgY2hlY2tO
ZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmlu
ZyYgb2wKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBpZiAoc3R5bGVSZXNvbHZlci0+aGFzU2VsZWN0b3JGb3JDbGFzcyhuZXdDbGFz
c2VzW2ldKSkKKyAgICAgICAgaWYgKHByb3Bvc2l0aW9uKG5ld0NsYXNzZXNbaV0pKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
bGRTaXplOyArK2kpIHsKICAgICAgICAgLy8gSWYgdGhlIGJpdCBpcyBub3Qgc2V0IHRoZSB0aGUg
Y29ycmVzcG9uZGluZyBjbGFzcyBoYXMgYmVlbiByZW1vdmVkLgogICAgICAgICBpZiAocmVtYWlu
aW5nQ2xhc3NCaXRzLnF1aWNrR2V0KGkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmIChzdHlsZVJlc29sdmVyLT5oYXNTZWxlY3RvckZvckNsYXNzKG9sZENsYXNzZXNbaV0pKQor
ICAgICAgICBpZiAocHJvcG9zaXRpb24ob2xkQ2xhc3Nlc1tpXSkpCiAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgaW5saW5lIGJv
b2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIp
Cit7CisgICAgcmV0dXJuIGNoZWNrUHJvcG9zaXRpb25Gb3JDbGFzc0NoYW5nZShjaGFuZ2VkQ2xh
c3NlcywgU3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbihzdHlsZVJlc29sdmVyKSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0No
YW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzLCBjb25zdCBTcGFjZVNwbGl0
U3RyaW5nJiBuZXdDbGFzc2VzLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQoreworICAg
IHJldHVybiBjaGVja1Byb3Bvc2l0aW9uRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xh
c3NlcywgU3R5bGVJbnZhbGlkYXRpb25Qcm9wb3NpdGlvbihzdHlsZVJlc29sdmVyKSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzRGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uRm9y
Q2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIEVsZW1l
bnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cpCit7CisgICAgcmV0dXJuIGNoZWNrUHJvcG9zaXRpb25G
b3JDbGFzc0NoYW5nZShjaGFuZ2VkQ2xhc3NlcywgRGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uUHJv
cG9zaXRpb24oZWxlbWVudFNoYWRvdykpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgY2hlY2tO
ZWVkc0Rpc3RyaWJ1dGlvbkludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3Bs
aXRTdHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMs
IEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFkb3cpCit7CisgICAgcmV0dXJuIGNoZWNrUHJvcG9z
aXRpb25Gb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBuZXdDbGFzc2VzLCBEaXN0cmlidXRpb25J
bnZhbGlkYXRpb25Qcm9wb3NpdGlvbihlbGVtZW50U2hhZG93KSk7Cit9CisKIHZvaWQgRWxlbWVu
dDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJp
bmcpCiB7CiAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGRvY3VtZW50KCktPnN0
eWxlUmVzb2x2ZXJJZkV4aXN0cygpOwogICAgIGJvb2wgdGVzdFNob3VsZEludmFsaWRhdGVTdHls
ZSA9IGF0dGFjaGVkKCkgJiYgc3R5bGVSZXNvbHZlciAmJiBzdHlsZUNoYW5nZVR5cGUoKSA8IEZ1
bGxTdHlsZUNoYW5nZTsKICAgICBib29sIHNob3VsZEludmFsaWRhdGVTdHlsZSA9IGZhbHNlOwog
CisgICAgRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFyZW50Rm9yRGlz
dHJpYnV0aW9uKHRoaXMpOworICAgIGlmIChlbGVtZW50U2hhZG93KQorICAgICAgICBlbGVtZW50
U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CisgICAgYm9vbCBzaG91
bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uID0gZmFsc2U7CisKICAgICBpZiAoY2xhc3NTdHJpbmdI
YXNDbGFzc05hbWUobmV3Q2xhc3NTdHJpbmcpKSB7CiAgICAgICAgIGNvbnN0IEVsZW1lbnRBdHRy
aWJ1dGVEYXRhKiBhdHRyaWJ1dGVEYXRhID0gZW5zdXJlQXR0cmlidXRlRGF0YSgpOwogICAgICAg
ICBjb25zdCBib29sIHNob3VsZEZvbGRDYXNlID0gZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7
CkBAIC04NzYsMTAgKzk0MCwxMSBAQCB2b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogCiAgICAgICAgIGNvbnN0IFNw
YWNlU3BsaXRTdHJpbmcmIG5ld0NsYXNzZXMgPSBhdHRyaWJ1dGVEYXRhLT5jbGFzc05hbWVzKCk7
CiAgICAgICAgIHNob3VsZEludmFsaWRhdGVTdHlsZSA9IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5
bGUgJiYgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3Nl
cywgbmV3Q2xhc3Nlcywgc3R5bGVSZXNvbHZlcik7CisgICAgICAgIHNob3VsZEludmFsaWRhdGVE
aXN0cmlidXRpb24gPSBlbGVtZW50U2hhZG93ICYmIGNoZWNrTmVlZHNEaXN0cmlidXRpb25JbnZh
bGlkYXRpb25Gb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBuZXdDbGFzc2VzLCBlbGVtZW50U2hh
ZG93KTsKICAgICB9IGVsc2UgaWYgKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1
dGVEYXRhID0gdGhpcy0+YXR0cmlidXRlRGF0YSgpKSB7CiAgICAgICAgIGNvbnN0IFNwYWNlU3Bs
aXRTdHJpbmcmIG9sZENsYXNzZXMgPSBhdHRyaWJ1dGVEYXRhLT5jbGFzc05hbWVzKCk7CiAgICAg
ICAgIHNob3VsZEludmFsaWRhdGVTdHlsZSA9IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgJiYg
Y2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3Nlcywgc3R5
bGVSZXNvbHZlcik7Ci0KKyAgICAgICAgc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbiA9IGVs
ZW1lbnRTaGFkb3cgJiYgY2hlY2tOZWVkc0Rpc3RyaWJ1dGlvbkludmFsaWRhdGlvbkZvckNsYXNz
Q2hhbmdlKG9sZENsYXNzZXMsIGVsZW1lbnRTaGFkb3cpOwogICAgICAgICBhdHRyaWJ1dGVEYXRh
LT5jbGVhckNsYXNzKCk7CiAgICAgfQogCkBAIC04ODgsNiArOTUzLDggQEAgdm9pZCBFbGVtZW50
OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmlu
ZykKIAogICAgIGlmIChzaG91bGRJbnZhbGlkYXRlU3R5bGUpCiAgICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKKyAgICBpZiAoc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbikKKyAgICAg
ICAgZWxlbWVudFNoYWRvdy0+aW52YWxpZGF0ZURpc3RyaWJ1dGlvbigpOwogfQogCiAvLyBSZXR1
cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBhbiBldmVudCBoYW5kbGVyLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDE3MzdjZTJjOGRmOWI1NTBlZTM1YjlhOWVjM2IzYzYxODllYzM3NmIuLmJkOTgwMTYyNTg4
MjNiYjE0MDA4ODVmYTZlZDY2YTYwYjQ4OTE0MmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAx
Mi0xMS0xMiAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQ2hhbmdpbmcgaWQsIGNsYXNzTmFtZSwgb3IgYXR0cmlidXRlIHNob3VsZCBpbnZhbGlkYXRl
IGRpc3RyaWJ1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAwNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2UgaGF2ZSB0ZXN0IGNhc2VzIHRoYXQgaWQvY2xhc3MvYXR0cmlidXRlIGlzIGNoYW5n
ZWQsIGFuZCB0aGllciByZXByb2plY3Rpb24gY2FzZXMuCisKKyAgICAgICAgKiBmYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2Rp
ZmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLWV4cGVj
dGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24t
aWQtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlcHJv
amVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUt
bW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93
L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlkLW1vZGlmaWVk
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTEyICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxyYXBo
YWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFdlYktpdDEgZ2Fy
ZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNGMyODJjN2MwZDkxNWNkMzcxMzYzNzQyZDMxMzhkNjhkMTJmZTUyMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24t
YXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+
RjwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmI3YzBlNjIyYWVhNWQ4YjU0NDRkY2M5OTk0MTViZTVkOTY4NTJhMjYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1s
PgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpz
Ij48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj5BPC9kaXY+CisgICAgPGRp
dj5CPC9kaXY+CisgICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5F
PC9kaXY+CisgICAgPGRpdiBpZD0iRiI+RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3Zh
ciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7CitzaGFkb3dSb290Lmlu
bmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdlt0aXRsZV0iPjwvY29udGVudD4nOworCitz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEYudGl0bGUgPSAnc29tZXRoaW5nJzsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
fSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2Rp
ZmllZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTY5NWNlMGE3OWM4ZGFlMjAwNmVmMWU2
MTNmMDdhMjAyNTc0OWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlk
PSJob3N0Ij4KKyAgICA8ZGl2PkE8L2Rpdj4KKyAgICA8ZGl2PkQ8L2Rpdj4KKyAgICA8ZGl2PkY8
L2Rpdj4KKzwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5kNTQ4ZTBkZTMzOWIwNjMzZWQ3MWM5Y2ZhZjljNGYzYzI4NzI2MDIwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1j
bGFzc05hbWUtbW9kaWZpZWQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4K
KworPGh0bWw+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+
PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkIj5B
PC9kaXY+CisgICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdiBjbGFz
cz0ic2VsZWN0ZWQiPkQ8L2Rpdj4KKyAgICA8ZGl2PkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJGIj5G
PC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0
ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0
U2hhZG93Um9vdChob3N0KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVj
dD0iLnNlbGVjdGVkIj48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAg
ICBGLmNsYXNzTmFtZSA9ICdzZWxlY3RlZCc7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyODJj
N2MwZDkxNWNkMzcxMzYzNzQyZDMxMzhkNjhkMTJmZTUyMgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQtZXhwZWN0
ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9k
eT4KKworPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rpdj4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1p
ZC1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlv
bi1pZC1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlMzVjZTc5YjZiNzRmMWZlNTQ0ZDM0Yzlj
ZGQxOGFhMjMwMGI0YWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
cG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IGlkPSJz
ZWxlY3RlZCI+QTwvZGl2PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2PgorICAg
IDxkaXY+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rpdj4K
KzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dS
b290KGhvc3QpOworc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIjc2Vs
ZWN0ZWQiPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEEgPSBz
ZWxlY3RlZDsKKyAgICBGLmlkID0gJ3NlbGVjdGVkJzsgICAgCisgICAgQS5pZCA9ICcnOworICAg
IGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1v
ZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1YTQyMTlhN2U3MGNjYzllZmQyZTg1
YzNjNDhlYTk2YjkyYzhhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxkaXYg
aWQ9Imhvc3QiPjxkaXY+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rpdj48L2Rpdj4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1h
dHRyaWJ1dGUtbW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzM1MTY1YjAxZDli
ZDU2MmM1OGFkMjJhMDJhMGM4ZWFkZTI5MWUwZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwK
QEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJo
b3N0MSI+CisgICAgPGRpdj5BPC9kaXY+CisgICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9k
aXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+
RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJo
b3N0MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDIgPSBzaGFkb3dSb290
MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKTsKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KGhvc3QyKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxl
Y3Q9ImRpdlt0aXRsZT1zZWxlY3RlZF0iPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeworICAgIEYudGl0bGUgPSAnc2VsZWN0ZWQnOworICAgIGlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJv
amVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGVlOGE2MGM4ODE2NjljZTA0YWFhMGMyZDYyOTUxZjUyMzhiZjZkYwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rp
b24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9Imhvc3QiPjxkaXY+Cisg
ICAgPGRpdj5BPC9kaXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rp
dj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTczZGE2NjRhZTJmMDUzNWVhNDk4NGRkMGM5ZjIyMWY5OWJmOWY4MAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NO
YW1lLW1vZGlmaWVkLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2Ny
aXB0PgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQiPkE8L2Rp
dj4KKyAgICA8ZGl2PkI8L2Rpdj4KKyAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJz
ZWxlY3RlZCI+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rp
dj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIi
PjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKKwordmFyIGhvc3QyID0gc2hhZG93Um9vdDEuZ2V0
RWxlbWVudEJ5SWQoJ2hvc3QyJyk7Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChob3N0Mik7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIu
c2VsZWN0ZWQiPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEYu
Y2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQt
bW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTVhNDIxOWE3
ZTcwY2NjOWVmZDJlODVjM2M0OGVhOTZiOTJjOGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5Pgor
Cis8ZGl2IGlkPSJob3N0Ij48ZGl2PgorICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+PC9kaXY+CisK
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2pl
Y3Rpb24taWQtbW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24taWQtbW9kaWZpZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MDAwYjg0NjhhOGViNmJhMjhi
YWE0MzMxZjZhMmVjYTA2NmQ3ZGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzYg
QEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxk
aXYgaWQ9InNlbGVjdGVkIj5BPC9kaXY+CisgICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9k
aXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+
RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRvd1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJo
b3N0MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rpdj4nOworCit2YXIgaG9zdDIgPSBzaGFkb3dSb290
MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKTsKK3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRT
aGFkb3dSb290KGhvc3QyKTsKK3NoYWRvd1Jvb3QyLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxl
Y3Q9IiNzZWxlY3RlZCI+PC9jb250ZW50Pic7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7Cisg
ICAgQSA9IHNlbGVjdGVkOworICAgIEEuaWQgPSAnJzsKKyAgICBGLmlkID0gJ3NlbGVjdGVkJzsK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNl
VGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjZhZDFi
YWZiZjRiMDE3Y2JkNTBkZWFkMTNiMjNkNGVlYzYxYjQ5Yi4uYjQwZDA5ZmI3M2YxODliNmFkZjU2
NjNkN2M0MjVkNjI1OGZjMmU2ZCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
Mi0xMS0xMiAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQ2hhbmdpbmcgaWQsIGNsYXNzTmFtZSwgb3IgYXR0cmlidXRlIHNob3VsZCBpbnZhbGlkYXRl
IGRpc3RyaWJ1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAwNzM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgdGVzdCBjb2RlIHRvIG1vZGlmeSBpZC9jbGFzcy9hdHRyaWJ1dGUuCisKKyAg
ICAgICAgKiBET00vTW9kaWZ5QXR0cmlidXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIERPTS9y
ZXNvdXJjZXMvZG9tLXBlcmYvbW9kaWZ5LWF0dHJpYnV0ZS5qczogQWRkZWQuCisgICAgICAgIChN
b2RpZnlBdHRyaWJ1dGUuQ3JlYXRlRWxlbWVudFRvU2V0VXApOgorICAgICAgICAoTW9kaWZ5QXR0
cmlidXRlLk1vZGlmeUlkKToKKyAgICAgICAgKE1vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlDbGFzcyk6
CisgICAgICAgIChNb2RpZnlBdHRyaWJ1dGUuTW9kaWZ5VGl0bGUpOgorCiAyMDEyLTExLTA2ICBB
ZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRE9NSW1wbGVtZW50YXRp
b24gc2hvdWxkIHVzZSBTY3JpcHRXcmFwcGFibGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvRE9NL01vZGlmeUF0dHJpYnV0ZS5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9ET00vTW9kaWZ5
QXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFlMjU5YzlmZDM0Yjc1OTg3NmUyZDQwN2I5MDIy
Zjc1NTcwMDE0NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvRE9NL01vZGlm
eUF0dHJpYnV0ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PHNwYW4gaWQ9ImJlbmNobWFya19jb250ZW50
Ij48L3NwYW4+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9y
ZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9InJlc291cmNlcy9kb20tcGVyZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvZG9tLXBlcmYvbW9kaWZ5LWF0dHJpYnV0
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PnJ1bkJlbmNobWFya1N1aXRlKE1vZGlmeUF0dHJpYnV0
ZVRlc3QpOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9ET00vcmVzb3VyY2VzL2RvbS1wZXJmL21vZGlmeS1hdHRyaWJ1dGUuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL0RPTS9yZXNvdXJjZXMvZG9tLXBlcmYvbW9kaWZ5LWF0dHJpYnV0ZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYjZlNDE5NGU2ZmE3ZGYwOTY5M2JhYmMwMTg1OWQ1NDY2MDBmNzk0Ci0tLSAv
ZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9ET00vcmVzb3VyY2VzL2RvbS1wZXJmL21v
ZGlmeS1hdHRyaWJ1dGUuanMKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIE1vZGlmeUF0dHJpYnV0ZSAtIG1l
YXN1cmUgYXR0cmlidXRlIG1vZGlmaWNhdGlvbiBwZXJmb3JtYW5jZQorCit2YXIgTW9kaWZ5QXR0
cmlidXRlID0ge307Cit2YXIgbkxvb3BzID0gMTAwMDAwOworCitNb2RpZnlBdHRyaWJ1dGUuQ3Jl
YXRlRWxlbWVudFRvU2V0VXAgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7Cit9CisKK01vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlJZCA9IGZ1bmN0
aW9uKGVsZW1lbnQpIHsKKyAgICB2YXIgbkxvb3BzID0gd2luZG93Lm5Mb29wczsKKyAgICB2YXIg
aWRWYWx1ZTEgPSAnaWQxJzsKKyAgICB2YXIgaWRWYWx1ZTIgPSAnaWQyJzsKKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbkxvb3BzOyArK2kpIHsKKyAgICAgICAgZWxlbWVudC5pZCA9IGlkVmFs
dWUxOworICAgICAgICBlbGVtZW50LmlkID0gaWRWYWx1ZTI7ICAgICAgICAgICAgICAgICAgICAg
ICAgCisgICAgfQorfQorCitNb2RpZnlBdHRyaWJ1dGUuTW9kaWZ5Q2xhc3MgPSBmdW5jdGlvbihl
bGVtZW50KSB7CisgICAgdmFyIG5Mb29wcyA9IHdpbmRvdy5uTG9vcHM7CisgICAgdmFyIGNsYXNz
TmFtZTEgPSAnY2xhc3MxJzsKKyAgICB2YXIgY2xhc3NOYW1lMiA9ICdjbGFzczInOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuTG9vcHM7ICsraSkgeworICAgICAgICBlbGVtZW50LmNsYXNz
TmFtZSA9IGNsYXNzTmFtZTE7CisgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1l
MjsKKyAgICB9Cit9CisKK01vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlUaXRsZSA9IGZ1bmN0aW9uKGVs
ZW1lbnQpIHsKKyAgICB2YXIgbkxvb3BzID0gd2luZG93Lm5Mb29wczsKKyAgICB2YXIgdGl0bGUx
ID0gJ3RpdGxlMSc7CisgICAgdmFyIHRpdGxlMiA9ICd0aXRsZTInOworCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBuTG9vcHM7ICsraSkgeworICAgICAgICBlbGVtZW50LnRpdGxlID0gdGl0bGUx
OworICAgICAgICBlbGVtZW50LnRpdGxlID0gdGl0bGUyOworICAgIH0KK30KKwordmFyIE1vZGlm
eUF0dHJpYnV0ZVRlc3QgPSBuZXcgQmVuY2htYXJrU3VpdGUoJ01vZGlmeUF0dHJpYnV0ZScsIFsK
KyAgICBuZXcgQmVuY2htYXJrKCJNb2RpZnkgaWQiLCBNb2RpZnlBdHRyaWJ1dGUuTW9kaWZ5SWQs
IE1vZGlmeUF0dHJpYnV0ZS5DcmVhdGVFbGVtZW50VG9TZXRVcCksCisgICAgbmV3IEJlbmNobWFy
aygiTW9kaWZ5IGNsYXNzIiwgTW9kaWZ5QXR0cmlidXRlLk1vZGlmeUNsYXNzLCBNb2RpZnlBdHRy
aWJ1dGUuQ3JlYXRlRWxlbWVudFRvU2V0VXApLAorICAgIG5ldyBCZW5jaG1hcmsoIk1vZGlmeSB0
aXRsZSIsIE1vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlUaXRsZSwgTW9kaWZ5QXR0cmlidXRlLkNyZWF0
ZUVsZW1lbnRUb1NldFVwKQorXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173807</attachid>
            <date>2012-11-12 21:01:30 -0800</date>
            <delta_ts>2012-11-16 00:31:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100738-20121113135930.patch</filename>
            <type>text/plain</type>
            <size>27188</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0MzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcyODM1ZTFiNmQxMGFh
Nzg1MDkwZDg1NWEyZTI1YWU3NzE4NGE0NC4uYmJkNTE3NGU2MzcyOWI4ZDkzODdhZjA1ODM3ZDEw
YWJmODk4NzdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTExLTEyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2luZyBp
ZCwgY2xhc3NOYW1lLCBvciBhdHRyaWJ1dGUgc2hvdWxkIGludmFsaWRhdGUgZGlzdHJpYnV0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGlk
LCBjbGFzc05hbWUsIG9yIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLCB3ZSBtaWdodCBoYXZlIHRvIGlu
dmFsaWRhdGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRv
IGRvIHVzZWxlc3MgaW52YWxpZGF0aW9uLiBTbyB3ZSBjb25zdWx0IHdpdGggdGhlIFJ1bGVGZWF0
dXJlU2V0IG9mIEVsZW1lbnRTaGFkb3csCisgICAgICAgIGFuZCBpbnZhbGlkYXRlIGRpc3RyaWJ1
dGlvbiBvbmx5IGlmIG5lY2Vzc2FyeS4KKworICAgICAgICBXaGVuIGNsYXNzTmFtZSBpcyBjaGFu
Z2VkLCB3ZSBjYW4gc2hhcmUgYSBsb3Qgb2YgY29kZSBiZXR3ZWVuIGludmFsaWRhdGluZyBkaXN0
cmlidXRpb24gYW5kIGludmFsaWRhdGluZyBzdHlsZS4KKyAgICAgICAgU28gd2UgbWFkZSBjaGVj
a05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZSBhIHRlbXBsYXRlIG1ldGhvZCwg
YW5kIHNoYXJlIGl0LgorCisgICAgICAgIEFsc28gd2UndmUgbWVhc3VyZWQgaG93IHRoaXMgcGF0
Y2ggbWFrZXMgY2hhbmdpbmcgYXR0cmlidXRlIHNsb3cuIEJ5IGNvbnZlcnRpbmcgY2hlY2tOZWVk
c1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UKKyAgICAgICAgdG8gdGVtcGxhdGUsIGFj
dHVhbGx5IHRoaXMgaW1wcm92ZXMgdGhlIHBlcmZvcm1hbmNlIG9mIGNoYW5naW5nIGF0dHJpYnV0
ZSBjb2RlLiBJJ3ZlIG1lYXN1cmVkIGVhY2ggY29kZSAzIHRpbWVzLgorCisgICAgICAgIERPTS9N
b2RpZnlBdHRyaWJ1dGUuaHRtbAorICAgICAgICBCZWZvcmUgdGhpcyBwYXRjaDoKKyAgICAgICAg
ICAgICAgICBtZWRpYW4gIHN0ZGV2ICBtaW4gICAgICBtYXggICAgW21zXQorICAgICAgICAgIDFz
dCAgIDExNS42MiAgIDAuNjcgIDExNC43NSAgIDExNy4wMAorICAgICAgICAgIDJuZCAgIDExNS4w
OCAgIDEuMTMgIDExMy4yNSAgIDExNy41OAorICAgICAgICAgIDNyZCAgIDExNC43NSAgIDEuMTYg
IDExMy40MiAgIDExNy44MworCisgICAgICAgIEFmdGVyIHRoaXMgcGF0Y2g6CisgICAgICAgICAg
ICAgICAgbWVkaWFuICBzdGRldiAgbWluICAgICAgbWF4ICAgIFttc10KKyAgICAgICAgICAxc3Qg
ICAxMDIuNTUgICAwLjk1ICAxMDEuMjUgICAxMDQuNTAKKyAgICAgICAgICAybmQgICAxMDMuMTAg
ICAwLjg2ICAxMDIuMjAgICAxMDAuOTUKKyAgICAgICAgICAzcmQgICAxMDMuMzAgICAxLjA1ICAx
MDIuMTAgICAxMDYuNjUKKworICAgICAgICBUZXN0czogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1t
b2RpZmllZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9u
LWlkLW1vZGlmaWVkLmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVuY3Rvcjo6SGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxl
RnVuY3Rvcik6CisgICAgICAgIChIYXNTZWxlY3RvckZvckNsYXNzU3R5bGVGdW5jdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6Okhhc1NlbGVjdG9yRm9yQ2xhc3NTdHlsZUZ1bmN0b3I6Om9wZXJhdG9y
KCkpOiBSZXR1cm5zIHRydWUgaWYgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JDbGFzcyBy
ZXR1cm5zIHRydWUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okhhc1Nl
bGVjdG9yRm9yQ2xhc3NEaXN0cmlidXRpb25GdW5jdG9yOjpIYXNTZWxlY3RvckZvckNsYXNzRGlz
dHJpYnV0aW9uRnVuY3Rvcik6CisgICAgICAgIChIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJpYnV0
aW9uRnVuY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJp
YnV0aW9uRnVuY3Rvcjo6b3BlcmF0b3IoKSk6IFJldHVybnMgdHJ1ZSBpZiBFbGVtZW50U2hhZG93
OjpoYXNTZWxlY3RvckZvckNsYXNzIHJldHVybnMgdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OmNo
ZWNrRnVuY3RvckZvckNsYXNzQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrTmVlZHNT
dHlsZUludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKTogRXh0YWN0ZWQgdGhlIGltcGxlbWVudGF0
aW9uIHRvIGNoZWNrRnVuY3RvckZvckNsYXNzQ2hhbmdlLgorICAgICAgICAoV2ViQ29yZTo6Y2hl
Y2tOZWVkc0Rpc3RyaWJ1dGlvbkludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdlZCk6CisKIDIwMTItMTEtMTIg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGZp
bHRlciBkaXJ0eSByZWN0IHJlZ3Jlc3Npb24gZnJvbSByMTM0MzExCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKaW5kZXggM2IxNDFlYzhhMTQxMTgzZDQ4NTBhNTUzZjM5ZDg3ZGExY2ZlZGYxNy4uYTZjYjdj
ZjY3MTZlYTkwZTJiNjk4YzQyNGFiZDRiMzVhNWZlOWY1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cApAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgog
I2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29s
bGVjdGlvbi5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0
R3JvdXAuaCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgpAQCAtNzYzLDggKzc2NCwxMyBA
QCB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFt
ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZQogICAgIGRvY3VtZW50KCktPmluY0RPTVRyZWVWZXJz
aW9uKCk7CiAKICAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0gZG9jdW1lbnQoKS0+
c3R5bGVSZXNvbHZlcklmRXhpc3RzKCk7CisgICAgRWxlbWVudFNoYWRvdyogZWxlbWVudFNoYWRv
dyA9IHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpOworICAgIGlmIChlbGVtZW50
U2hhZG93KQorICAgICAgICBlbGVtZW50U2hhZG93LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29s
bGVjdGVkKCk7CisKICAgICBib29sIHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBhdHRhY2hl
ZCgpICYmIHN0eWxlUmVzb2x2ZXIgJiYgc3R5bGVDaGFuZ2VUeXBlKCkgPCBGdWxsU3R5bGVDaGFu
Z2U7CiAgICAgYm9vbCBzaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBmYWxzZTsKKyAgICBib29sIHNo
b3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24gPSBmYWxzZTsKIAogICAgIGlmIChpc0lkQXR0cmli
dXRlTmFtZShuYW1lKSkgewogICAgICAgICBBdG9taWNTdHJpbmcgb2xkSWQgPSBhdHRyaWJ1dGVE
YXRhKCktPmlkRm9yU3R5bGVSZXNvbHV0aW9uKCk7CkBAIC03NzIsNiArNzc4LDggQEAgdm9pZCBF
bGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmUKICAgICAgICAgaWYgKG5ld0lkICE9IG9sZElkKSB7CiAgICAgICAg
ICAgICBhdHRyaWJ1dGVEYXRhKCktPnNldElkRm9yU3R5bGVSZXNvbHV0aW9uKG5ld0lkKTsKICAg
ICAgICAgICAgIHNob3VsZEludmFsaWRhdGVTdHlsZSA9IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5
bGUgJiYgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9ySWRDaGFuZ2Uob2xkSWQsIG5ld0lk
LCBzdHlsZVJlc29sdmVyKTsKKyAgICAgICAgICAgIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRp
b24gfD0gZWxlbWVudFNoYWRvdyAmJiAhb2xkSWQuaXNFbXB0eSgpICYmIGVsZW1lbnRTaGFkb3ct
PnNlbGVjdFJ1bGVGZWF0dXJlU2V0KCkuaGFzU2VsZWN0b3JGb3JJZChvbGRJZCk7CisgICAgICAg
ICAgICBzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uIHw9IGVsZW1lbnRTaGFkb3cgJiYgIW5l
d0lkLmlzRW1wdHkoKSAmJiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhh
c1NlbGVjdG9yRm9ySWQobmV3SWQpOyAgCiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKG5hbWUg
PT0gSFRNTE5hbWVzOjpuYW1lQXR0cikKICAgICAgICAgc2V0SGFzTmFtZSghbmV3VmFsdWUuaXNO
dWxsKCkpOwpAQCAtNzc5LDEyICs3ODcsMTUgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmUKICAg
ICAgICAgc2hvdWxkSW52YWxpZGF0ZVN0eWxlIHw9IHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUg
JiYgaXNJblNoYWRvd1RyZWUoKTsKIAogICAgIHNob3VsZEludmFsaWRhdGVTdHlsZSB8PSB0ZXN0
U2hvdWxkSW52YWxpZGF0ZVN0eWxlICYmIHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQXR0
cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOworICAgIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRp
b24gfD0gZWxlbWVudFNoYWRvdyAmJiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNl
dCgpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1lKCkpOwogCiAgICAgaW52
YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzSW5BbmNlc3RvcnMoJm5hbWUsIHRoaXMpOwogCiAgICAgaWYg
KHNob3VsZEludmFsaWRhdGVTdHlsZSkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYygpOwot
CisgICAgaWYgKHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24pCisgICAgICAgIGVsZW1lbnRT
aGFkb3ctPmludmFsaWRhdGVEaXN0cmlidXRpb24oKTsKKyAgICAgICAgCiAgICAgaWYgKEFYT2Jq
ZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgIGRvY3VtZW50KCktPmF4
T2JqZWN0Q2FjaGUoKS0+aGFuZGxlQXR0cmlidXRlQ2hhbmdlZChuYW1lLCB0aGlzKTsKIH0KQEAg
LTgyMiwyMSArODMzLDQ5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjbGFzc1N0cmluZ0hhc0NsYXNz
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogICAgIHJldHVybiBjbGFz
c1N0cmluZ0hhc0NsYXNzTmFtZShuZXdDbGFzc1N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVuZ3Ro
KTsKIH0KIAotc3RhdGljIGJvb2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3ND
aGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIpCitzdHJ1Y3QgSGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVuY3Rv
ciB7CisgICAgZXhwbGljaXQgSGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVuY3RvcihTdHlsZVJl
c29sdmVyKiByZXNvbHZlcikKKyAgICAgICAgOiBzdHlsZVJlc29sdmVyKHJlc29sdmVyKQorICAg
IHsgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1l
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9y
Rm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICB9CisKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJl
c29sdmVyOworfTsKKworc3RydWN0IEhhc1NlbGVjdG9yRm9yQ2xhc3NEaXN0cmlidXRpb25GdW5j
dG9yIHsKKyAgICBleHBsaWNpdCBIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJpYnV0aW9uRnVuY3Rv
cihFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93KQorICAgICAgICA6IGVsZW1lbnRTaGFkb3co
ZWxlbWVudFNoYWRvdykKKyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBBdG9t
aWNTdHJpbmcmIGNsYXNzTmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlbGVtZW50
U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NO
YW1lKTsKKyAgICB9CisKKyAgICBFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93OworfTsKKwor
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3N0YXRpYyBib29sIGNoZWNrRnVuY3RvckZvckNs
YXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNoYW5nZWRDbGFzc2VzLCBGdW5jdG9y
IGZ1bmN0b3IpCiB7CiAgICAgdW5zaWduZWQgY2hhbmdlZFNpemUgPSBjaGFuZ2VkQ2xhc3Nlcy5z
aXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoYW5nZWRTaXplOyArK2kpIHsK
LSAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2hhbmdlZENs
YXNzZXNbaV0pKQorICAgICAgICBpZiAoZnVuY3RvcihjaGFuZ2VkQ2xhc3Nlc1tpXSkpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0
aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBT
cGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzLCBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBuZXdD
bGFzc2VzLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQordGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4KK3N0YXRpYyBib29sIGNoZWNrRnVuY3RvckZvckNsYXNzQ2hhbmdlKGNvbnN0IFNw
YWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5ld0Ns
YXNzZXMsIEZ1bmN0b3IgZnVuY3RvcikKIHsKICAgICB1bnNpZ25lZCBvbGRTaXplID0gb2xkQ2xh
c3Nlcy5zaXplKCk7CiAgICAgaWYgKCFvbGRTaXplKQotICAgICAgICByZXR1cm4gY2hlY2tOZWVk
c1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UobmV3Q2xhc3Nlcywgc3R5bGVSZXNvbHZl
cik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0b3JGb3JDbGFzc0NoYW5nZShuZXdDbGFzc2Vz
LCBmdW5jdG9yKTsKICAgICBCaXRWZWN0b3IgcmVtYWluaW5nQ2xhc3NCaXRzOwogICAgIHJlbWFp
bmluZ0NsYXNzQml0cy5lbnN1cmVTaXplKG9sZFNpemUpOwogICAgIC8vIENsYXNzIHZlY3RvcnMg
dGVuZCB0byBiZSB2ZXJ5IHNob3J0LiBUaGlzIGlzIGZhc3RlciB0aGFuIHVzaW5nIGEgaGFzaCB0
YWJsZS4KQEAgLTg0OCwyNSArODg3LDUwIEBAIHN0YXRpYyBib29sIGNoZWNrTmVlZHNTdHlsZUlu
dmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xhc3MobmV3Q2xhc3Nlc1tpXSkpCisg
ICAgICAgIGlmIChmdW5jdG9yKG5ld0NsYXNzZXNbaV0pKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kpIHsK
ICAgICAgICAgLy8gSWYgdGhlIGJpdCBpcyBub3Qgc2V0IHRoZSB0aGUgY29ycmVzcG9uZGluZyBj
bGFzcyBoYXMgYmVlbiByZW1vdmVkLgogICAgICAgICBpZiAocmVtYWluaW5nQ2xhc3NCaXRzLnF1
aWNrR2V0KGkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzdHlsZVJlc29s
dmVyLT5oYXNTZWxlY3RvckZvckNsYXNzKG9sZENsYXNzZXNbaV0pKQorICAgICAgICBpZiAoZnVu
Y3RvcihvbGRDbGFzc2VzW2ldKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzU3R5bGVJ
bnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjaGFuZ2Vk
Q2xhc3NlcywgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3sKKyAgICByZXR1cm4gY2hl
Y2tGdW5jdG9yRm9yQ2xhc3NDaGFuZ2UoY2hhbmdlZENsYXNzZXMsIEhhc1NlbGVjdG9yRm9yQ2xh
c3NTdHlsZUZ1bmN0b3Ioc3R5bGVSZXNvbHZlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wg
Y2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxp
dFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3Nlcywg
U3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3sKKyAgICByZXR1cm4gY2hlY2tGdW5jdG9y
Rm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgSGFzU2VsZWN0b3JGb3JDbGFz
c1N0eWxlRnVuY3RvcihzdHlsZVJlc29sdmVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBj
aGVja05lZWRzRGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3Bh
Y2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRTaGFk
b3cpCit7CisgICAgcmV0dXJuIGNoZWNrRnVuY3RvckZvckNsYXNzQ2hhbmdlKGNoYW5nZWRDbGFz
c2VzLCBIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJpYnV0aW9uRnVuY3RvcihlbGVtZW50U2hhZG93
KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzRGlzdHJpYnV0aW9uSW52YWxp
ZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3Nlcywg
Y29uc3QgU3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3NlcywgRWxlbWVudFNoYWRvdyogZWxlbWVu
dFNoYWRvdykKK3sKKyAgICByZXR1cm4gY2hlY2tGdW5jdG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xh
c3NlcywgbmV3Q2xhc3NlcywgSGFzU2VsZWN0b3JGb3JDbGFzc0Rpc3RyaWJ1dGlvbkZ1bmN0b3Io
ZWxlbWVudFNoYWRvdykpOworfQorCiB2b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogewogICAgIFN0eWxlUmVzb2x2
ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVySWZFeGlzdHMoKTsK
ICAgICBib29sIHRlc3RTaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBhdHRhY2hlZCgpICYmIHN0eWxl
UmVzb2x2ZXIgJiYgc3R5bGVDaGFuZ2VUeXBlKCkgPCBGdWxsU3R5bGVDaGFuZ2U7CiAgICAgYm9v
bCBzaG91bGRJbnZhbGlkYXRlU3R5bGUgPSBmYWxzZTsKIAorICAgIEVsZW1lbnRTaGFkb3cqIGVs
ZW1lbnRTaGFkb3cgPSBzaGFkb3dPZlBhcmVudEZvckRpc3RyaWJ1dGlvbih0aGlzKTsKKyAgICBp
ZiAoZWxlbWVudFNoYWRvdykKKyAgICAgICAgZWxlbWVudFNoYWRvdy0+ZW5zdXJlU2VsZWN0RmVh
dHVyZVNldENvbGxlY3RlZCgpOworICAgIGJvb2wgc2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlv
biA9IGZhbHNlOworCiAgICAgaWYgKGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1lKG5ld0NsYXNzU3Ry
aW5nKSkgewogICAgICAgICBjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0
YSA9IGVuc3VyZUF0dHJpYnV0ZURhdGEoKTsKICAgICAgICAgY29uc3QgYm9vbCBzaG91bGRGb2xk
Q2FzZSA9IGRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpOwpAQCAtODc2LDEwICs5NDAsMTEgQEAg
dm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBu
ZXdDbGFzc1N0cmluZykKIAogICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBuZXdDbGFz
c2VzID0gYXR0cmlidXRlRGF0YS0+Y2xhc3NOYW1lcygpOwogICAgICAgICBzaG91bGRJbnZhbGlk
YXRlU3R5bGUgPSB0ZXN0U2hvdWxkSW52YWxpZGF0ZVN0eWxlICYmIGNoZWNrTmVlZHNTdHlsZUlu
dmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5ld0NsYXNzZXMsIHN0eWxlUmVz
b2x2ZXIpOworICAgICAgICBzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uID0gZWxlbWVudFNo
YWRvdyAmJiBjaGVja05lZWRzRGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2Uo
b2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgZWxlbWVudFNoYWRvdyk7CiAgICAgfSBlbHNlIGlmIChj
b25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSogYXR0cmlidXRlRGF0YSA9IHRoaXMtPmF0dHJpYnV0
ZURhdGEoKSkgewogICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzID0g
YXR0cmlidXRlRGF0YS0+Y2xhc3NOYW1lcygpOwogICAgICAgICBzaG91bGRJbnZhbGlkYXRlU3R5
bGUgPSB0ZXN0U2hvdWxkSW52YWxpZGF0ZVN0eWxlICYmIGNoZWNrTmVlZHNTdHlsZUludmFsaWRh
dGlvbkZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIHN0eWxlUmVzb2x2ZXIpOwotCisgICAgICAg
IHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24gPSBlbGVtZW50U2hhZG93ICYmIGNoZWNrTmVl
ZHNEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBlbGVt
ZW50U2hhZG93KTsKICAgICAgICAgYXR0cmlidXRlRGF0YS0+Y2xlYXJDbGFzcygpOwogICAgIH0K
IApAQCAtODg4LDYgKzk1Myw4IEBAIHZvaWQgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpCiAKICAgICBpZiAoc2hvdWxkSW52
YWxpZGF0ZVN0eWxlKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKCk7CisgICAgaWYgKHNo
b3VsZEludmFsaWRhdGVEaXN0cmlidXRpb24pCisgICAgICAgIGVsZW1lbnRTaGFkb3ctPmludmFs
aWRhdGVEaXN0cmlidXRpb24oKTsKIH0KIAogLy8gUmV0dXJucyB0cnVlIGlzIHRoZSBnaXZlbiBh
dHRyaWJ1dGUgaXMgYW4gZXZlbnQgaGFuZGxlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNzM3Y2UyYzhkZjliNTUwZWUz
NWI5YTllYzNiM2M2MTg5ZWMzNzZiLi5iZDk4MDE2MjU4ODIzYmIxNDAwODg1ZmE2ZWQ2NmE2MGI0
ODkxNDJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMTEtMTIgIFNoaW55YSBLYXdhbmFr
YSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5naW5nIGlkLCBjbGFzc05h
bWUsIG9yIGF0dHJpYnV0ZSBzaG91bGQgaW52YWxpZGF0ZSBkaXN0cmlidXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDczOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGhhdmUgdGVzdCBjYXNl
cyB0aGF0IGlkL2NsYXNzL2F0dHJpYnV0ZSBpcyBjaGFuZ2VkLCBhbmQgdGhpZXIgcmVwcm9qZWN0
aW9uIGNhc2VzLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRy
aWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlv
bi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlm
aWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXBy
b2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1l
LW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2pl
Y3Rpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1tb2RpZmllZC5odG1sOiBBZGRlZC4KKwogMjAxMi0x
MS0xMiAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFwaGFlbC5rdWJvLmRhLmNvc3RhQGludGVs
LmNvbT4KIAogICAgICAgICBbRUZMXSBXZWJLaXQxIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0cmlidXRlLW1vZGlmaWVk
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWF0dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjgyYzdjMGQ5
MTVjZDM3MTM2Mzc0MmQzMTM4ZDY4ZDEyZmU1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxi
b2R5PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PkY8L2Rpdj4KKzwvZGl2PgorCis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rp
c3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iN2MwZTYyMmFl
YTVkOGI1NDQ0ZGNjOTk5NDE1YmU1ZDk2ODUyYTI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRt
bApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKwor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9
Imhvc3QiPgorICAgIDxkaXY+QTwvZGl2PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+Qzwv
ZGl2PgorICAgIDxkaXY+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYi
PkY8L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9vdCA9IG5ldyBXZWJL
aXRTaGFkb3dSb290KGhvc3QpOworc2hhZG93Um9vdC5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2Vs
ZWN0PSJkaXZbdGl0bGVdIj48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsK
KyAgICBGLnRpdGxlID0gJ3NvbWV0aGluZyc7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9u
LWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kOWE2OTVjZTBhNzljOGRhZTIwMDZlZjFlNjEzZjA3YTIwMjU3NDllCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFz
c05hbWUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUg
aHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdj5BPC9k
aXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rpdj4KKworPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1j
bGFzc05hbWUtbW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDU0OGUwZGUzMzli
MDYzM2VkNzFjOWNmYWY5YzRmM2MyODcyNjAyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwK
QEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJo
b3N0Ij4KKyAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZCI+QTwvZGl2PgorICAgIDxkaXY+QjwvZGl2
PgorICAgIDxkaXY+QzwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkIj5EPC9kaXY+Cisg
ICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+RjwvZGl2PgorPC9kaXY+CisKKzxzY3Jp
cHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25l
KCk7CisKK3ZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7CitzaGFk
b3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9Ii5zZWxlY3RlZCI+PC9jb250ZW50
Pic7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgRi5jbGFzc05hbWUgPSAnc2VsZWN0
ZWQnOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmll
ZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjgyYzdjMGQ5MTVjZDM3MTM2Mzc0MmQzMTM4
ZDY4ZDEyZmU1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBA
QAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9Imhvc3QiPgor
ICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi40ZTM1Y2U3OWI2Yjc0ZjFmZTU0NGQzNGM5Y2RkMThhYTIzMDBiNGFjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1t
b2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4K
Kzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4K
KworPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBpZD0ic2VsZWN0ZWQiPkE8L2Rpdj4KKyAgICA8
ZGl2PkI8L2Rpdj4KKyAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2PkQ8L2Rpdj4KKyAgICA8ZGl2
PkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJGIj5GPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwor
dmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0KTsKK3NoYWRvd1Jvb3Qu
aW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iI3NlbGVjdGVkIj48L2NvbnRlbnQ+JzsKKwor
c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBBID0gc2VsZWN0ZWQ7CisgICAgRi5pZCA9ICdz
ZWxlY3RlZCc7ICAgIAorICAgIEEuaWQgPSAnJzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rp
b24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJlNWE0MjE5YTdlNzBjY2M5ZWZkMmU4NWMzYzQ4ZWE5NmI5MmM4YWIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0
dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQ
RSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJob3N0Ij48ZGl2PgorICAgIDxk
aXY+RjwvZGl2PgorPC9kaXY+PC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2Rp
ZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNTE2NWIwMWQ5YmQ1NjJjNThhZDIyYTAyYTBjOGVhZGUy
OTFlMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVw
cm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9D
VFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3Bv
bHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXY+QTwvZGl2
PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2PgorICAgIDxkaXY+RDwvZGl2Pgor
ICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rpdj4KKzwvZGl2PgorCis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworCit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7Citz
aGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPjxzaGFkb3c+PC9zaGFkb3c+
PC9kaXY+JzsKKwordmFyIGhvc3QyID0gc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3Qy
Jyk7Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0Mik7CitzaGFk
b3dSb290Mi5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSJkaXZbdGl0bGU9c2VsZWN0ZWRd
Ij48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBGLnRpdGxlID0g
J3NlbGVjdGVkJzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlm
aWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0
aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBlZThhNjBj
ODgxNjY5Y2UwNGFhYTBjMmQ2Mjk1MWY1MjM4YmY2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4K
Kzxib2R5PgorCis8ZGl2IGlkPSJob3N0Ij48ZGl2PgorICAgIDxkaXY+QTwvZGl2PgorICAgIDxk
aXY+RDwvZGl2PgorICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+PC9kaXY+CisKKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NO
YW1lLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0
aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3M2RhNjY0YWUyZjA1MzVl
YTQ5ODRkZDBjOWYyMjFmOTliZjlmODAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sCkBAIC0w
LDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEi
PgorICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkIj5BPC9kaXY+CisgICAgPGRpdj5CPC9kaXY+Cisg
ICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQiPkQ8L2Rpdj4KKyAgICA8
ZGl2PkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJGIj5GPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KwordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDEpOworc2hhZG93
Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj48c2hhZG93Pjwvc2hhZG93PjwvZGl2
Pic7CisKK3ZhciBob3N0MiA9IHNoYWRvd1Jvb3QxLmdldEVsZW1lbnRCeUlkKCdob3N0MicpOwor
dmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdDIpOworc2hhZG93Um9v
dDIuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iLnNlbGVjdGVkIj48L2NvbnRlbnQ+JzsK
Kworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBGLmNsYXNzTmFtZSA9ICdzZWxlY3RlZCc7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlkLW1vZGlmaWVkLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1YTQyMTlhN2U3MGNjYzllZmQyZTg1YzNjNDhlYTk2
YjkyYzhhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9y
ZXByb2plY3Rpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPGRpdiBpZD0iaG9zdCI+PGRpdj4K
KyAgICA8ZGl2PkY8L2Rpdj4KKzwvZGl2PjwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlkLW1vZGlmaWVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlkLW1vZGlmaWVkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDAwMGI4NDY4YThlYjZiYTI4YmFhNDMzMWY2YTJlY2EwNjZkN2RhYgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rp
b24taWQtbW9kaWZpZWQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKwor
PGh0bWw+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9z
Y3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QxIj4KKyAgICA8ZGl2IGlkPSJzZWxlY3RlZCI+QTwvZGl2
PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2PgorICAgIDxkaXY+RDwvZGl2Pgor
ICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rpdj4KKzwvZGl2PgorCis8c2Ny
aXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworCit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7Citz
aGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPjxzaGFkb3c+PC9zaGFkb3c+
PC9kaXY+JzsKKwordmFyIGhvc3QyID0gc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3Qy
Jyk7Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0Mik7CitzaGFk
b3dSb290Mi5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIjc2VsZWN0ZWQiPjwvY29udGVu
dD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEEgPSBzZWxlY3RlZDsKKyAgICBB
LmlkID0gJyc7CisgICAgRi5pZCA9ICdzZWxlY3RlZCc7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIDApOworPC9zY3JpcHQ+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZyBiL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY2YWQxYmFmYmY0YjAxN2NiZDUwZGVhZDEzYjIz
ZDRlZWM2MWI0OWIuLmI0MGQwOWZiNzNmMTg5YjZhZGY1NjYzZDdjNDI1ZDYyNThmYzJlNmQgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZvcm1hbmNlVGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTEtMTIgIFNoaW55YSBLYXdhbmFr
YSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5naW5nIGlkLCBjbGFzc05h
bWUsIG9yIGF0dHJpYnV0ZSBzaG91bGQgaW52YWxpZGF0ZSBkaXN0cmlidXRpb24KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDczOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHRlc3QgY29kZSB0
byBtb2RpZnkgaWQvY2xhc3MvYXR0cmlidXRlLgorCisgICAgICAgICogRE9NL01vZGlmeUF0dHJp
YnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBET00vcmVzb3VyY2VzL2RvbS1wZXJmL21vZGlm
eS1hdHRyaWJ1dGUuanM6IEFkZGVkLgorICAgICAgICAoTW9kaWZ5QXR0cmlidXRlLkNyZWF0ZUVs
ZW1lbnRUb1NldFVwKToKKyAgICAgICAgKE1vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlJZCk6CisgICAg
ICAgIChNb2RpZnlBdHRyaWJ1dGUuTW9kaWZ5Q2xhc3MpOgorICAgICAgICAoTW9kaWZ5QXR0cmli
dXRlLk1vZGlmeVRpdGxlKToKKwogMjAxMi0xMS0wNiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIERPTUltcGxlbWVudGF0aW9uIHNob3VsZCB1c2UgU2NyaXB0V3Jh
cHBhYmxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0RPTS9Nb2RpZnlBdHRyaWJ1dGUu
aHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvRE9NL01vZGlmeUF0dHJpYnV0ZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQxZTI1OWM5ZmQzNGI3NTk4NzZlMmQ0MDdiOTAyMmY3NTU3MDAxNDYKLS0tIC9kZXYvbnVs
bAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL0RPTS9Nb2RpZnlBdHRyaWJ1dGUuaHRtbApAQCAtMCww
ICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8ZGl2IGlkPSJjb250
YWluZXIiPjxzcGFuIGlkPSJiZW5jaG1hcmtfY29udGVudCI+PC9zcGFuPjwvZGl2PgorPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvZG9t
LXBlcmYuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0i
cmVzb3VyY2VzL2RvbS1wZXJmL21vZGlmeS1hdHRyaWJ1dGUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD5ydW5CZW5jaG1hcmtTdWl0ZShNb2RpZnlBdHRyaWJ1dGVUZXN0KTs8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvRE9NL3Jlc291cmNlcy9k
b20tcGVyZi9tb2RpZnktYXR0cmlidXRlLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9ET00vcmVzb3Vy
Y2VzL2RvbS1wZXJmL21vZGlmeS1hdHRyaWJ1dGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I2ZTQxOTRlNmZh
N2RmMDk2OTNiYWJjMDE4NTlkNTQ2NjAwZjc5NAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1h
bmNlVGVzdHMvRE9NL3Jlc291cmNlcy9kb20tcGVyZi9tb2RpZnktYXR0cmlidXRlLmpzCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvLyBNb2RpZnlBdHRyaWJ1dGUgLSBtZWFzdXJlIGF0dHJpYnV0ZSBtb2RpZmlj
YXRpb24gcGVyZm9ybWFuY2UKKwordmFyIE1vZGlmeUF0dHJpYnV0ZSA9IHt9OwordmFyIG5Mb29w
cyA9IDEwMDAwMDsKKworTW9kaWZ5QXR0cmlidXRlLkNyZWF0ZUVsZW1lbnRUb1NldFVwID0gZnVu
Y3Rpb24oKSB7CisgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworfQor
CitNb2RpZnlBdHRyaWJ1dGUuTW9kaWZ5SWQgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgdmFy
IG5Mb29wcyA9IHdpbmRvdy5uTG9vcHM7CisgICAgdmFyIGlkVmFsdWUxID0gJ2lkMSc7CisgICAg
dmFyIGlkVmFsdWUyID0gJ2lkMic7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5Mb29wczsg
KytpKSB7CisgICAgICAgIGVsZW1lbnQuaWQgPSBpZFZhbHVlMTsKKyAgICAgICAgZWxlbWVudC5p
ZCA9IGlkVmFsdWUyOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KK30KKworTW9kaWZ5
QXR0cmlidXRlLk1vZGlmeUNsYXNzID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgIHZhciBuTG9v
cHMgPSB3aW5kb3cubkxvb3BzOworICAgIHZhciBjbGFzc05hbWUxID0gJ2NsYXNzMSc7CisgICAg
dmFyIGNsYXNzTmFtZTIgPSAnY2xhc3MyJzsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbkxv
b3BzOyArK2kpIHsKKyAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWUxOworICAg
ICAgICBlbGVtZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTI7CisgICAgfQorfQorCitNb2RpZnlB
dHRyaWJ1dGUuTW9kaWZ5VGl0bGUgPSBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgdmFyIG5Mb29w
cyA9IHdpbmRvdy5uTG9vcHM7CisgICAgdmFyIHRpdGxlMSA9ICd0aXRsZTEnOworICAgIHZhciB0
aXRsZTIgPSAndGl0bGUyJzsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbkxvb3BzOyArK2kp
IHsKKyAgICAgICAgZWxlbWVudC50aXRsZSA9IHRpdGxlMTsKKyAgICAgICAgZWxlbWVudC50aXRs
ZSA9IHRpdGxlMjsKKyAgICB9Cit9CisKK3ZhciBNb2RpZnlBdHRyaWJ1dGVUZXN0ID0gbmV3IEJl
bmNobWFya1N1aXRlKCdNb2RpZnlBdHRyaWJ1dGUnLCBbCisgICAgbmV3IEJlbmNobWFyaygiTW9k
aWZ5IGlkIiwgTW9kaWZ5QXR0cmlidXRlLk1vZGlmeUlkLCBNb2RpZnlBdHRyaWJ1dGUuQ3JlYXRl
RWxlbWVudFRvU2V0VXApLAorICAgIG5ldyBCZW5jaG1hcmsoIk1vZGlmeSBjbGFzcyIsIE1vZGlm
eUF0dHJpYnV0ZS5Nb2RpZnlDbGFzcywgTW9kaWZ5QXR0cmlidXRlLkNyZWF0ZUVsZW1lbnRUb1Nl
dFVwKSwKKyAgICBuZXcgQmVuY2htYXJrKCJNb2RpZnkgdGl0bGUiLCBNb2RpZnlBdHRyaWJ1dGUu
TW9kaWZ5VGl0bGUsIE1vZGlmeUF0dHJpYnV0ZS5DcmVhdGVFbGVtZW50VG9TZXRVcCkKK10pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174622</attachid>
            <date>2012-11-16 00:31:54 -0800</date>
            <delta_ts>2012-11-18 21:49:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100738-20121116172950.patch</filename>
            <type>text/plain</type>
            <size>26821</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM0OTA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGZkNzg3YzIxODk0ODk2
NTgzZDU4NDRlNjRmNzU0NDBlMGZhNWE4Ny4uYTYzYTY0NGE0ZTY4YWFhMzUwMjY3NzgxODZjNTg1
ZmI5MTM5MjBkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEyLTExLTE2ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2luZyBp
ZCwgY2xhc3NOYW1lLCBvciBhdHRyaWJ1dGUgc2hvdWxkIGludmFsaWRhdGUgZGlzdHJpYnV0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGlk
LCBjbGFzc05hbWUsIG9yIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLCB3ZSBtaWdodCBoYXZlIHRvIGlu
dmFsaWRhdGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRv
IGRvIHVzZWxlc3MgaW52YWxpZGF0aW9uLiBTbyB3ZSBjb25zdWx0IHdpdGggdGhlIFJ1bGVGZWF0
dXJlU2V0IG9mIEVsZW1lbnRTaGFkb3csCisgICAgICAgIGFuZCBpbnZhbGlkYXRlIGRpc3RyaWJ1
dGlvbiBvbmx5IGlmIG5lY2Vzc2FyeS4KKworICAgICAgICBGb3IgdGhlIGNvZGUgdGhhdCBjbGFz
c05hbWUgaXMgY2hhbmdlZCwgd2UgY2FuIHNoYXJlIGEgbG90IG9mIGNvZGUgYmV0d2VlbiBpbnZh
bGlkYXRpbmcgZGlzdHJpYnV0aW9uIGFuZAorICAgICAgICBpbnZhbGlkYXRpbmcgc3R5bGUuIFNv
IHdlIG1hZGUgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UgYSB0ZW1w
bGF0ZSBtZXRob2QsIGFuZCBzaGFyZSBpdC4KKworICAgICAgICBTaW5jZSBhdHRyaWJ1dGVDaGFu
Z2VkKCkgaXMgYSBob3QgbWV0aG9kLCB3ZSBkb24ndCB3YW50IHRvIG1ha2UgaXQgc2xvdy4gU28g
d2UgbWFkZSBvbmUgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lCisgICAgICAgIHdoZXRoZXIgd2UgaGF2
ZSB0byBpbnZhbGlkYXRlIGRpc3RyaWJ1dGlvbiwgYW5kIG1ha2UgaXQgY2FsbGVkIG9ubHkgaWYg
bmVjZXNzYXJ5LgorCisgICAgICAgIFdlJ3ZlIG1lYXN1cmVkIGhvdyB0aGlzIHBhdGNoIG1ha2Vz
IGNoYW5naW5nIGF0dHJpYnV0ZSBzbG93LiBJJ3ZlIG1lYXN1cmVkIGVhY2ggY29kZSAzIHRpbWVz
LgorICAgICAgICBET00vTW9kaWZ5QXR0cmlidXRlLmh0bWwgaXMgYSBtaWNybyBiZW5jaG1hcmsg
d2hpY2ggY2hhbmdlcyBhdHRyaWJ1dGUgYSBsb3Qgb2YgdGltZXMuIFRoZSByZXN1bHQgb2YgdGhp
cyBiZW5jaG1hcmsKKyAgICAgICAgd2lsbCBiZSB0aGUgbW9zdCBhZmZlY3RlZCBieSB0aGlzIHBh
dGNoLiBIb3dldmVyLCBpdCdzIG9ubHkgMyUgb2YgcGVyZm9ybWFuY2UgcmVncmVzc2lvbi4KKwor
ICAgICAgICBET00vTW9kaWZ5QXR0cmlidXRlLmh0bWwKKyAgICAgICAgQmVmb3JlIHRoaXMgcGF0
Y2g6CisgICAgICAgICAgICAgICAgbWVkaWFuICBzdGRldiAgICBtaW4gICAgbWF4ICAgIFttc10K
KyAgICAgICAgICAxc3QgICAgIDg5LjMgICAwLjY5ICAgODguMyAgIDkwLjUKKyAgICAgICAgICAy
bmQgICAgIDg5LjQgICAwLjk2ICAgODguMCAgIDkxLjIKKyAgICAgICAgICAzcmQgICAgIDg4LjQg
ICAwLjUzICAgODcuNiAgIDg5LjMKKworICAgICAgICBBZnRlciB0aGlzIHBhdGNoOgorICAgICAg
ICAgICAgICAgIG1lZGlhbiAgc3RkZXYgIG1pbiAgICAgIG1heCAgICBbbXNdCisgICAgICAgICAg
MXN0ICAgICA5Mi4zICAgMC41NiAgIDkwLjkgICA5My4zCisgICAgICAgICAgMm5kICAgICA5My4y
ICAgMS40MiAgIDkxLjMgICA5Ny42CisgICAgICAgICAgM3JkICAgICA5MS44ICAgMC44OSAgIDkw
LjQgICA5NC41CisKKyAgICAgICAgVGVzdHM6IGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24t
YXR0cmlidXRlLW1vZGlmaWVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbAorICAg
ICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZp
ZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1pZC1t
b2RpZmllZC5odG1sCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okhhc1Nl
bGVjdG9yRm9yQ2xhc3NTdHlsZUZ1bmN0b3I6Okhhc1NlbGVjdG9yRm9yQ2xhc3NTdHlsZUZ1bmN0
b3IpOgorICAgICAgICAoSGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVuY3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpIYXNTZWxlY3RvckZvckNsYXNzU3R5bGVGdW5jdG9yOjpvcGVyYXRvcigpKTog
UmV0dXJucyB0cnVlIGlmIFN0eWxlUmVzb2x2ZXI6Omhhc1NlbGVjdG9yRm9yQ2xhc3MgcmV0dXJu
cyB0cnVlLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpIYXNTZWxlY3Rv
ckZvckNsYXNzRGlzdHJpYnV0aW9uRnVuY3Rvcjo6SGFzU2VsZWN0b3JGb3JDbGFzc0Rpc3RyaWJ1
dGlvbkZ1bmN0b3IpOgorICAgICAgICAoSGFzU2VsZWN0b3JGb3JDbGFzc0Rpc3RyaWJ1dGlvbkZ1
bmN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SGFzU2VsZWN0b3JGb3JDbGFzc0Rpc3RyaWJ1dGlv
bkZ1bmN0b3I6Om9wZXJhdG9yKCkpOiBSZXR1cm5zIHRydWUgaWYgRWxlbWVudFNoYWRvdzo6aGFz
U2VsZWN0Rm9yQ2xhc3MgcmV0dXJucyB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tGdW5j
dG9yRm9yQ2xhc3NDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOZWVkc1N0eWxlSW52
YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Y2hlY2tOZWVkc0Rp
c3RyaWJ1dGlvbkludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKTogRXh0cmFjdGVkIHRoZSBpbXBs
ZW1lbnRhdGlvbiB0byBjaGVja0Z1bmN0b3JGb3JDbGFzc0NoYW5nZS4KKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpzaG91bGRJbnZhbGlkYXRlRGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChFbGVtZW50KToKKwogMjAxMi0x
MS0xNSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBN
ZW1vcnkgaW5zdHJ1bWVudGF0aW9uOiBhZGQgY29kZSBmb3IgcmVwb3J0aW5nIHN0YWNrIHRyYWNl
cyBvZiB1bmtub3duIGluc3RydW1lbnRlZCBvYmplY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5k
ZXggMDY2MDMxNjQ5OTBkNDUzYzIzMWE5ZGNkMmY1NTFjZGM4NzZiNjc0My4uNGVkMzM4MDllNGE1
MTRjZDQ5NzBiMjRjNTdlZThlM2YzNDhlYzdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAt
NTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIkhUTUxPcHRpb25zQ29sbGVjdGlvbi5oIgogI2luY2x1
ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlv
bi5oIgorI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAu
aCIKICNpbmNsdWRlICJNdXRhdGlvblJlY29yZC5oIgpAQCAtNzU4LDYgKzc1OSwxMSBAQCBzdGF0
aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JJZENoYW5nZShjb25zdCBBdG9t
aWNTdHJpbmcmIG9sZElkLCBjbwogCiB2b2lkIEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsK
KyAgICBpZiAoRWxlbWVudFNoYWRvdyogcGFyZW50RWxlbWVudFNoYWRvdyA9IHNoYWRvd09mUGFy
ZW50Rm9yRGlzdHJpYnV0aW9uKHRoaXMpKSB7CisgICAgICAgIGlmIChzaG91bGRJbnZhbGlkYXRl
RGlzdHJpYnV0aW9uV2hlbkF0dHJpYnV0ZUNoYW5nZWQocGFyZW50RWxlbWVudFNoYWRvdywgbmFt
ZSwgbmV3VmFsdWUpKQorICAgICAgICAgICAgcGFyZW50RWxlbWVudFNoYWRvdy0+aW52YWxpZGF0
ZURpc3RyaWJ1dGlvbigpOworICAgIH0KKwogICAgIHBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZShu
YW1lLCBuZXdWYWx1ZSkpOwogCiAgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNpb24oKTsK
QEAgLTgyMiwyMSArODI4LDQ5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjbGFzc1N0cmluZ0hhc0Ns
YXNzTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogICAgIHJldHVybiBj
bGFzc1N0cmluZ0hhc0NsYXNzTmFtZShuZXdDbGFzc1N0cmluZy5jaGFyYWN0ZXJzMTYoKSwgbGVu
Z3RoKTsKIH0KIAotc3RhdGljIGJvb2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xh
c3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCitzdHJ1Y3QgSGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVu
Y3RvciB7CisgICAgZXhwbGljaXQgSGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVuY3RvcihTdHls
ZVJlc29sdmVyKiByZXNvbHZlcikKKyAgICAgICAgOiBzdHlsZVJlc29sdmVyKHJlc29sdmVyKQor
ICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NO
YW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVj
dG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICB9CisKKyAgICBTdHlsZVJlc29sdmVyKiBzdHls
ZVJlc29sdmVyOworfTsKKworc3RydWN0IEhhc1NlbGVjdG9yRm9yQ2xhc3NEaXN0cmlidXRpb25G
dW5jdG9yIHsKKyAgICBleHBsaWNpdCBIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJpYnV0aW9uRnVu
Y3RvcihFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93KQorICAgICAgICA6IGVsZW1lbnRTaGFk
b3coZWxlbWVudFNoYWRvdykKKyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3IoKShjb25zdCBB
dG9taWNTdHJpbmcmIGNsYXNzTmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlbGVt
ZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xh
c3NOYW1lKTsKKyAgICB9CisKKyAgICBFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93OworfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3N0YXRpYyBib29sIGNoZWNrRnVuY3RvckZv
ckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNoYW5nZWRDbGFzc2VzLCBGdW5j
dG9yIGZ1bmN0b3IpCiB7CiAgICAgdW5zaWduZWQgY2hhbmdlZFNpemUgPSBjaGFuZ2VkQ2xhc3Nl
cy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoYW5nZWRTaXplOyArK2kp
IHsKLSAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2hhbmdl
ZENsYXNzZXNbaV0pKQorICAgICAgICBpZiAoZnVuY3RvcihjaGFuZ2VkQ2xhc3Nlc1tpXSkpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGF0aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShjb25z
dCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzLCBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBu
ZXdDbGFzc2VzLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQordGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4KK3N0YXRpYyBib29sIGNoZWNrRnVuY3RvckZvckNsYXNzQ2hhbmdlKGNvbnN0
IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG5l
d0NsYXNzZXMsIEZ1bmN0b3IgZnVuY3RvcikKIHsKICAgICB1bnNpZ25lZCBvbGRTaXplID0gb2xk
Q2xhc3Nlcy5zaXplKCk7CiAgICAgaWYgKCFvbGRTaXplKQotICAgICAgICByZXR1cm4gY2hlY2tO
ZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UobmV3Q2xhc3Nlcywgc3R5bGVSZXNv
bHZlcik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0b3JGb3JDbGFzc0NoYW5nZShuZXdDbGFz
c2VzLCBmdW5jdG9yKTsKICAgICBCaXRWZWN0b3IgcmVtYWluaW5nQ2xhc3NCaXRzOwogICAgIHJl
bWFpbmluZ0NsYXNzQml0cy5lbnN1cmVTaXplKG9sZFNpemUpOwogICAgIC8vIENsYXNzIHZlY3Rv
cnMgdGVuZCB0byBiZSB2ZXJ5IHNob3J0LiBUaGlzIGlzIGZhc3RlciB0aGFuIHVzaW5nIGEgaGFz
aCB0YWJsZS4KQEAgLTg0OCwxOSArODgyLDM5IEBAIHN0YXRpYyBib29sIGNoZWNrTmVlZHNTdHls
ZUludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAg
ICAgaWYgKHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xhc3MobmV3Q2xhc3Nlc1tpXSkp
CisgICAgICAgIGlmIChmdW5jdG9yKG5ld0NsYXNzZXNbaV0pKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvbGRTaXplOyArK2kp
IHsKICAgICAgICAgLy8gSWYgdGhlIGJpdCBpcyBub3Qgc2V0IHRoZSB0aGUgY29ycmVzcG9uZGlu
ZyBjbGFzcyBoYXMgYmVlbiByZW1vdmVkLgogICAgICAgICBpZiAocmVtYWluaW5nQ2xhc3NCaXRz
LnF1aWNrR2V0KGkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzdHlsZVJl
c29sdmVyLT5oYXNTZWxlY3RvckZvckNsYXNzKG9sZENsYXNzZXNbaV0pKQorICAgICAgICBpZiAo
ZnVuY3RvcihvbGRDbGFzc2VzW2ldKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzU3R5
bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjaGFu
Z2VkQ2xhc3NlcywgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3sKKyAgICByZXR1cm4g
Y2hlY2tGdW5jdG9yRm9yQ2xhc3NDaGFuZ2UoY2hhbmdlZENsYXNzZXMsIEhhc1NlbGVjdG9yRm9y
Q2xhc3NTdHlsZUZ1bmN0b3Ioc3R5bGVSZXNvbHZlcikpOworfQorCitzdGF0aWMgaW5saW5lIGJv
b2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VT
cGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3Nl
cywgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3sKKyAgICByZXR1cm4gY2hlY2tGdW5j
dG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgSGFzU2VsZWN0b3JGb3JD
bGFzc1N0eWxlRnVuY3RvcihzdHlsZVJlc29sdmVyKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9v
bCBjaGVja05lZWRzRGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3Qg
U3BhY2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIEVsZW1lbnRTaGFkb3cqIGVsZW1lbnRT
aGFkb3cpCit7CisgICAgcmV0dXJuIGNoZWNrRnVuY3RvckZvckNsYXNzQ2hhbmdlKGNoYW5nZWRD
bGFzc2VzLCBIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJpYnV0aW9uRnVuY3RvcihlbGVtZW50U2hh
ZG93KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzRGlzdHJpYnV0aW9uSW52
YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3Nl
cywgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3NlcywgRWxlbWVudFNoYWRvdyogZWxl
bWVudFNoYWRvdykKK3sKKyAgICByZXR1cm4gY2hlY2tGdW5jdG9yRm9yQ2xhc3NDaGFuZ2Uob2xk
Q2xhc3NlcywgbmV3Q2xhc3NlcywgSGFzU2VsZWN0b3JGb3JDbGFzc0Rpc3RyaWJ1dGlvbkZ1bmN0
b3IoZWxlbWVudFNoYWRvdykpOworfQorCiB2b2lkIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogewogICAgIFN0eWxlUmVz
b2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVySWZFeGlzdHMo
KTsKQEAgLTg5MCw2ICs5NDQsNDEgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKICAgICAgICAgc2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogfQogCitib29sIEVsZW1lbnQ6OnNob3VsZEludmFsaWRhdGVEaXN0cmli
dXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93LCBj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKQor
eworICAgIEFTU0VSVChlbGVtZW50U2hhZG93KTsKKyAgICBlbGVtZW50U2hhZG93LT5lbnN1cmVT
ZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CisKKyAgICBpZiAoaXNJZEF0dHJpYnV0ZU5hbWUo
bmFtZSkpIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIG9sZElkID0gYXR0cmlidXRlRGF0YSgpLT5p
ZEZvclN0eWxlUmVzb2x1dGlvbigpOworICAgICAgICBBdG9taWNTdHJpbmcgbmV3SWQgPSBtYWtl
SWRGb3JTdHlsZVJlc29sdXRpb24obmV3VmFsdWUsIGRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgp
KTsKKyAgICAgICAgaWYgKG5ld0lkICE9IG9sZElkKSB7CisgICAgICAgICAgICBpZiAoIW9sZElk
LmlzRW1wdHkoKSAmJiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1Nl
bGVjdG9yRm9ySWQob2xkSWQpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgaWYgKCFuZXdJZC5pc0VtcHR5KCkgJiYgZWxlbWVudFNoYWRvdy0+c2VsZWN0UnVsZUZl
YXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvcklkKG5ld0lkKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChuYW1lID09IEhUTUxOYW1lczo6
Y2xhc3NBdHRyKSB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcg
PSBuZXdWYWx1ZTsKKyAgICAgICAgaWYgKGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1lKG5ld0NsYXNz
U3RyaW5nKSkgeworICAgICAgICAgICAgY29uc3QgRWxlbWVudEF0dHJpYnV0ZURhdGEqIGF0dHJp
YnV0ZURhdGEgPSBlbnN1cmVBdHRyaWJ1dGVEYXRhKCk7CisgICAgICAgICAgICBjb25zdCBib29s
IHNob3VsZEZvbGRDYXNlID0gZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7CisgICAgICAgICAg
ICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzID0gYXR0cmlidXRlRGF0YS0+Y2xh
c3NOYW1lcygpOworICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyBuZXdDbGFzc2Vz
KG5ld0NsYXNzU3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7CisgICAgICAgICAgICBpZiAoY2hlY2tO
ZWVkc0Rpc3RyaWJ1dGlvbkludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKG9sZENsYXNzZXMsIG5l
d0NsYXNzZXMsIGVsZW1lbnRTaGFkb3cpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9IGVsc2UgaWYgKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBhdHRyaWJ1dGVE
YXRhID0gdGhpcy0+YXR0cmlidXRlRGF0YSgpKSB7CisgICAgICAgICAgICBjb25zdCBTcGFjZVNw
bGl0U3RyaW5nJiBvbGRDbGFzc2VzID0gYXR0cmlidXRlRGF0YS0+Y2xhc3NOYW1lcygpOworICAg
ICAgICAgICAgaWYgKGNoZWNrTmVlZHNEaXN0cmlidXRpb25JbnZhbGlkYXRpb25Gb3JDbGFzc0No
YW5nZShvbGRDbGFzc2VzLCBlbGVtZW50U2hhZG93KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlbGVtZW50U2hhZG93LT5zZWxl
Y3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUubG9jYWxOYW1l
KCkpOworfQorCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0ZSBpcyBhbiBl
dmVudCBoYW5kbGVyLgogLy8gV2UgY29uc2lkZXIgYW4gZXZlbnQgaGFuZGxlciBhbnkgYXR0cmli
dXRlIHRoYXQgYmVnaW5zIHdpdGggIm9uIi4KIC8vIEl0IGlzIGEgc2ltcGxlIHNvbHV0aW9uIHRo
YXQgaGFzIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5o
CmluZGV4IGY4NzRlNGIzODVjYTc5ZDk4MDVmYTM4Mzk5ODViZGRjOTZmZmRjMmEuLmJiYTdkNGNm
NzcxYjU1ODBhYmI4MmRkOTA1ODJkODU0OGIwYTM0MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAt
NTIzLDYgKzUyMyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNyZWF0ZU11dGFibGVBdHRyaWJ1
dGVEYXRhKCk7CiAKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0
cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0
IEF0b21pY1N0cmluZyYpOworCiBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVu
dFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhKiBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBmNDE2YzA2N2U0ZTRjMjk2OTMzNzE3MmY4NWY3OTAyMzQ4N2JlYjg1
Li44NWU2MjM2MTcwYmQzN2I1N2NlYmU3ODRlZDE3YWYxYTlhY2FkM2U1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjUgQEAKKzIwMTItMTEtMTUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIENoYW5naW5nIGlkLCBjbGFzc05hbWUsIG9yIGF0dHJpYnV0ZSBzaG91
bGQgaW52YWxpZGF0ZSBkaXN0cmlidXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEwMDczOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIGhhdmUgdGVzdCBjYXNlcyB0aGF0IGlkL2NsYXNzL2F0dHJp
YnV0ZSBpcyBjaGFuZ2VkLCBhbmQgdGhpZXIgcmVwcm9qZWN0aW9uIGNhc2VzLgorCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0
ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1h
dHRyaWJ1dGUtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1t
b2RpZmllZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
ZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1v
ZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rp
b24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQtbW9kaWZpZWQtZXhw
ZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlv
bi1pZC1tb2RpZmllZC5odG1sOiBBZGRlZC4KKwogMjAxMi0xMS0xNSAgS2VuaWNoaSBJc2hpYmFz
aGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCB0ZXN0IHVwZGF0
ZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24t
YXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjRjMjgyYzdjMGQ5MTVjZDM3MTM2Mzc0MmQzMTM4ZDY4ZDEyZmU1MjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJp
YnV0ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PkY8L2Rp
dj4KKzwvZGl2PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iN2MwZTYyMmFlYTVkOGI1NDQ0ZGNjOTk5NDE1YmU1ZDk2ODUyYTI2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRy
aWJ1dGUtbW9kaWZpZWQuaHRtbApAQCAtMCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKwor
PGh0bWw+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9z
Y3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+QTwvZGl2PgorICAgIDxkaXY+Qjwv
ZGl2PgorICAgIDxkaXY+QzwvZGl2PgorICAgIDxkaXY+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2
PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hh
ZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOworc2hhZG93Um9vdC5pbm5lckhU
TUwgPSAnPGNvbnRlbnQgc2VsZWN0PSJkaXZbdGl0bGVdIj48L2NvbnRlbnQ+JzsKKworc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKKyAgICBGLnRpdGxlID0gJ3NvbWV0aGluZyc7CisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIDAp
OworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQt
ZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOWE2OTVjZTBhNzljOGRhZTIwMDZlZjFlNjEzZjA3
YTIwMjU3NDllCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPGRpdiBpZD0iaG9z
dCI+CisgICAgPGRpdj5BPC9kaXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5GPC9kaXY+
Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZDU0OGUwZGUzMzliMDYzM2VkNzFjOWNmYWY5YzRmM2MyODcyNjAyMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NO
YW1lLW1vZGlmaWVkLmh0bWwKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2Ny
aXB0PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZCI+QTwvZGl2
PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2PgorICAgIDxkaXYgY2xhc3M9InNl
bGVjdGVkIj5EPC9kaXY+CisgICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+RjwvZGl2
PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNoYWRv
d1Jvb3QoaG9zdCk7CitzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9Ii5z
ZWxlY3RlZCI+PC9jb250ZW50Pic7CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgRi5j
bGFzc05hbWUgPSAnc2VsZWN0ZWQnOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1t
b2RpZmllZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3Ry
aWJ1dGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRjMjgyYzdjMGQ5
MTVjZDM3MTM2Mzc0MmQzMTM4ZDY4ZDEyZmU1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisK
KzxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9k
aWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQt
bW9kaWZpZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTM1Y2U3OWI2Yjc0ZjFmZTU0NGQzNGM5Y2RkMThh
YTIzMDBiNGFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlm
aWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdCI+CisgICAgPGRpdiBpZD0ic2VsZWN0
ZWQiPkE8L2Rpdj4KKyAgICA8ZGl2PkI8L2Rpdj4KKyAgICA8ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2
PkQ8L2Rpdj4KKyAgICA8ZGl2PkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJGIj5GPC9kaXY+Cis8L2Rp
dj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdCho
b3N0KTsKK3NoYWRvd1Jvb3QuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iI3NlbGVjdGVk
Ij48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBBID0gc2VsZWN0
ZWQ7CisgICAgRi5pZCA9ICdzZWxlY3RlZCc7ICAgIAorICAgIEEuaWQgPSAnJzsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwg
MCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmll
ZC1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNWE0MjE5YTdlNzBjY2M5ZWZkMmU4NWMzYzQ4
ZWE5NmI5MmM4YWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0wLDAg
KzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJo
b3N0Ij48ZGl2PgorICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+PC9kaXY+CisKKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmli
dXRlLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0
aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzNTE2NWIwMWQ5YmQ1NjJj
NThhZDIyYTAyYTBjOGVhZGUyOTFlMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCkBAIC0w
LDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9zdDEi
PgorICAgIDxkaXY+QTwvZGl2PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2Pgor
ICAgIDxkaXY+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rp
dj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIi
PjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKKwordmFyIGhvc3QyID0gc2hhZG93Um9vdDEuZ2V0
RWxlbWVudEJ5SWQoJ2hvc3QyJyk7Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChob3N0Mik7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSJk
aXZbdGl0bGU9c2VsZWN0ZWRdIj48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigp
IHsKKyAgICBGLnRpdGxlID0gJ3NlbGVjdGVkJzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rp
b24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjBlZThhNjBjODgxNjY5Y2UwNGFhYTBjMmQ2Mjk1MWY1MjM4YmY2ZGMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNs
YXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJob3N0Ij48ZGl2PgorICAgIDxk
aXY+QTwvZGl2PgorICAgIDxkaXY+RDwvZGl2PgorICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+PC9k
aXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9y
ZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk3M2RhNjY0YWUyZjA1MzVlYTQ5ODRkZDBjOWYyMjFmOTliZjlmODAKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1t
b2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4K
Kzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4K
KworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkIj5BPC9kaXY+Cisg
ICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2VsZWN0
ZWQiPkQ8L2Rpdj4KKyAgICA8ZGl2PkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJGIj5GPC9kaXY+Cis8
L2Rpdj4KKworPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKwordmFyIHNoYWRvd1Jvb3QxID0gbmV3IFdlYktpdFNoYWRvd1Jv
b3QoaG9zdDEpOworc2hhZG93Um9vdDEuaW5uZXJIVE1MID0gJzxkaXYgaWQ9Imhvc3QyIj48c2hh
ZG93Pjwvc2hhZG93PjwvZGl2Pic7CisKK3ZhciBob3N0MiA9IHNoYWRvd1Jvb3QxLmdldEVsZW1l
bnRCeUlkKCdob3N0MicpOwordmFyIHNoYWRvd1Jvb3QyID0gbmV3IFdlYktpdFNoYWRvd1Jvb3Qo
aG9zdDIpOworc2hhZG93Um9vdDIuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iLnNlbGVj
dGVkIj48L2NvbnRlbnQ+JzsKKworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBGLmNsYXNz
TmFtZSA9ICdzZWxlY3RlZCc7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlkLW1vZGlm
aWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0
aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU1YTQyMTlhN2U3MGNj
YzllZmQyZTg1YzNjNDhlYTk2YjkyYzhhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApA
QCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPGRp
diBpZD0iaG9zdCI+PGRpdj4KKyAgICA8ZGl2PkY8L2Rpdj4KKzwvZGl2PjwvZGl2PgorCis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9u
LWlkLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0
aW9uLWlkLW1vZGlmaWVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDAwMGI4NDY4YThlYjZiYTI4YmFhNDMz
MWY2YTJlY2EwNjZkN2RhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9yZXByb2plY3Rpb24taWQtbW9kaWZpZWQuaHRtbApAQCAtMCwwICsxLDM2IEBACis8
IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPHNjcmlwdCBzcmM9InJlc291cmNl
cy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3QxIj4KKyAgICA8ZGl2IGlk
PSJzZWxlY3RlZCI+QTwvZGl2PgorICAgIDxkaXY+QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2Pgor
ICAgIDxkaXY+RDwvZGl2PgorICAgIDxkaXY+RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rp
dj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIi
PjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsKKwordmFyIGhvc3QyID0gc2hhZG93Um9vdDEuZ2V0
RWxlbWVudEJ5SWQoJ2hvc3QyJyk7Cit2YXIgc2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93
Um9vdChob3N0Mik7CitzaGFkb3dSb290Mi5pbm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIj
c2VsZWN0ZWQiPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEEg
PSBzZWxlY3RlZDsKKyAgICBBLmlkID0gJyc7CisgICAgRi5pZCA9ICdzZWxlY3RlZCc7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30sIDApOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZlZGRlZTY0YTU0
NTAxZjlmM2U1ODA1MWIwMGNiYTk2YjNmYjBkZTEuLmM5ZjQwZjFiYzNkN2ExNDZmOGU4MTBiZGQz
YzQ3YzNlNGIxNDE4NzMgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMTEt
MTUgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENo
YW5naW5nIGlkLCBjbGFzc05hbWUsIG9yIGF0dHJpYnV0ZSBzaG91bGQgaW52YWxpZGF0ZSBkaXN0
cmlidXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMDczOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIHRlc3QgY29kZSB0byBtb2RpZnkgaWQvY2xhc3MvYXR0cmlidXRlLgorCisgICAgICAg
ICogRE9NL01vZGlmeUF0dHJpYnV0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBET00vcmVzb3Vy
Y2VzL2RvbS1wZXJmL21vZGlmeS1hdHRyaWJ1dGUuanM6IEFkZGVkLgorICAgICAgICAoTW9kaWZ5
QXR0cmlidXRlLkNyZWF0ZUVsZW1lbnRUb1NldFVwKToKKyAgICAgICAgKE1vZGlmeUF0dHJpYnV0
ZS5Nb2RpZnlJZCk6CisgICAgICAgIChNb2RpZnlBdHRyaWJ1dGUuTW9kaWZ5Q2xhc3MpOgorICAg
ICAgICAoTW9kaWZ5QXR0cmlidXRlLk1vZGlmeVRpdGxlKToKKwogMjAxMi0xMS0xNCAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBydW5Db3VudCBpbiBydW5uZXIu
anMgc2hvdWxkIGJlIHJlbmFtZWQgdG8gaXRlcmF0aW9uQ291bnQKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvRE9NL01vZGlmeUF0dHJpYnV0ZS5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9E
T00vTW9kaWZ5QXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDFlMjU5YzlmZDM0Yjc1OTg3NmUy
ZDQwN2I5MDIyZjc1NTcwMDE0NgotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
RE9NL01vZGlmeUF0dHJpYnV0ZS5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PHNwYW4gaWQ9ImJlbmNobWFy
a19jb250ZW50Ij48L3NwYW4+PC9kaXY+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIg
c3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4
dC9qYXZhc2NyaXB0IiBzcmM9InJlc291cmNlcy9kb20tcGVyZi5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJyZXNvdXJjZXMvZG9tLXBlcmYvbW9kaWZ5
LWF0dHJpYnV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PnJ1bkJlbmNobWFya1N1aXRlKE1vZGlm
eUF0dHJpYnV0ZVRlc3QpOzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9ET00vcmVzb3VyY2VzL2RvbS1wZXJmL21vZGlmeS1hdHRyaWJ1dGUu
anMgYi9QZXJmb3JtYW5jZVRlc3RzL0RPTS9yZXNvdXJjZXMvZG9tLXBlcmYvbW9kaWZ5LWF0dHJp
YnV0ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zYjZlNDE5NGU2ZmE3ZGYwOTY5M2JhYmMwMTg1OWQ1NDY2MDBm
Nzk0Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9ET00vcmVzb3VyY2VzL2Rv
bS1wZXJmL21vZGlmeS1hdHRyaWJ1dGUuanMKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8vIE1vZGlmeUF0dHJp
YnV0ZSAtIG1lYXN1cmUgYXR0cmlidXRlIG1vZGlmaWNhdGlvbiBwZXJmb3JtYW5jZQorCit2YXIg
TW9kaWZ5QXR0cmlidXRlID0ge307Cit2YXIgbkxvb3BzID0gMTAwMDAwOworCitNb2RpZnlBdHRy
aWJ1dGUuQ3JlYXRlRWxlbWVudFRvU2V0VXAgPSBmdW5jdGlvbigpIHsKKyAgICByZXR1cm4gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cit9CisKK01vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlJ
ZCA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAgICB2YXIgbkxvb3BzID0gd2luZG93Lm5Mb29wczsK
KyAgICB2YXIgaWRWYWx1ZTEgPSAnaWQxJzsKKyAgICB2YXIgaWRWYWx1ZTIgPSAnaWQyJzsKKwor
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbkxvb3BzOyArK2kpIHsKKyAgICAgICAgZWxlbWVudC5p
ZCA9IGlkVmFsdWUxOworICAgICAgICBlbGVtZW50LmlkID0gaWRWYWx1ZTI7ICAgICAgICAgICAg
ICAgICAgICAgICAgCisgICAgfQorfQorCitNb2RpZnlBdHRyaWJ1dGUuTW9kaWZ5Q2xhc3MgPSBm
dW5jdGlvbihlbGVtZW50KSB7CisgICAgdmFyIG5Mb29wcyA9IHdpbmRvdy5uTG9vcHM7CisgICAg
dmFyIGNsYXNzTmFtZTEgPSAnY2xhc3MxJzsKKyAgICB2YXIgY2xhc3NOYW1lMiA9ICdjbGFzczIn
OworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuTG9vcHM7ICsraSkgeworICAgICAgICBlbGVt
ZW50LmNsYXNzTmFtZSA9IGNsYXNzTmFtZTE7CisgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0g
Y2xhc3NOYW1lMjsKKyAgICB9Cit9CisKK01vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlUaXRsZSA9IGZ1
bmN0aW9uKGVsZW1lbnQpIHsKKyAgICB2YXIgbkxvb3BzID0gd2luZG93Lm5Mb29wczsKKyAgICB2
YXIgdGl0bGUxID0gJ3RpdGxlMSc7CisgICAgdmFyIHRpdGxlMiA9ICd0aXRsZTInOworCisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBuTG9vcHM7ICsraSkgeworICAgICAgICBlbGVtZW50LnRpdGxl
ID0gdGl0bGUxOworICAgICAgICBlbGVtZW50LnRpdGxlID0gdGl0bGUyOworICAgIH0KK30KKwor
dmFyIE1vZGlmeUF0dHJpYnV0ZVRlc3QgPSBuZXcgQmVuY2htYXJrU3VpdGUoJ01vZGlmeUF0dHJp
YnV0ZScsIFsKKyAgICBuZXcgQmVuY2htYXJrKCJNb2RpZnkgaWQiLCBNb2RpZnlBdHRyaWJ1dGUu
TW9kaWZ5SWQsIE1vZGlmeUF0dHJpYnV0ZS5DcmVhdGVFbGVtZW50VG9TZXRVcCksCisgICAgbmV3
IEJlbmNobWFyaygiTW9kaWZ5IGNsYXNzIiwgTW9kaWZ5QXR0cmlidXRlLk1vZGlmeUNsYXNzLCBN
b2RpZnlBdHRyaWJ1dGUuQ3JlYXRlRWxlbWVudFRvU2V0VXApLAorICAgIG5ldyBCZW5jaG1hcmso
Ik1vZGlmeSB0aXRsZSIsIE1vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlUaXRsZSwgTW9kaWZ5QXR0cmli
dXRlLkNyZWF0ZUVsZW1lbnRUb1NldFVwKQorXSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174888</attachid>
            <date>2012-11-18 21:49:08 -0800</date>
            <delta_ts>2012-11-21 06:12:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100738-20121119144659.patch</filename>
            <type>text/plain</type>
            <size>31758</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MDkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTk5MzgzMDYyYmQ0MGZl
ZTIwODE0NDBhYjQ5OTYzNDgxNmEwN2ZiMi4uYWQ0ZjY5YTc5MWE4ZGZjMmQ4MjNhMTBlNTRjOTJi
NjM2MGIwZjUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTExLTE4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2luZyBp
ZCwgY2xhc3NOYW1lLCBvciBhdHRyaWJ1dGUgc2hvdWxkIGludmFsaWRhdGUgZGlzdHJpYnV0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIGlk
LCBjbGFzc05hbWUsIG9yIGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLCB3ZSBtaWdodCBoYXZlIHRvIGlu
dmFsaWRhdGUgZGlzdHJpYnV0aW9uLgorICAgICAgICBIb3dldmVyLCB3ZSBkb24ndCB3YW50IHRv
IGRvIHVzZWxlc3MgaW52YWxpZGF0aW9uLiBTbyB3ZSBjb25zdWx0IHdpdGggdGhlIFJ1bGVGZWF0
dXJlU2V0IG9mIEVsZW1lbnRTaGFkb3cKKyAgICAgICAgdG8gaW52YWxpZGF0ZSBkaXN0cmlidXRp
b24gb25seSBpZiBuZWNlc3NhcnkuCisKKyAgICAgICAgRm9yIHRoZSBjb2RlIHRoYXQgY2xhc3NO
YW1lIGlzIGNoYW5nZWQsIHdlIGNhbiBzaGFyZSBhIGxvdCBvZiBjb2RlIGJldHdlZW4gaW52YWxp
ZGF0aW5nIGRpc3RyaWJ1dGlvbiBhbmQKKyAgICAgICAgaW52YWxpZGF0aW5nIHN0eWxlLiBTbyB3
ZSBtYWRlIGNoZWNrTmVlZHNTdHlsZUludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlIGEgdGVtcGxh
dGUgbWV0aG9kLCBhbmQgc2hhcmUgaXQuCisKKyAgICAgICAgU2luY2UgYXR0cmlidXRlQ2hhbmdl
ZCgpIGlzIGEgaG90IG1ldGhvZCwgd2UgZG9uJ3Qgd2FudCB0byBtYWtlIGl0IHNsb3cuIFNvIHdl
IG1hZGUgb25lIGZ1bmN0aW9uIHRvIGRldGVybWluZQorICAgICAgICB3aGV0aGVyIHdlIGhhdmUg
dG8gaW52YWxpZGF0ZSBkaXN0cmlidXRpb24sIGFuZCBtYWtlIGl0IGNhbGxlZCBvbmx5IGlmIG5l
Y2Vzc2FyeS4gQWxzbywgd2UndmUgb3B0aW1pemVkCisgICAgICAgIHNoYWRvd09mUGFyZW50Rm9y
RGlzdHJpYnV0aW9uKCkgYnkgbWFraW5nIGlzSW5zZXJ0aW9uUG9pbnQoKSBkZS12aXJ0dWFsZWQu
IFdlIGNvbnN1ZGVkIE5vZGVGbGFncyAoSXNJbnNlcnRpb25Qb2ludEZsYWcpCisgICAgICAgIGZv
ciB0aGlzIHB1cnBvc2UuCisKKyAgICAgICAgV2UndmUgbWVhc3VyZWQgaG93IHRoaXMgcGF0Y2gg
bWFrZXMgY2hhbmdpbmcgYXR0cmlidXRlIHNsb3cuIEkndmUgbWVhc3VyZWQgZWFjaCBjb2RlIDMg
dGltZXMuCisgICAgICAgIERPTS9Nb2RpZnlBdHRyaWJ1dGUuaHRtbCBpcyBhIG1pY3JvIGJlbmNo
bWFyayB3aGljaCBjaGFuZ2VzIGF0dHJpYnV0ZSBhIGxvdCBvZiB0aW1lcy4gVGhlIHJlc3VsdCBv
ZiB0aGlzIGJlbmNobWFyaworICAgICAgICB3aWxsIGJlIHRoZSBtb3N0IGFmZmVjdGVkIGJ5IHRo
aXMgcGF0Y2guIEhvd2V2ZXIsIGl0J3Mgb25seSAyJSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uLgor
CisgICAgICAgIERPTS9Nb2RpZnlBdHRyaWJ1dGUuaHRtbAorICAgICAgICBCZWZvcmUgdGhpcyBw
YXRjaDoKKyAgICAgICAgICAgICAgICBtZWRpYW4gIHN0ZGV2ICAgIG1pbiAgICBtYXggICAgW21z
XQorICAgICAgICAgIDFzdCAgICA0OTQuMCAgIDMuMzYgIDQ5MC4wICA1MDIuMAorICAgICAgICAg
IDJuZCAgICA1MDMuNSAgIDMuNDQgIDQ5Ny4wICA1MTIuMAorICAgICAgICAgIDNyZCAgICA0OTQu
MCAgIDMuNDggIDQ4OC4wICA0OTkuMAorCisgICAgICAgIEFmdGVyIHRoaXMgcGF0Y2g6CisgICAg
ICAgICAgICAgICAgbWVkaWFuICBzdGRldiAgbWluICAgICAgbWF4ICAgIFttc10KKyAgICAgICAg
ICAxc3QgICAgNTA0LjAgICAyLjAwICA1MDEuMCAgNTA5LjAKKyAgICAgICAgICAybmQgICAgNTA1
LjUgICAzLjA4ICA1MDAuMCAgNTEzLjAKKyAgICAgICAgICAzcmQgICAgNTA3LjAgICAyLjMyICA1
MDIuMCAgNTEwLjAKKworICAgICAgICBUZXN0czogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlv
bi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9kb20vc2hhZG93
L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC5odG1sCisgICAgICAgICAgICAg
ICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2Rp
ZmllZC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWlk
LW1vZGlmaWVkLmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SGFz
U2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVuY3Rvcjo6SGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVu
Y3Rvcik6CisgICAgICAgIChIYXNTZWxlY3RvckZvckNsYXNzU3R5bGVGdW5jdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6Okhhc1NlbGVjdG9yRm9yQ2xhc3NTdHlsZUZ1bmN0b3I6Om9wZXJhdG9yKCkp
OiBSZXR1cm5zIHRydWUgaWYgU3R5bGVSZXNvbHZlcjo6aGFzU2VsZWN0b3JGb3JDbGFzcyByZXR1
cm5zIHRydWUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okhhc1NlbGVj
dG9yRm9yQ2xhc3NEaXN0cmlidXRpb25GdW5jdG9yOjpIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJp
YnV0aW9uRnVuY3Rvcik6CisgICAgICAgIChIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJpYnV0aW9u
RnVuY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJpYnV0
aW9uRnVuY3Rvcjo6b3BlcmF0b3IoKSk6IFJldHVybnMgdHJ1ZSBpZiBFbGVtZW50U2hhZG93Ojpo
YXNTZWxlY3RGb3JDbGFzcyByZXR1cm5zIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpjaGVja0Z1
bmN0b3JGb3JDbGFzc0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja05lZWRzU3R5bGVJ
bnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpjaGVja05lZWRz
RGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UpOiBFeHRyYWN0ZWQgdGhlIGlt
cGxlbWVudGF0aW9uIHRvIGNoZWNrRnVuY3RvckZvckNsYXNzQ2hhbmdlLgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6c2hvdWxkSW52YWxpZGF0ZURpc3RyaWJ1dGlvbldoZW5BdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoRWxlbWVudCk6Cisg
ICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzSW5zZXJ0aW9u
UG9pbnQpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuaDoKKyAgICAgICAgKEhUTUxFbGVt
ZW50KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNlcnRpb25Qb2ludDo6SW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAqIGh0
bWwvc2hhZG93L0luc2VydGlvblBvaW50Lmg6CisgICAgICAgIChJbnNlcnRpb25Qb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjppc0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNo
YWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVS
ZXByb2plY3Rpb24pOgorCiAyMDEyLTExLTE4ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIE1ha2UgbmFtZWRJdGVtIHJldHVybiBhIG5vZGUgbGlzdCBvbmx5IGlu
IEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uIGFuZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCAwOGJkNmVhMDBiYjU5NjU2ZDM5Y2ExM2RkNWE0ZmYxMjM2
NTkyNzAyLi4zMjc2ZDAwODg1YTk2ODgwOGExZDY1ZWRlMTZkODJlMmUyMmY0ZDhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhU
TUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgiCisjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJNdXRhdGlvbk9i
c2VydmVySW50ZXJlc3RHcm91cC5oIgogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCkBAIC03
NTgsNiArNzU5LDExIEBAIHN0YXRpYyBib29sIGNoZWNrTmVlZHNTdHlsZUludmFsaWRhdGlvbkZv
cklkQ2hhbmdlKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkSWQsIGNvCiAKIHZvaWQgRWxlbWVudDo6
YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5ld1ZhbHVlKQogeworICAgIGlmIChFbGVtZW50U2hhZG93KiBwYXJlbnRFbGVtZW50
U2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24odGhpcykpIHsKKyAgICAgICAg
aWYgKHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChwYXJl
bnRFbGVtZW50U2hhZG93LCBuYW1lLCBuZXdWYWx1ZSkpCisgICAgICAgICAgICBwYXJlbnRFbGVt
ZW50U2hhZG93LT5pbnZhbGlkYXRlRGlzdHJpYnV0aW9uKCk7CisgICAgfQorCiAgICAgcGFyc2VB
dHRyaWJ1dGUobmFtZSwgbmV3VmFsdWUpOwogCiAgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZl
cnNpb24oKTsKQEAgLTgyMiwyMSArODI4LDQ5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjbGFzc1N0
cmluZ0hhc0NsYXNzTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogICAg
IHJldHVybiBjbGFzc1N0cmluZ0hhc0NsYXNzTmFtZShuZXdDbGFzc1N0cmluZy5jaGFyYWN0ZXJz
MTYoKSwgbGVuZ3RoKTsKIH0KIAotc3RhdGljIGJvb2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0
aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMs
IFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIpCitzdHJ1Y3QgSGFzU2VsZWN0b3JGb3JDbGFz
c1N0eWxlRnVuY3RvciB7CisgICAgZXhwbGljaXQgSGFzU2VsZWN0b3JGb3JDbGFzc1N0eWxlRnVu
Y3RvcihTdHlsZVJlc29sdmVyKiByZXNvbHZlcikKKyAgICAgICAgOiBzdHlsZVJlc29sdmVyKHJl
c29sdmVyKQorICAgIHsgfQorCisgICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IEF0b21pY1N0cmlu
ZyYgY2xhc3NOYW1lKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0eWxlUmVzb2x2ZXIt
Pmhhc1NlbGVjdG9yRm9yQ2xhc3MoY2xhc3NOYW1lKTsKKyAgICB9CisKKyAgICBTdHlsZVJlc29s
dmVyKiBzdHlsZVJlc29sdmVyOworfTsKKworc3RydWN0IEhhc1NlbGVjdG9yRm9yQ2xhc3NEaXN0
cmlidXRpb25GdW5jdG9yIHsKKyAgICBleHBsaWNpdCBIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJp
YnV0aW9uRnVuY3RvcihFbGVtZW50U2hhZG93KiBlbGVtZW50U2hhZG93KQorICAgICAgICA6IGVs
ZW1lbnRTaGFkb3coZWxlbWVudFNoYWRvdykKKyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3Io
KShjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9y
Q2xhc3MoY2xhc3NOYW1lKTsKKyAgICB9CisKKyAgICBFbGVtZW50U2hhZG93KiBlbGVtZW50U2hh
ZG93OworfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3N0YXRpYyBib29sIGNoZWNr
RnVuY3RvckZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIGNoYW5nZWRDbGFz
c2VzLCBGdW5jdG9yIGZ1bmN0b3IpCiB7CiAgICAgdW5zaWduZWQgY2hhbmdlZFNpemUgPSBjaGFu
Z2VkQ2xhc3Nlcy5zaXplKCk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNoYW5nZWRT
aXplOyArK2kpIHsKLSAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xh
c3MoY2hhbmdlZENsYXNzZXNbaV0pKQorICAgICAgICBpZiAoZnVuY3RvcihjaGFuZ2VkQ2xhc3Nl
c1tpXSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1zdGF0aWMgYm9vbCBjaGVja05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0No
YW5nZShjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzLCBjb25zdCBTcGFjZVNwbGl0
U3RyaW5nJiBuZXdDbGFzc2VzLCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQordGVtcGxh
dGU8dHlwZW5hbWUgRnVuY3Rvcj4KK3N0YXRpYyBib29sIGNoZWNrRnVuY3RvckZvckNsYXNzQ2hh
bmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJpbmcmIG9sZENsYXNzZXMsIGNvbnN0IFNwYWNlU3BsaXRT
dHJpbmcmIG5ld0NsYXNzZXMsIEZ1bmN0b3IgZnVuY3RvcikKIHsKICAgICB1bnNpZ25lZCBvbGRT
aXplID0gb2xkQ2xhc3Nlcy5zaXplKCk7CiAgICAgaWYgKCFvbGRTaXplKQotICAgICAgICByZXR1
cm4gY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UobmV3Q2xhc3Nlcywg
c3R5bGVSZXNvbHZlcik7CisgICAgICAgIHJldHVybiBjaGVja0Z1bmN0b3JGb3JDbGFzc0NoYW5n
ZShuZXdDbGFzc2VzLCBmdW5jdG9yKTsKICAgICBCaXRWZWN0b3IgcmVtYWluaW5nQ2xhc3NCaXRz
OwogICAgIHJlbWFpbmluZ0NsYXNzQml0cy5lbnN1cmVTaXplKG9sZFNpemUpOwogICAgIC8vIENs
YXNzIHZlY3RvcnMgdGVuZCB0byBiZSB2ZXJ5IHNob3J0LiBUaGlzIGlzIGZhc3RlciB0aGFuIHVz
aW5nIGEgaGFzaCB0YWJsZS4KQEAgLTg0OCwxOSArODgyLDM5IEBAIHN0YXRpYyBib29sIGNoZWNr
TmVlZHNTdHlsZUludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKGNvbnN0IFNwYWNlU3BsaXRTdHJp
bmcmIG9sCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXItPmhhc1NlbGVjdG9yRm9yQ2xhc3MobmV3Q2xh
c3Nlc1tpXSkpCisgICAgICAgIGlmIChmdW5jdG9yKG5ld0NsYXNzZXNbaV0pKQogICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBvbGRT
aXplOyArK2kpIHsKICAgICAgICAgLy8gSWYgdGhlIGJpdCBpcyBub3Qgc2V0IHRoZSB0aGUgY29y
cmVzcG9uZGluZyBjbGFzcyBoYXMgYmVlbiByZW1vdmVkLgogICAgICAgICBpZiAocmVtYWluaW5n
Q2xhc3NCaXRzLnF1aWNrR2V0KGkpKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlm
IChzdHlsZVJlc29sdmVyLT5oYXNTZWxlY3RvckZvckNsYXNzKG9sZENsYXNzZXNbaV0pKQorICAg
ICAgICBpZiAoZnVuY3RvcihvbGRDbGFzc2VzW2ldKSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVj
a05lZWRzU3R5bGVJbnZhbGlkYXRpb25Gb3JDbGFzc0NoYW5nZShjb25zdCBTcGFjZVNwbGl0U3Ry
aW5nJiBjaGFuZ2VkQ2xhc3NlcywgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3sKKyAg
ICByZXR1cm4gY2hlY2tGdW5jdG9yRm9yQ2xhc3NDaGFuZ2UoY2hhbmdlZENsYXNzZXMsIEhhc1Nl
bGVjdG9yRm9yQ2xhc3NTdHlsZUZ1bmN0b3Ioc3R5bGVSZXNvbHZlcikpOworfQorCitzdGF0aWMg
aW5saW5lIGJvb2wgY2hlY2tOZWVkc1N0eWxlSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29u
c3QgU3BhY2VTcGxpdFN0cmluZyYgb2xkQ2xhc3NlcywgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYg
bmV3Q2xhc3NlcywgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3sKKyAgICByZXR1cm4g
Y2hlY2tGdW5jdG9yRm9yQ2xhc3NDaGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgSGFzU2Vs
ZWN0b3JGb3JDbGFzc1N0eWxlRnVuY3RvcihzdHlsZVJlc29sdmVyKSk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgYm9vbCBjaGVja05lZWRzRGlzdHJpYnV0aW9uSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFu
Z2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgY2hhbmdlZENsYXNzZXMsIEVsZW1lbnRTaGFkb3cq
IGVsZW1lbnRTaGFkb3cpCit7CisgICAgcmV0dXJuIGNoZWNrRnVuY3RvckZvckNsYXNzQ2hhbmdl
KGNoYW5nZWRDbGFzc2VzLCBIYXNTZWxlY3RvckZvckNsYXNzRGlzdHJpYnV0aW9uRnVuY3Rvcihl
bGVtZW50U2hhZG93KSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBjaGVja05lZWRzRGlzdHJp
YnV0aW9uSW52YWxpZGF0aW9uRm9yQ2xhc3NDaGFuZ2UoY29uc3QgU3BhY2VTcGxpdFN0cmluZyYg
b2xkQ2xhc3NlcywgY29uc3QgU3BhY2VTcGxpdFN0cmluZyYgbmV3Q2xhc3NlcywgRWxlbWVudFNo
YWRvdyogZWxlbWVudFNoYWRvdykKK3sKKyAgICByZXR1cm4gY2hlY2tGdW5jdG9yRm9yQ2xhc3ND
aGFuZ2Uob2xkQ2xhc3NlcywgbmV3Q2xhc3NlcywgSGFzU2VsZWN0b3JGb3JDbGFzc0Rpc3RyaWJ1
dGlvbkZ1bmN0b3IoZWxlbWVudFNoYWRvdykpOworfQorCiB2b2lkIEVsZW1lbnQ6OmNsYXNzQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKQogewogICAg
IFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBkb2N1bWVudCgpLT5zdHlsZVJlc29sdmVy
SWZFeGlzdHMoKTsKQEAgLTg5MCw2ICs5NDQsNDEgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKICAgICAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYygpOwogfQogCitib29sIEVsZW1lbnQ6OnNob3VsZEludmFsaWRh
dGVEaXN0cmlidXRpb25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiBlbGVtZW50
U2hhZG93LCBjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d1ZhbHVlKQoreworICAgIEFTU0VSVChlbGVtZW50U2hhZG93KTsKKyAgICBlbGVtZW50U2hhZG93
LT5lbnN1cmVTZWxlY3RGZWF0dXJlU2V0Q29sbGVjdGVkKCk7CisKKyAgICBpZiAoaXNJZEF0dHJp
YnV0ZU5hbWUobmFtZSkpIHsKKyAgICAgICAgQXRvbWljU3RyaW5nIG9sZElkID0gYXR0cmlidXRl
RGF0YSgpLT5pZEZvclN0eWxlUmVzb2x1dGlvbigpOworICAgICAgICBBdG9taWNTdHJpbmcgbmV3
SWQgPSBtYWtlSWRGb3JTdHlsZVJlc29sdXRpb24obmV3VmFsdWUsIGRvY3VtZW50KCktPmluUXVp
cmtzTW9kZSgpKTsKKyAgICAgICAgaWYgKG5ld0lkICE9IG9sZElkKSB7CisgICAgICAgICAgICBp
ZiAoIW9sZElkLmlzRW1wdHkoKSAmJiBlbGVtZW50U2hhZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNl
dCgpLmhhc1NlbGVjdG9yRm9ySWQob2xkSWQpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgaWYgKCFuZXdJZC5pc0VtcHR5KCkgJiYgZWxlbWVudFNoYWRvdy0+c2Vs
ZWN0UnVsZUZlYXR1cmVTZXQoKS5oYXNTZWxlY3RvckZvcklkKG5ld0lkKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChuYW1lID09IEhU
TUxOYW1lczo6Y2xhc3NBdHRyKSB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xh
c3NTdHJpbmcgPSBuZXdWYWx1ZTsKKyAgICAgICAgaWYgKGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1l
KG5ld0NsYXNzU3RyaW5nKSkgeworICAgICAgICAgICAgY29uc3QgRWxlbWVudEF0dHJpYnV0ZURh
dGEqIGF0dHJpYnV0ZURhdGEgPSBlbnN1cmVBdHRyaWJ1dGVEYXRhKCk7CisgICAgICAgICAgICBj
b25zdCBib29sIHNob3VsZEZvbGRDYXNlID0gZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCk7Cisg
ICAgICAgICAgICBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzID0gYXR0cmlidXRl
RGF0YS0+Y2xhc3NOYW1lcygpOworICAgICAgICAgICAgY29uc3QgU3BhY2VTcGxpdFN0cmluZyBu
ZXdDbGFzc2VzKG5ld0NsYXNzU3RyaW5nLCBzaG91bGRGb2xkQ2FzZSk7CisgICAgICAgICAgICBp
ZiAoY2hlY2tOZWVkc0Rpc3RyaWJ1dGlvbkludmFsaWRhdGlvbkZvckNsYXNzQ2hhbmdlKG9sZENs
YXNzZXMsIG5ld0NsYXNzZXMsIGVsZW1lbnRTaGFkb3cpKQorICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKiBh
dHRyaWJ1dGVEYXRhID0gdGhpcy0+YXR0cmlidXRlRGF0YSgpKSB7CisgICAgICAgICAgICBjb25z
dCBTcGFjZVNwbGl0U3RyaW5nJiBvbGRDbGFzc2VzID0gYXR0cmlidXRlRGF0YS0+Y2xhc3NOYW1l
cygpOworICAgICAgICAgICAgaWYgKGNoZWNrTmVlZHNEaXN0cmlidXRpb25JbnZhbGlkYXRpb25G
b3JDbGFzc0NoYW5nZShvbGRDbGFzc2VzLCBlbGVtZW50U2hhZG93KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlbGVtZW50U2hh
ZG93LT5zZWxlY3RSdWxlRmVhdHVyZVNldCgpLmhhc1NlbGVjdG9yRm9yQXR0cmlidXRlKG5hbWUu
bG9jYWxOYW1lKCkpOworfQorCiAvLyBSZXR1cm5zIHRydWUgaXMgdGhlIGdpdmVuIGF0dHJpYnV0
ZSBpcyBhbiBldmVudCBoYW5kbGVyLgogLy8gV2UgY29uc2lkZXIgYW4gZXZlbnQgaGFuZGxlciBh
bnkgYXR0cmlidXRlIHRoYXQgYmVnaW5zIHdpdGggIm9uIi4KIC8vIEl0IGlzIGEgc2ltcGxlIHNv
bHV0aW9uIHRoYXQgaGFzIHRoZSBhZHZhbnRhZ2Ugb2Ygbm90IHJlcXVpcmluZyBhbnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCmluZGV4IGQ4YmQ3Y2UyZWQxYTZiMGQ2NTk2ZjllODEwYTkxZTY3NGVhYzUxM2Uu
LjM2OTFlOTA4Yzg3MzNkYmM0MmIzMjQ3NTgxYTk0NjE4ZjYwNzVlNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaApAQCAtNTIzLDYgKzUyMyw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNyZWF0ZU11dGFi
bGVBdHRyaWJ1dGVEYXRhKCk7CiAKKyAgICBib29sIHNob3VsZEludmFsaWRhdGVEaXN0cmlidXRp
b25XaGVuQXR0cmlidXRlQ2hhbmdlZChFbGVtZW50U2hhZG93KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpOworCiBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0
YSogZWxlbWVudFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhKiBlbnN1cmVF
bGVtZW50UmFyZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGE5OGJjYzhkYTExNjJjYWUwNGZmNGZk
NjY4YzFjODcwNmI4Y2M3NmQuLjJkOWNhY2RiMzEzZjYxM2M4ZDgzMzRiNzljMGRjN2UzOTNlMTM5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaApAQCAtMjM1LDYgKzIzNSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IGJvb2wgaXNQbHVnaW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29s
IGlzRG9jdW1lbnROb2RlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1NoYWRvd1Jvb3QoKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKElzU2hhZG93Um9vdEZsYWcpOyB9CisgICAgYm9vbCBpc0luc2VydGlv
blBvaW50KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0luc2VydGlvblBvaW50RmxhZyk7IH0K
ICAgICBib29sIGluTmFtZWRGbG93KCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJbk5hbWVkRmxv
d0ZsYWcpOyB9CiAgICAgYm9vbCBoYXNDdXN0b21DYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBn
ZXRGbGFnKEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcpOyB9CiAKQEAgLTcyNCw2ICs3MjUsNyBAQCBw
cml2YXRlOgogICAgICAgICBIYXNTY29wZWRIVE1MU3R5bGVDaGlsZEZsYWcgPSAxIDw8IDI2LAog
ICAgICAgICBIYXNFdmVudFRhcmdldERhdGFGbGFnID0gMSA8PCAyNywKICAgICAgICAgSW5FZGVu
RmxhZyA9IDEgPDwgMjgsCisgICAgICAgIElzSW5zZXJ0aW9uUG9pbnRGbGFnID0gMSA8PCAyOSwK
IAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdD
aGlsZHJlbkZpbmlzaGVkRmxhZyB8IEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZsYWcsCkBAIC03MzIs
NyArNzM0LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIH07CiAKLSAgICAvLyAzIGJpdHMgcmVt
YWluaW5nCisgICAgLy8gMiBiaXRzIHJlbWFpbmluZwogCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVG
bGFncyBtYXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lk
IHNldEZsYWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9ICht
X25vZGVGbGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9IApAQCAtNzUwLDcg
Kzc1Miw4IEBAIHByb3RlY3RlZDoKICAgICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVT
dHlsZWRFbGVtZW50IHwgSXNIVE1MRmxhZywgCiAgICAgICAgIENyZWF0ZUZyYW1lT3duZXJFbGVt
ZW50ID0gQ3JlYXRlSFRNTEVsZW1lbnQgfCBIYXNDdXN0b21DYWxsYmFja3NGbGFnLAogICAgICAg
ICBDcmVhdGVTVkdFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8IElzU1ZHRmxhZywKLSAg
ICAgICAgQ3JlYXRlRG9jdW1lbnQgPSBDcmVhdGVDb250YWluZXIgfCBJbkRvY3VtZW50RmxhZwor
ICAgICAgICBDcmVhdGVEb2N1bWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IEluRG9jdW1lbnRGbGFn
LAorICAgICAgICBDcmVhdGVJbnNlcnRpb25Qb2ludCA9IENyZWF0ZUhUTUxFbGVtZW50IHwgSXNJ
bnNlcnRpb25Qb2ludEZsYWcKICAgICB9OwogICAgIE5vZGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rp
b25UeXBlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCmluZGV4IGU4MzdkZjQ0OWUwOGU0
YTIwNzRjYTQ1M2FlZjZhMGRkNDI3MzUxY2EuLjI4NTIxYTg1OTBiNDRmMjIxOTIzZmE3ODI0YTBh
NmFiZjBmNDExZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTEwNiw3ICsxMDYs
NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzSFRNTFVua25vd25FbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIGlzSW5zZXJ0
aW9uUG9pbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0xh
YmVsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmNwcAppbmRleCBkMzRhMDc5NTM4
NDljZTI3MTJiOTcxMDUzN2U0OWJiNDMzNWYyNGU2Li4wNDQzNjgzNjNlZGY5YWRmYzQxMGEzODlm
MDFhMDNkZjZkYzU5MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9J
bnNlcnRpb25Qb2ludC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0
aW9uUG9pbnQuY3BwCkBAIC0zOCw3ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIElu
c2VydGlvblBvaW50OjpJbnNlcnRpb25Qb2ludChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1l
LCBEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBIVE1MRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKKyAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBDcmVhdGVJbnNlcnRpb25Q
b2ludCkKICAgICAsIG1fc2hvdWxkUmVzZXRTdHlsZUluaGVyaXRhbmNlKGZhbHNlKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKaW5kZXggMjNkYWQ4
ZGNhNzA4MTIzMTgyMWY5N2Q4YmYzMDRkNzczMzMyNzZmNy4uZjFjMGFjN2EzNjA4YzBiNmQwNzBi
OWYwODM2M2ZkZTY3ZTM1YTVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvSW5zZXJ0aW9uUG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNl
cnRpb25Qb2ludC5oCkBAIC02Miw3ICs2Miw2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9p
ZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7Ci0gICAgdmlydHVhbCBib29s
IGlzSW5zZXJ0aW9uUG9pbnQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICBib29sIHNob3VsZFVzZUZhbGxiYWNrRWxlbWVudHMoKSBjb25zdDsKIApAQCAtODksMTAgKzg4
LDggQEAgcHJpdmF0ZToKIAogaW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChjb25zdCBOb2Rl
KiBub2RlKQogewotICAgIGlmIChub2RlLT5pc0hUTUxFbGVtZW50KCkgJiYgdG9IVE1MRWxlbWVu
dChub2RlKS0+aXNJbnNlcnRpb25Qb2ludCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IHJldHVybiBmYWxzZTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgcmV0dXJuIG5vZGUtPmlzSW5z
ZXJ0aW9uUG9pbnQoKTsKIH0KIAogaW5saW5lIEluc2VydGlvblBvaW50KiB0b0luc2VydGlvblBv
aW50KE5vZGUqIG5vZGUpCkBAIC0xNDQsOSArMTQxLDcgQEAgaW5saW5lIEVsZW1lbnQqIHBhcmVu
dEVsZW1lbnRGb3JEaXN0cmlidXRpb24oY29uc3QgTm9kZSogbm9kZSkKIAogaW5saW5lIEVsZW1l
bnRTaGFkb3cqIHNoYWRvd09mUGFyZW50Rm9yRGlzdHJpYnV0aW9uKGNvbnN0IE5vZGUqIG5vZGUp
CiB7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gMDsKLQorICAgIEFTU0VSVChub2Rl
KTsKICAgICBpZiAoRWxlbWVudCogcGFyZW50ID0gcGFyZW50RWxlbWVudEZvckRpc3RyaWJ1dGlv
bihub2RlKSkKICAgICAgICAgcmV0dXJuIHBhcmVudC0+c2hhZG93KCk7CiAKQEAgLTE1OCw3ICsx
NTMsNyBAQCBpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3Qg
Tm9kZSogcHJvamVjdGVkTm9kZSkKICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQg
PSAwOwogICAgIGNvbnN0IE5vZGUqIGN1cnJlbnQgPSBwcm9qZWN0ZWROb2RlOwogCi0gICAgd2hp
bGUgKHRydWUpIHsKKyAgICB3aGlsZSAoY3VycmVudCkgewogICAgICAgICBpZiAoRWxlbWVudFNo
YWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnRGb3JEaXN0cmlidXRpb24oY3VycmVudCkpIHsK
ICAgICAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CiAgICAgICAgICAgICBp
ZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ctPmRpc3RyaWJ1dG9yKCkuZmlu
ZEluc2VydGlvblBvaW50Rm9yKHByb2plY3RlZE5vZGUpKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWJkNTMyMGMwYjQ2
YTBjODE2YWVkOTM2MTczNzUyZmEzNGY2NTY4Yi4uOTc0M2M0ZmYyNjY1ZmJiOThiOGNhMDRhYWEy
YWZkYjdiOTA5ZjZkNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTExLTE1ICBTaGlueWEg
S2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2luZyBpZCwg
Y2xhc3NOYW1lLCBvciBhdHRyaWJ1dGUgc2hvdWxkIGludmFsaWRhdGUgZGlzdHJpYnV0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA3MzgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIHRl
c3QgY2FzZXMgdGhhdCBpZC9jbGFzcy9hdHRyaWJ1dGUgaXMgY2hhbmdlZCwgYW5kIHRoaWVyIHJl
cHJvamVjdGlvbiBjYXNlcy4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRp
b24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xhc3NOYW1lLW1vZGlm
aWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9kaXN0
cmlidXRpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9kaXN0cmlidXRpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0
ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvcmVwcm9qZWN0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3Rl
ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvcmVwcm9qZWN0aW9uLWNs
YXNzTmFtZS1tb2RpZmllZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
cmVwcm9qZWN0aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQtbW9kaWZpZWQuaHRtbDogQWRkZWQuCisK
IDIwMTItMTEtMTggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
TWFrZSBuYW1lZEl0ZW0gcmV0dXJuIGEgbm9kZSBsaXN0IG9ubHkgaW4gSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb24gYW5kIEhUTUxPcHRpb25zQ29sbGVjdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQtZXhw
ZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0
cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyODJjN2MwZDkxNWNk
MzcxMzYzNzQyZDMxMzhkNjhkMTJmZTUyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVk
Lmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+
CisKKzxkaXYgaWQ9Imhvc3QiPgorICAgIDxkaXY+RjwvZGl2PgorPC9kaXY+CisKKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tYXR0
cmlidXRlLW1vZGlmaWVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJp
YnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3YzBlNjIyYWVhNWQ4
YjU0NDRkY2M5OTk0MTViZTVkOTY4NTJhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWF0dHJpYnV0ZS1tb2RpZmllZC5odG1sCkBA
IC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3NjcmlwdD4KKworPGRpdiBpZD0iaG9z
dCI+CisgICAgPGRpdj5BPC9kaXY+CisgICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9kaXY+
CisgICAgPGRpdj5EPC9kaXY+CisgICAgPGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+Rjwv
ZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKK3ZhciBzaGFkb3dSb290ID0gbmV3IFdlYktpdFNo
YWRvd1Jvb3QoaG9zdCk7CitzaGFkb3dSb290LmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9
ImRpdlt0aXRsZV0iPjwvY29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg
IEYudGl0bGUgPSAnc29tZXRoaW5nJzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAg
ICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9kaXN0cmlidXRpb24tY2xh
c3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFk
b3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFtZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ5YTY5NWNlMGE3OWM4ZGFlMjAwNmVmMWU2MTNmMDdhMjAyNTc0OWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNzTmFt
ZS1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1s
PgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2PkE8L2Rpdj4K
KyAgICA8ZGl2PkQ8L2Rpdj4KKyAgICA8ZGl2PkY8L2Rpdj4KKzwvZGl2PgorCis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWNsYXNz
TmFtZS1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1
dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTQ4ZTBkZTMzOWIwNjMz
ZWQ3MWM5Y2ZhZjljNGYzYzI4NzI2MDIwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1jbGFzc05hbWUtbW9kaWZpZWQuaHRtbApAQCAt
MCwwICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPHNjcmlw
dCBzcmM9InJlc291cmNlcy9wb2x5ZmlsbC5qcyI+PC9zY3JpcHQ+CisKKzxkaXYgaWQ9Imhvc3Qi
PgorICAgIDxkaXYgY2xhc3M9InNlbGVjdGVkIj5BPC9kaXY+CisgICAgPGRpdj5CPC9kaXY+Cisg
ICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQiPkQ8L2Rpdj4KKyAgICA8
ZGl2PkU8L2Rpdj4KKyAgICA8ZGl2IGlkPSJGIj5GPC9kaXY+Cis8L2Rpdj4KKworPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KwordmFyIHNoYWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0KTsKK3NoYWRvd1Jv
b3QuaW5uZXJIVE1MID0gJzxjb250ZW50IHNlbGVjdD0iLnNlbGVjdGVkIj48L2NvbnRlbnQ+JzsK
Kworc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICBGLmNsYXNzTmFtZSA9ICdzZWxlY3RlZCc7
CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURv
bmUoKTsKK30sIDApOworPC9zY3JpcHQ+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlmaWVkLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGMyODJjN2MwZDkxNWNkMzcxMzYzNzQyZDMxMzhkNjhk
MTJmZTUyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9k
aXN0cmlidXRpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEwIEBACis8
IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8Ym9keT4KKworPGRpdiBpZD0iaG9zdCI+CisgICAg
PGRpdj5GPC9kaXY+Cis8L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2hhZG93L2Rpc3RyaWJ1dGlvbi1pZC1tb2RpZmllZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjRlMzVjZTc5YjZiNzRmMWZlNTQ0ZDM0YzljZGQxOGFhMjMwMGI0YWMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvZGlzdHJpYnV0aW9uLWlkLW1vZGlm
aWVkLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJv
ZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8
ZGl2IGlkPSJob3N0Ij4KKyAgICA8ZGl2IGlkPSJzZWxlY3RlZCI+QTwvZGl2PgorICAgIDxkaXY+
QjwvZGl2PgorICAgIDxkaXY+QzwvZGl2PgorICAgIDxkaXY+RDwvZGl2PgorICAgIDxkaXY+RTwv
ZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIg
c2hhZG93Um9vdCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOworc2hhZG93Um9vdC5pbm5l
ckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIjc2VsZWN0ZWQiPjwvY29udGVudD4nOworCitzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEEgPSBzZWxlY3RlZDsKKyAgICBGLmlkID0gJ3NlbGVj
dGVkJzsgICAgCisgICAgQS5pZCA9ICcnOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1h
dHRyaWJ1dGUtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMmU1YTQyMTlhN2U3MGNjYzllZmQyZTg1YzNjNDhlYTk2YjkyYzhhYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmli
dXRlLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0
bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxkaXYgaWQ9Imhvc3QiPjxkaXY+CisgICAgPGRpdj5G
PC9kaXY+Cis8L2Rpdj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1hdHRyaWJ1dGUtbW9kaWZpZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tYXR0cmlidXRlLW1vZGlmaWVk
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzM1MTY1YjAxZDliZDU2MmM1OGFkMjJhMDJhMGM4ZWFkZTI5MWUw
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2pl
Y3Rpb24tYXR0cmlidXRlLW1vZGlmaWVkLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBF
IGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcG9seWZp
bGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0MSI+CisgICAgPGRpdj5BPC9kaXY+Cisg
ICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAg
PGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRv
d1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rp
dj4nOworCit2YXIgaG9zdDIgPSBzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKTsK
K3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QyKTsKK3NoYWRvd1Jv
b3QyLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9ImRpdlt0aXRsZT1zZWxlY3RlZF0iPjwv
Y29udGVudD4nOworCitzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEYudGl0bGUgPSAnc2Vs
ZWN0ZWQnOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Cit9LCAwKTsKKzwvc2NyaXB0PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUtbW9kaWZpZWQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24t
Y2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGVlOGE2MGM4ODE2
NjljZTA0YWFhMGMyZDYyOTUxZjUyMzhiZjZkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLWV4cGVj
dGVkLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJv
ZHk+CisKKzxkaXYgaWQ9Imhvc3QiPjxkaXY+CisgICAgPGRpdj5BPC9kaXY+CisgICAgPGRpdj5E
PC9kaXY+CisgICAgPGRpdj5GPC9kaXY+Cis8L2Rpdj48L2Rpdj4KKworPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1jbGFzc05hbWUt
bW9kaWZpZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24t
Y2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTczZGE2NjRhZTJmMDUzNWVhNDk4
NGRkMGM5ZjIyMWY5OWJmOWY4MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9yZXByb2plY3Rpb24tY2xhc3NOYW1lLW1vZGlmaWVkLmh0bWwKQEAgLTAsMCAr
MSwzNCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxodG1sPgorPGJvZHk+CisKKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcG9seWZpbGwuanMiPjwvc2NyaXB0PgorCis8ZGl2IGlkPSJob3N0MSI+Cisg
ICAgPGRpdiBjbGFzcz0ic2VsZWN0ZWQiPkE8L2Rpdj4KKyAgICA8ZGl2PkI8L2Rpdj4KKyAgICA8
ZGl2PkM8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJzZWxlY3RlZCI+RDwvZGl2PgorICAgIDxkaXY+
RTwvZGl2PgorICAgIDxkaXYgaWQ9IkYiPkY8L2Rpdj4KKzwvZGl2PgorCis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCit2
YXIgc2hhZG93Um9vdDEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CitzaGFkb3dSb290
MS5pbm5lckhUTUwgPSAnPGRpdiBpZD0iaG9zdDIiPjxzaGFkb3c+PC9zaGFkb3c+PC9kaXY+JzsK
KwordmFyIGhvc3QyID0gc2hhZG93Um9vdDEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QyJyk7Cit2YXIg
c2hhZG93Um9vdDIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0Mik7CitzaGFkb3dSb290Mi5p
bm5lckhUTUwgPSAnPGNvbnRlbnQgc2VsZWN0PSIuc2VsZWN0ZWQiPjwvY29udGVudD4nOworCitz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIEYuY2xhc3NOYW1lID0gJ3NlbGVjdGVkJzsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworfSwgMCk7Cis8L3NjcmlwdD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQtbW9kaWZpZWQtZXhwZWN0ZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQtbW9kaWZpZWQtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yZTVhNDIxOWE3ZTcwY2NjOWVmZDJlODVjM2M0OGVhOTZiOTJj
OGFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJv
amVjdGlvbi1pZC1tb2RpZmllZC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9D
VFlQRSBodG1sPgorCis8aHRtbD4KKzxib2R5PgorCis8ZGl2IGlkPSJob3N0Ij48ZGl2PgorICAg
IDxkaXY+RjwvZGl2PgorPC9kaXY+PC9kaXY+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQtbW9kaWZpZWQuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXByb2plY3Rpb24taWQtbW9kaWZpZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40MDAwYjg0NjhhOGViNmJhMjhiYWE0MzMxZjZhMmVjYTA2NmQ3ZGFiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3JlcHJvamVjdGlvbi1p
ZC1tb2RpZmllZC5odG1sCkBAIC0wLDAgKzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRt
bD4KKzxib2R5PgorCis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3BvbHlmaWxsLmpzIj48L3Njcmlw
dD4KKworPGRpdiBpZD0iaG9zdDEiPgorICAgIDxkaXYgaWQ9InNlbGVjdGVkIj5BPC9kaXY+Cisg
ICAgPGRpdj5CPC9kaXY+CisgICAgPGRpdj5DPC9kaXY+CisgICAgPGRpdj5EPC9kaXY+CisgICAg
PGRpdj5FPC9kaXY+CisgICAgPGRpdiBpZD0iRiI+RjwvZGl2PgorPC9kaXY+CisKKzxzY3JpcHQ+
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7
CisKK3ZhciBzaGFkb3dSb290MSA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QxKTsKK3NoYWRv
d1Jvb3QxLmlubmVySFRNTCA9ICc8ZGl2IGlkPSJob3N0MiI+PHNoYWRvdz48L3NoYWRvdz48L2Rp
dj4nOworCit2YXIgaG9zdDIgPSBzaGFkb3dSb290MS5nZXRFbGVtZW50QnlJZCgnaG9zdDInKTsK
K3ZhciBzaGFkb3dSb290MiA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QyKTsKK3NoYWRvd1Jv
b3QyLmlubmVySFRNTCA9ICc8Y29udGVudCBzZWxlY3Q9IiNzZWxlY3RlZCI+PC9jb250ZW50Pic7
CisKK3NldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgQSA9IHNlbGVjdGVkOworICAgIEEuaWQg
PSAnJzsKKyAgICBGLmlkID0gJ3NlbGVjdGVkJzsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMCk7Cis8L3NjcmlwdD4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmVkZGVlNjRhNTQ1MDFmOWYzZTU4MDUxYjAwY2JhOTZi
M2ZiMGRlMS4uYzlmNDBmMWJjM2Q3YTE0NmY4ZTgxMGJkZDNjNDdjM2U0YjE0MTg3MyAxMDA2NDQK
LS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0xMS0xNSAgU2hpbnlhIEthd2FuYWthICA8
c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdpbmcgaWQsIGNsYXNzTmFtZSwg
b3IgYXR0cmlidXRlIHNob3VsZCBpbnZhbGlkYXRlIGRpc3RyaWJ1dGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNzM4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgdGVzdCBjb2RlIHRvIG1v
ZGlmeSBpZC9jbGFzcy9hdHRyaWJ1dGUuCisKKyAgICAgICAgKiBET00vTW9kaWZ5QXR0cmlidXRl
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIERPTS9yZXNvdXJjZXMvZG9tLXBlcmYvbW9kaWZ5LWF0
dHJpYnV0ZS5qczogQWRkZWQuCisgICAgICAgIChNb2RpZnlBdHRyaWJ1dGUuQ3JlYXRlRWxlbWVu
dFRvU2V0VXApOgorICAgICAgICAoTW9kaWZ5QXR0cmlidXRlLk1vZGlmeUlkKToKKyAgICAgICAg
KE1vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlDbGFzcyk6CisgICAgICAgIChNb2RpZnlBdHRyaWJ1dGUu
TW9kaWZ5VGl0bGUpOgorCiAyMDEyLTExLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIHJ1bkNvdW50IGluIHJ1bm5lci5qcyBzaG91bGQgYmUgcmVuYW1lZCB0
byBpdGVyYXRpb25Db3VudApkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9ET00vTW9kaWZ5
QXR0cmlidXRlLmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL0RPTS9Nb2RpZnlBdHRyaWJ1dGUuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMWUyNTljOWZkMzRiNzU5ODc2ZTJkNDA3YjkwMjJmNzU1NzAwMTQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9ET00vTW9kaWZ5QXR0cmlidXRlLmh0
bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPGRp
diBpZD0iY29udGFpbmVyIj48c3BhbiBpZD0iYmVuY2htYXJrX2NvbnRlbnQiPjwvc3Bhbj48L2Rp
dj4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4uL3Jlc291cmNlcy9ydW5u
ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icmVz
b3VyY2VzL2RvbS1wZXJmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9InJlc291cmNlcy9kb20tcGVyZi9tb2RpZnktYXR0cmlidXRlLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQ+cnVuQmVuY2htYXJrU3VpdGUoTW9kaWZ5QXR0cmlidXRlVGVzdCk7PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0RPTS9y
ZXNvdXJjZXMvZG9tLXBlcmYvbW9kaWZ5LWF0dHJpYnV0ZS5qcyBiL1BlcmZvcm1hbmNlVGVzdHMv
RE9NL3Jlc291cmNlcy9kb20tcGVyZi9tb2RpZnktYXR0cmlidXRlLmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEz
NjU4ZTlhZWZmMGEzMzZkOTM2N2JmOTliODZlMzZlZDIyZGQ3NjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9QZXJmb3JtYW5jZVRlc3RzL0RPTS9yZXNvdXJjZXMvZG9tLXBlcmYvbW9kaWZ5LWF0dHJpYnV0
ZS5qcwpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworLy8gTW9kaWZ5QXR0cmlidXRlIC0gbWVhc3VyZSBhdHRyaWJ1
dGUgbW9kaWZpY2F0aW9uIHBlcmZvcm1hbmNlCisKK3ZhciBNb2RpZnlBdHRyaWJ1dGUgPSB7fTsK
K3ZhciBuTG9vcHMgPSA1MDAwMDA7CisKK01vZGlmeUF0dHJpYnV0ZS5DcmVhdGVFbGVtZW50VG9T
ZXRVcCA9IGZ1bmN0aW9uKCkgeworICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKK30KKworTW9kaWZ5QXR0cmlidXRlLk1vZGlmeUlkID0gZnVuY3Rpb24oZWxlbWVudCkg
eworICAgIHZhciBuTG9vcHMgPSB3aW5kb3cubkxvb3BzOworICAgIHZhciBpZFZhbHVlMSA9ICdp
ZDEnOworICAgIHZhciBpZFZhbHVlMiA9ICdpZDInOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBuTG9vcHM7ICsraSkgeworICAgICAgICBlbGVtZW50LmlkID0gaWRWYWx1ZTE7CisgICAgICAg
IGVsZW1lbnQuaWQgPSBpZFZhbHVlMjsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9Cit9
CisKK01vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlDbGFzcyA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKKyAg
ICB2YXIgbkxvb3BzID0gd2luZG93Lm5Mb29wczsKKyAgICB2YXIgY2xhc3NOYW1lMSA9ICdjbGFz
czEnOworICAgIHZhciBjbGFzc05hbWUyID0gJ2NsYXNzMic7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG5Mb29wczsgKytpKSB7CisgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NO
YW1lMTsKKyAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWUyOworICAgIH0KK30K
KworTW9kaWZ5QXR0cmlidXRlLk1vZGlmeVRpdGxlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAg
IHZhciBuTG9vcHMgPSB3aW5kb3cubkxvb3BzOworICAgIHZhciB0aXRsZTEgPSAndGl0bGUxJzsK
KyAgICB2YXIgdGl0bGUyID0gJ3RpdGxlMic7CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5M
b29wczsgKytpKSB7CisgICAgICAgIGVsZW1lbnQudGl0bGUgPSB0aXRsZTE7CisgICAgICAgIGVs
ZW1lbnQudGl0bGUgPSB0aXRsZTI7CisgICAgfQorfQorCit2YXIgTW9kaWZ5QXR0cmlidXRlVGVz
dCA9IG5ldyBCZW5jaG1hcmtTdWl0ZSgnTW9kaWZ5QXR0cmlidXRlJywgWworICAgIG5ldyBCZW5j
aG1hcmsoIk1vZGlmeSBpZCIsIE1vZGlmeUF0dHJpYnV0ZS5Nb2RpZnlJZCwgTW9kaWZ5QXR0cmli
dXRlLkNyZWF0ZUVsZW1lbnRUb1NldFVwKSwKKyAgICBuZXcgQmVuY2htYXJrKCJNb2RpZnkgY2xh
c3MiLCBNb2RpZnlBdHRyaWJ1dGUuTW9kaWZ5Q2xhc3MsIE1vZGlmeUF0dHJpYnV0ZS5DcmVhdGVF
bGVtZW50VG9TZXRVcCksCisgICAgbmV3IEJlbmNobWFyaygiTW9kaWZ5IHRpdGxlIiwgTW9kaWZ5
QXR0cmlidXRlLk1vZGlmeVRpdGxlLCBNb2RpZnlBdHRyaWJ1dGUuQ3JlYXRlRWxlbWVudFRvU2V0
VXApCitdKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>