<?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>97151</bug_id>
          
          <creation_ts>2012-09-19 17:40:34 -0700</creation_ts>
          <short_desc>Support re-projection for Shadow DOM.</short_desc>
          <delta_ts>2012-10-11 09:25:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96988</dependson>
          <blocked>96986</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>723999</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-09-19 17:40:34 -0700</bug_when>
    <thetext>ComposedShadowTreeWalker needs to be updated so that it should be aware of re-projection of Shadow DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725218</commentid>
    <comment_count>1</comment_count>
      <attachid>165061</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-09-21 00:18:10 -0700</bug_when>
    <thetext>Created attachment 165061
wip. including other patches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725585</commentid>
    <comment_count>2</comment_count>
      <attachid>165061</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-21 09:46:57 -0700</bug_when>
    <thetext>Comment on attachment 165061
wip. including other patches

This is starting to come together!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728183</commentid>
    <comment_count>3</comment_count>
      <attachid>165723</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-25 21:20:26 -0700</bug_when>
    <thetext>Created attachment 165723
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728191</commentid>
    <comment_count>4</comment_count>
      <attachid>165727</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-09-25 21:38:47 -0700</bug_when>
    <thetext>Created attachment 165727
Test case

span 1, span 2, span 3, and span 4 should be displayed as console message in this order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728226</commentid>
    <comment_count>5</comment_count>
      <attachid>165723</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 23:10:32 -0700</bug_when>
    <thetext>Comment on attachment 165723
WIP

Attachment 165723 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14035295

New failing tests:
fast/dom/shadow/shadow-dom-event-dispatching.html
fast/dom/shadow/composed-shadow-tree-walker.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734634</commentid>
    <comment_count>6</comment_count>
      <attachid>167092</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-04 06:13:38 -0700</bug_when>
    <thetext>Created attachment 167092
Rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734641</commentid>
    <comment_count>7</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-04 06:29:17 -0700</bug_when>
    <thetext>The patch can be applied on https://bugs.webkit.org/attachment.cgi?id=167079.

(In reply to comment #6)
&gt; Created an attachment (id=167092) [details]
&gt; Rebase


There are still about 10 failing layout tests. Let me fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736001</commentid>
    <comment_count>8</comment_count>
      <attachid>167092</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-05 15:01:01 -0700</bug_when>
    <thetext>Comment on attachment 167092
Rebase

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

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:248
&gt; +        if (InsertionPoint* insertedTo = shadow-&gt;insertionPointFor(node)) {
&gt; +            current = insertedTo;
&gt; +            insertionPoint = insertedTo;

Are you sure this is the right approach? I think we&apos;re skipping all the intermediate insertion points here. Shouldn&apos;t we be adding them to the parent chain instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737321</commentid>
    <comment_count>9</comment_count>
      <attachid>167092</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-08 18:42:08 -0700</bug_when>
    <thetext>Comment on attachment 167092
Rebase

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

&gt;&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:248
&gt;&gt; +            insertionPoint = insertedTo;
&gt; 
&gt; Are you sure this is the right approach? I think we&apos;re skipping all the intermediate insertion points here. Shouldn&apos;t we be adding them to the parent chain instead?

We have two walkers, ComposedShadowTreeWalker and ComposedShadowTreeParentWalker.

- The former is used in Rendering, which can skip all the intermediate insertion points. So this static function is okay for that.
- The latter is used in EventDispatcher, which can not skip all the intermediate insertion points. I have to update ParentWalker later, where we add all intermediate insertion points to the ancestor chain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737331</commentid>
    <comment_count>10</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-08 18:47:43 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 167092 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167092&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:248
&gt; &gt;&gt; +            insertionPoint = insertedTo;
&gt; &gt; 
&gt; &gt; Are you sure this is the right approach? I think we&apos;re skipping all the intermediate insertion points here. Shouldn&apos;t we be adding them to the parent chain instead?
&gt; 
&gt; We have two walkers, ComposedShadowTreeWalker and ComposedShadowTreeParentWalker.
&gt; 
&gt; - The former is used in Rendering, which can skip all the intermediate insertion points. So this static function is okay for that.
&gt; - The latter is used in EventDispatcher, which can not skip all the intermediate insertion points. I have to update ParentWalker later, where we add all intermediate insertion points to the ancestor chain.

Ahh, I see.

We should file a bug somewhere to rename these walkers to actually reflect how they are used. The distinction was lost on me, and I reviewed most of that code :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737348</commentid>
    <comment_count>11</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-08 19:10:53 -0700</bug_when>
    <thetext>Yeah, al least, ComposedShadowTreeParentWalker is not a good name. 
That is used only from EventDispatcher. That should have a better name. Let me rename it later.

(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 167092 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=167092&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/dom/ComposedShadowTreeWalker.cpp:248
&gt; &gt; &gt;&gt; +            insertionPoint = insertedTo;
&gt; &gt; &gt; 
&gt; &gt; &gt; Are you sure this is the right approach? I think we&apos;re skipping all the intermediate insertion points here. Shouldn&apos;t we be adding them to the parent chain instead?
&gt; &gt; 
&gt; &gt; We have two walkers, ComposedShadowTreeWalker and ComposedShadowTreeParentWalker.
&gt; &gt; 
&gt; &gt; - The former is used in Rendering, which can skip all the intermediate insertion points. So this static function is okay for that.
&gt; &gt; - The latter is used in EventDispatcher, which can not skip all the intermediate insertion points. I have to update ParentWalker later, where we add all intermediate insertion points to the ancestor chain.
&gt; 
&gt; Ahh, I see.
&gt; 
&gt; We should file a bug somewhere to rename these walkers to actually reflect how they are used. The distinction was lost on me, and I reviewed most of that code :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737624</commentid>
    <comment_count>12</comment_count>
      <attachid>167726</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-09 03:52:37 -0700</bug_when>
    <thetext>Created attachment 167726
WIP. We have to update an event re-targeting algorithm for re-projection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737630</commentid>
    <comment_count>13</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-09 04:01:01 -0700</bug_when>
    <thetext>One test, fast/dom/shadow/shadow-dom/event-dispatching.html is failing.
I have to update an event re-targeting algorithm fo re-projection.

(In reply to comment #12)
&gt; Created an attachment (id=167726) [details]
&gt; WIP. We have to update an event re-targeting algorithm for re-projection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738479</commentid>
    <comment_count>14</comment_count>
      <attachid>167905</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-09 20:34:17 -0700</bug_when>
    <thetext>Created attachment 167905
WIP. Pass all tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738737</commentid>
    <comment_count>15</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-10 01:35:35 -0700</bug_when>
    <thetext>It turned out that I have to update ContentDistributor further so that &lt;shadow&gt; element is ready for re-projection.

(In reply to comment #14)
&gt; Created an attachment (id=167905) [details]
&gt; WIP. Pass all tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738790</commentid>
    <comment_count>16</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-10 03:29:40 -0700</bug_when>
    <thetext>It seems we have to use 2-pass algorithm to resolve distributions for multiple shadow roots.

The first pass:
  From younger to older:
    Resolve distributions for &lt;content&gt; element.  Because &lt;content&gt; element in younger shadow root has higher priority to get host&apos;s children than older&apos;s.

The second pass:
  From older to younger:
    Resolve distribution for &lt;shadow&gt; element. Since &lt;shadow&gt; elements depend on the older&apos;s shadowroot&apos;s direct children, which might be a &lt;content&gt; element.

Hmm. I am wondering whether this (2-path) is really acceptable solution or not.

(In reply to comment #15)
&gt; It turned out that I have to update ContentDistributor further so that &lt;shadow&gt; element is ready for re-projection.
&gt; 
&gt; (In reply to comment #14)
&gt; &gt; Created an attachment (id=167905) [details] [details]
&gt; &gt; WIP. Pass all tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739062</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-10 10:21:29 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; It seems we have to use 2-pass algorithm to resolve distributions for multiple shadow roots.
&gt; 
&gt; The first pass:
&gt;   From younger to older:
&gt;     Resolve distributions for &lt;content&gt; element.  Because &lt;content&gt; element in younger shadow root has higher priority to get host&apos;s children than older&apos;s.
&gt; 
&gt; The second pass:
&gt;   From older to younger:
&gt;     Resolve distribution for &lt;shadow&gt; element. Since &lt;shadow&gt; elements depend on the older&apos;s shadowroot&apos;s direct children, which might be a &lt;content&gt; element.
&gt; 
&gt; Hmm. I am wondering whether this (2-path) is really acceptable solution or not.

Let&apos;s not stress about &lt;shadow&gt; just yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739093</commentid>
    <comment_count>18</comment_count>
      <attachid>167905</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-10 10:35:07 -0700</bug_when>
    <thetext>Comment on attachment 167905
WIP. Pass all tests.

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

This looks good as is (aside from commented out code and frpintfs of course).

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.h:177
&gt; +    enum TraversalState {TraversingParent, CrossingInsertionPoint};

Does this have to be an enum? Seems like bool m_isCrossingInsertionPoint, based its use.

&gt; Source/WebCore/dom/ComposedShadowTreeWalker.h:179
&gt; +    const Node* m_distributedNode;

Yep. That&apos;s what I need to add to the spec, too :-\

&gt; Source/WebCore/html/shadow/ContentDistributor.cpp:74
&gt; +            for (Node* fallbackNode = insertionPoint-&gt;firstChild(); fallbackNode; fallbackNode = fallbackNode-&gt;nextSibling())
&gt; +                pool.append(fallbackNode);

This is interesting. I need to add that in spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739762</commentid>
    <comment_count>19</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-11 02:49:27 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; It seems we have to use 2-pass algorithm to resolve distributions for multiple shadow roots.
&gt; &gt; 
&gt; &gt; The first pass:
&gt; &gt;   From younger to older:
&gt; &gt;     Resolve distributions for &lt;content&gt; element.  Because &lt;content&gt; element in younger shadow root has higher priority to get host&apos;s children than older&apos;s.
&gt; &gt; 
&gt; &gt; The second pass:
&gt; &gt;   From older to younger:
&gt; &gt;     Resolve distribution for &lt;shadow&gt; element. Since &lt;shadow&gt; elements depend on the older&apos;s shadowroot&apos;s direct children, which might be a &lt;content&gt; element.
&gt; &gt; 
&gt; &gt; Hmm. I am wondering whether this (2-path) is really acceptable solution or not.
&gt; 
&gt; Let&apos;s not stress about &lt;shadow&gt; just yet.

I agree. Let me file that as another bug. Nobody doesn&apos;t need it yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739768</commentid>
    <comment_count>20</comment_count>
      <attachid>168182</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-11 02:54:08 -0700</bug_when>
    <thetext>Created attachment 168182
ready for reivew, but the patch still depends on https://bugs.webkit.org/show_bug.cgi?id=96990.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739770</commentid>
    <comment_count>21</comment_count>
      <attachid>167905</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-10-11 02:55:09 -0700</bug_when>
    <thetext>Comment on attachment 167905
WIP. Pass all tests.

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

&gt;&gt; Source/WebCore/dom/ComposedShadowTreeWalker.h:177
&gt;&gt; +    enum TraversalState {TraversingParent, CrossingInsertionPoint};
&gt; 
&gt; Does this have to be an enum? Seems like bool m_isCrossingInsertionPoint, based its use.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740022</commentid>
    <comment_count>22</comment_count>
      <attachid>168182</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-10-11 09:04:54 -0700</bug_when>
    <thetext>Comment on attachment 168182
ready for reivew, but the patch still depends on https://bugs.webkit.org/show_bug.cgi?id=96990.

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

Thank you!

&gt; Source/WebCore/ChangeLog:20
&gt; +        - AncestorChainWalker (formerly named ComposedShadowTreeParentWallker):

Much better name!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740037</commentid>
    <comment_count>23</comment_count>
      <attachid>168182</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-11 09:24:55 -0700</bug_when>
    <thetext>Comment on attachment 168182
ready for reivew, but the patch still depends on https://bugs.webkit.org/show_bug.cgi?id=96990.

Clearing flags on attachment: 168182

Committed r131070: &lt;http://trac.webkit.org/changeset/131070&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740038</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-11 09:25:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165061</attachid>
            <date>2012-09-21 00:18:10 -0700</date>
            <delta_ts>2012-09-25 21:20:26 -0700</delta_ts>
            <desc>wip. including other patches</desc>
            <filename>bug-97151-20120921161734.patch</filename>
            <type>text/plain</type>
            <size>25910</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE5YzJkMjhhNmUxYWYx
ZmU3NjA0MGRhNGZmM2E2NWU5ZWIzZDdjNy4uNGYxNjJhODFhOWI3YjRlZmE3ZmE3ZWQ0ZWM2MGFj
MWRmNjMwYjMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNiBAQAorMjAxMi0wOS0yMCAgSGF5
YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBkYXRlIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlciBmb3IgU2hhZG93IERPTSByZS1wcm9qZWN0aW9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcxNTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMh
KS4KKworICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tBdHRyaWJ1dGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgICogZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZlUmVw
cm9qZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudCk6CisgICAgICAgICogZG9tL1NlbGVj
dG9yUXVlcnkuaDoKKyAgICAgICAgKFNlbGVjdG9yRGF0YUxpc3QpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50
RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudERpc3Ry
aWJ1dG9yOjpkaXN0cmlidXRlU2VsZWN0aW9uc1RvKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9D
b250ZW50U2VsZWN0b3JRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlaWZpZWROb2RlOjpSZWlmaWVkTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlm
aWVkRWxlbWVudDo6aXNGaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRFbGVt
ZW50Ojppc0xhc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkRWxlbWVudDo6aXNG
aXJzdE9mVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkRWxlbWVudDo6aXNMYXN0T2ZU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRFbGVtZW50Ojpjb3VudEVsZW1lbnRzQmVm
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRFbGVtZW50Ojpjb3VudEVsZW1lbnRzQWZ0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZEVsZW1lbnQ6OmNvdW50RWxlbWVudHNCZWZv
cmVXaXRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRFbGVtZW50Ojpjb3VudEVsZW1lbnRz
QWZ0ZXJXaXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvckNoZWNrZXI6OkNv
bnRlbnRTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tDb250ZW50U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVu
dFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVQc2V1ZG9DbGFzc1NlbGVjdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvckRhdGFMaXN0OjptYXRjaGVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5OjptYXRjaGVzKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oOgorICAgICAgICAoUmVpZmllZE5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVpZmllZE5vZGU6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlaWZpZWROb2RlOjpub2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWROb2RlOjpwYXJl
bnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWROb2RlOjppc0VsZW1lbnROb2RlKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoUmVpZmllZEVsZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVpZmllZEVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVpZmllZEVsZW1lbnQ6OmVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZEVs
ZW1lbnQ6Omhhc1RhZ05hbWUpOgorICAgICAgICAoQ29udGVudFNlbGVjdG9yQ2hlY2tlcik6Cisg
ICAgICAgIChDb250ZW50U2VsZWN0b3JEYXRhTGlzdCk6CisgICAgICAgIChDb250ZW50U2VsZWN0
b3JRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjp0b1JlaWZpZWRFbGVtZW50KToKKworMjAxMi0w
OS0xOSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
TWFrZSBDb250ZW50U2VsZWN0b3JRdWVyeSB3b3JrIHdoZW4gYSBub2RlIFBPT0wgaXMgdXNlZCBp
bnN0ZWFkIG9mIG5vZGUncyByZWFsIGNoaWxkcmVuLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY5OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHdlIGltcGxlbWVudCBjb250ZW50IHJlcHJvamVj
dGlvbiBpbiBTaGFkb3cgRE9NLCB3ZSBoYXZlIHRvIHVzZSBhIG5vZGUgcG9vbCBhcyBjaGlsZHJl
bgorICAgICAgICBpbnN0ZWFkIG9mIG5vZGUncyByZWFsIGNoaWxkcmVuLgorCisgICAgICAgIFdl
IGludHJvZHVjZSBSZWlmaWVkTm9kZSBhbmQgUmVpZmllZEVsZW1lbnQgaGVyZSwgd2hpY2ggdXNl
IGEgbm9kZSBwb29sIGFzIHRoZWlyIGNoaWxkcmVuLgorICAgICAgICBBbHNvLCB3ZSBtb2RpZnkg
Q29udGVudFNlbGVjdG9yUXVlcnkgdG8gdXNlIFJlaWZpZWROb2RlLgorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgZXhpc3RpbmcgdGVzdHMgc2hvdWxkIGNvdmVyLgorCisgICAgICAgICogY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjaGVj
a0F0dHJpYnV0ZVNlbGVjdG9yKTogRXh0cmFjdGVkIHRvIHNoYXJlIHRoZSBjb2RlIHdpdGggQ29u
dGVudFNlbGVjdG9yQ2hlY2tlci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9T
ZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKiBkb20vU2VsZWN0b3JRdWVyeS5oOgorICAgICAg
ICAoU2VsZWN0b3JEYXRhTGlzdCk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJp
YnV0ZVNlbGVjdGlvbnNUbyk6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9y
UXVlcnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVk
Tm9kZTo6UmVpZmllZE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZEVsZW1lbnQ6Omlz
Rmlyc3RDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkRWxlbWVudDo6aXNMYXN0Q2hp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVpZmllZEVsZW1lbnQ6OmlzRmlyc3RPZlR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVpZmllZEVsZW1lbnQ6OmlzTGFzdE9mVHlwZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWlmaWVkRWxlbWVudDo6Y291bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZWlmaWVkRWxlbWVudDo6Y291bnRFbGVtZW50c0FmdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlaWZpZWRFbGVtZW50Ojpjb3VudEVsZW1lbnRzQmVmb3JlV2l0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWlmaWVkRWxlbWVudDo6Y291bnRFbGVtZW50c0FmdGVyV2l0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VsZWN0b3JDaGVja2VyOjpDb250ZW50U2VsZWN0b3JD
aGVja2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWxlY3RvckNoZWNrZXI6OmNoZWNr
Q29udGVudFNlbGVjdG9yKTogVGhpcyBpcyBzb21ldGhpbmcgbGlrZSBTZWxlY3RvckNoZWNrZXI6
OmNoZWNrT25lU2VsZWN0b3IoKSwKKyAgICAgICAgYnV0IHRoaXMgdXNlcyBSZWlmaWVkTm9kZSBh
bmQgUmVpZmllZEVsZW1lbnQuIEFsc28sIENvbnRlbnRTZWxlY3RvciBkb2VzIG5vdCBoYXZlIFBz
ZXVkb0VsZW1lbnQsIHdlIG9taXQgdG8gY2hlY2sKKyAgICAgICAgUHNldWRvRWxlbWVudCBjb2Rl
IGZyb20gU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKCkuCisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVBzZXVkb0NsYXNzU2VsZWN0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlbGVjdG9yUXVlcnk6Om1hdGNoZXMpOgorICAgICAg
ICAqIGh0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5Lmg6CisgICAgICAgIChSZWlmaWVk
Tm9kZSk6IFJlaWZpZWROb2RlIGlzIHNvbWV0aGluZyBsaWtlIGEgbm9kZSwgYnV0IGl0cyBzaWJs
aW5ncyBhcmUgZnJvbSBhIG5vZGUgcG9vbC4KKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWROb2Rl
Ojpkb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZWlmaWVkTm9kZTo6bm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWlmaWVkTm9kZTo6cGFyZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZWlmaWVkTm9kZTo6aXNFbGVtZW50Tm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFJlaWZpZWRFbGVtZW50KTogUmVpZmllZEVsZW1lbnQgaXMgc29tZXRoaW5nIGxpa2UgYW4g
ZWxlbWVudCwgYnV0IGl0cyBzaWJsaW5ncyBhcmUgZnJvbSBhIG5vZGUgcG9vbC4KKyAgICAgICAg
KFdlYkNvcmU6OlJlaWZpZWRFbGVtZW50OjpwYXJlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlaWZpZWRFbGVtZW50OjplbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlaWZpZWRF
bGVtZW50OjpoYXNUYWdOYW1lKToKKyAgICAgICAgKENvbnRlbnRTZWxlY3RvckNoZWNrZXIpOgor
ICAgICAgICAoQ29udGVudFNlbGVjdG9yRGF0YUxpc3QpOgorICAgICAgICAoQ29udGVudFNlbGVj
dG9yUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZWlmaWVkRWxlbWVudCk6CisKIDIwMTIt
MDktMjAgIFlvc2hpZnVtaSBJbm91ZSAgPHlvc2luQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
UGxhdGZvcm1dIFRoZXJlIGFyZSBtZW1vcnkgbGVhayBpbiBMb2NhbGVJQ1UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggMTMzZTJhOGFhNGNlNmZlMzBjYWIzYmQ3OTgz
NDJmNzdkYzQ4ZmIzMy4uNDA3YjI3MzM0MWQwNTA2Zjc4NzQwNzMzZDgwOWEzYmFjNmQzMmQ4YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAgLTcxNywxNSArNzE3LDkg
QEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmhhc0lE
KCkgJiYgZWxlbWVudC0+aWRGb3JTdHlsZVJlc29sdXRpb24oKSA9PSBzZWxlY3Rvci0+dmFsdWUo
KTsKIAogICAgIGlmIChzZWxlY3Rvci0+aXNBdHRyaWJ1dGVTZWxlY3RvcigpKSB7Ci0gICAgICAg
IGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHIgPSBzZWxlY3Rvci0+YXR0cmlidXRlKCk7Ci0KLSAg
ICAgICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gIW1fZG9jdW1lbnRJc0hUTUwg
fHwgIWh0bWxBdHRyaWJ1dGVIYXNDYXNlSW5zZW5zaXRpdmVWYWx1ZShhdHRyKTsKLQotICAgICAg
ICBpZiAoIWFueUF0dHJpYnV0ZU1hdGNoZXMoZWxlbWVudCwgc3RhdGljX2Nhc3Q8Q1NTU2VsZWN0
b3I6Ok1hdGNoPihzZWxlY3Rvci0+bV9tYXRjaCksIGF0dHIsIHNlbGVjdG9yLT52YWx1ZSgpLCBj
YXNlU2Vuc2l0aXZlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYm9vbCBt
YXRjaGVkOworICAgICAgICBpZiAoY2hlY2tBdHRyaWJ1dGVTZWxlY3RvcihzZWxlY3RvciwgZWxl
bWVudCwgbWF0Y2hlZCkpCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZDsKICAgICB9CiAKICAg
ICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSB7CkBA
IC0xMjc3LDYgKzEyNzEsMjUgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Nyb2xsYmFy
UHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqIHNlbCwgUHNldWRvSWQmKSBjb24KICAgICB9CiB9CiAK
K2Jvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja0F0dHJpYnV0ZVNlbGVjdG9yKENTU1NlbGVjdG9y
KiBzZWxlY3RvciwgRWxlbWVudCogZWxlbWVudCwgYm9vbCYgbWF0Y2hlZCkgY29uc3QKK3sKKyAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyID0gc2VsZWN0b3ItPmF0dHJpYnV0ZSgpOworCisg
ICAgaWYgKCFlbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgbWF0Y2hlZCA9IGZh
bHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBib29sIGNhc2VTZW5zaXRp
dmUgPSAhbV9kb2N1bWVudElzSFRNTCB8fCAhaHRtbEF0dHJpYnV0ZUhhc0Nhc2VJbnNlbnNpdGl2
ZVZhbHVlKGF0dHIpOworCisgICAgaWYgKCFhbnlBdHRyaWJ1dGVNYXRjaGVzKGVsZW1lbnQsIHN0
YXRpY19jYXN0PENTU1NlbGVjdG9yOjpNYXRjaD4oc2VsZWN0b3ItPm1fbWF0Y2gpLCBhdHRyLCBz
ZWxlY3Rvci0+dmFsdWUoKSwgY2FzZVNlbnNpdGl2ZSkpIHsKKyAgICAgICAgbWF0Y2hlZCA9IGZh
bHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgU2VsZWN0b3JDaGVja2VyOjphbGxWaXNpdGVkU3RhdGVDaGFuZ2VkKCkKIHsKICAg
ICBpZiAobV9saW5rc0NoZWNrZWRGb3JWaXNpdGVkU3RhdGUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IGYxNWNlMGQwOGVlNDMyOThiNDEyMDQxMmNmNzZk
OTVhYTViZjNjMDEuLjM1MDA4YWYxYTAzNzQ3N2MzYmU2MDQzNmYxZWY4MzZhMDc0ZWZjNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgKQEAgLTExNiw2ICsxMTYsOSBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgZGV0ZXJtaW5lU2VsZWN0b3JTY29wZXMoY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0JiwgSGFzaFNldDxBdG9taWNTdHJpbmdJbXBsKj4mIGlkU2NvcGVzLCBIYXNoU2V0
PEF0b21pY1N0cmluZ0ltcGwqPiYgY2xhc3NTY29wZXMpOwogICAgIHN0YXRpYyBib29sIGVsZW1l
bnRNYXRjaGVzU2VsZWN0b3JTY29wZXMoY29uc3QgU3R5bGVkRWxlbWVudCosIGNvbnN0IEhhc2hT
ZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBpZFNjb3BlcywgY29uc3QgSGFzaFNldDxBdG9taWNTdHJp
bmdJbXBsKj4mIGNsYXNzU2NvcGVzKTsKIAorcHJvdGVjdGVkOgorICAgIGJvb2wgY2hlY2tBdHRy
aWJ1dGVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBib29sJiBtYXRjaGVkKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmLCBQc2V1ZG9JZCYsIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50
cykgY29uc3Q7CiAgICAgYm9vbCBjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKENTU1NlbGVjdG9y
KiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8pIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmNwcAppbmRleCBkM2E1NGY4ODdhODVmZDA1NzVk
MzcwMmM4MTE3ZTJiYmEwMmFkNmE2Li41YWU2MDdiMmYwZDg0OGRhNTBhNTZmN2M2MzIzODI5OTNj
NTRlNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyLmNwcApAQCAtMjM3LDYgKzIzNywyMSBAQCB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtl
cjo6cGFyZW50KCkKICAgICBhc3NlcnRQb3N0Y29uZGl0aW9uKCk7CiB9CiAKK3N0YXRpYyBpbmxp
bmUgSW5zZXJ0aW9uUG9pbnQqIHJlc29sdmVSZXByb2plY3Rpb24oY29uc3QgTm9kZSogbm9kZSkK
K3sKKyAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSAwOworICAgIGNvbnN0IE5v
ZGUqIGN1cnJlbnQgPSBub2RlOworICAgIHdoaWxlIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBz
aGFkb3dPZlBhcmVudChjdXJyZW50KSkgeworICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1
dGlvbigpOworICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGVkVG8gPSBzaGFkb3ct
Pmluc2VydGlvblBvaW50Rm9yKG5vZGUpKSB7CisgICAgICAgICAgICBjdXJyZW50ID0gaW5zZXJ0
ZWRUbzsKKyAgICAgICAgICAgIGluc2VydGlvblBvaW50ID0gaW5zZXJ0ZWRUbzsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGluc2VydGlvblBv
aW50OworfQorCiAvLyBGSVhNRTogVXNlIGFuIGl0ZXJhdGl2ZSBhbGdvcml0aG0gc28gdGhhdCBp
dCBjYW4gYmUgaW5saW5lZC4KIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDQxNQogTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVu
dChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWxEZXRhaWxzKiBkZXRhaWxzKSBjb25z
dApAQCAtMjQ1LDE3ICsyNjAsMTAgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0
cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJzYWwKICAgICAgICAg
QVNTRVJUKHRvU2hhZG93Um9vdChub2RlKS0+aXNZb3VuZ2VzdCgpKTsKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgfQotICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBhcmVu
dChub2RlKSkgewotICAgICAgICBzaGFkb3ctPmVuc3VyZURpc3RyaWJ1dGlvbigpOwotICAgICAg
ICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5pbnNlcnRpb25Q
b2ludEZvcihub2RlKSkgewotICAgICAgICAgICAgaWYgKGRldGFpbHMpCi0gICAgICAgICAgICAg
ICAgZGV0YWlscy0+ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChpbnNlcnRpb25Qb2ludCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoaW5zZXJ0aW9uUG9pbnQsIGRldGFpbHMp
OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlIG5vZGUgaXMgYSBub24tZGlzdHJpYnV0ZWQg
bGlnaHQgY2hpbGQgb3Igb2xkZXIgc2hhZG93J3MgY2hpbGQuCisgICAgaWYgKEluc2VydGlvblBv
aW50KiBpbnNlcnRpb25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rpb24obm9kZSkpIHsKICAgICAg
ICAgaWYgKGRldGFpbHMpCi0gICAgICAgICAgICBkZXRhaWxzLT5jaGlsZFdhc091dE9mQ29tcG9z
aXRpb24oKTsKKyAgICAgICAgICAgIGRldGFpbHMtPmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQo
aW5zZXJ0aW9uUG9pbnQpOworICAgICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnQoaW5zZXJ0aW9u
UG9pbnQsIGRldGFpbHMpOwogICAgIH0KICAgICByZXR1cm4gdHJhdmVyc2VQYXJlbnRJbkN1cnJl
bnRUcmVlKG5vZGUsIGRldGFpbHMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmgKaW5k
ZXggODY1YTQzMWY4OTgxZjdmNzZkZmM5ZDY4ZjQxYzhhYzhjYmEwYmJhMy4uNjIzOTM0ZjI3OGE4
MTIyN2VmMDk5NTY3ZmIyMTFhNDI3NGNiYTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NlbGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVy
eS5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBx
dWVyeUFsbChjb25zdCBTZWxlY3RvckNoZWNrZXImLCBOb2RlKiByb290Tm9kZSkgY29uc3Q7CiAg
ICAgUGFzc1JlZlB0cjxFbGVtZW50PiBxdWVyeUZpcnN0KGNvbnN0IFNlbGVjdG9yQ2hlY2tlciYs
IE5vZGUqIHJvb3ROb2RlKSBjb25zdDsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICBzdHJ1
Y3QgU2VsZWN0b3JEYXRhIHsKICAgICAgICAgU2VsZWN0b3JEYXRhKENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgYm9vbCBpc0Zhc3RDaGVja2FibGUpIDogc2VsZWN0b3Ioc2VsZWN0b3IpLCBpc0Zhc3RD
aGVja2FibGUoaXNGYXN0Q2hlY2thYmxlKSB7IH0KICAgICAgICAgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRv
ci5jcHAKaW5kZXggMDc2YTcyM2M4YTkxYWZlOTMxODg3NjU4OTRjZTc3MzZkYzM2NmEwMC4uYTVk
YTY5M2E5YWViZDBmNmQ0ZmU0ZDliMGIzYjM5YzEwMzk2NjAyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC01Nyw4ICs1Nywz
MCBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQog
ICAgIG1fdmFsaWRpdHkgPSBWYWxpZDsKIAogICAgIENvbnRlbnREaXN0cmlidXRpb24gcG9vbDsK
KworI2lmIDAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBob3N0LT5maXJzdENoaWxkKCk7IG5vZGU7
IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQogICAgICAgICBwb29sLmFwcGVuZChub2RlKTsK
KyNlbHNlCisgICAgZm9yIChOb2RlKiBub2RlID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBu
b2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoIWlzSW5zZXJ0aW9uUG9p
bnQobm9kZSkpIHsKKyAgICAgICAgICAgIHBvb2wuYXBwZW5kKG5vZGUpOworICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9u
UG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5vZGUpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
Imluc2VydGlvblBvaW50KCVwKSA9ICVkXG4iLCBpbnNlcnRpb25Qb2ludCwgKGludClpbnNlcnRp
b25Qb2ludC0+c2l6ZSgpKTsKKyAgICAgICAgaWYgKGluc2VydGlvblBvaW50LT5oYXNEaXN0cmli
dXRpb24oKSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Q
b2ludC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgcG9vbC5hcHBlbmQoaW5zZXJ0aW9u
UG9pbnQtPmF0KGkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoTm9kZSog
ZmFsbGJhY2tOb2RlID0gaW5zZXJ0aW9uUG9pbnQtPmZpcnN0Q2hpbGQoKTsgZmFsbGJhY2tOb2Rl
OyBmYWxsYmFja05vZGUgPSBmYWxsYmFja05vZGUtPm5leHRTaWJsaW5nKCkpCisgICAgICAgICAg
ICAgICAgcG9vbC5hcHBlbmQoZmFsbGJhY2tOb2RlKTsKKyAgICAgICAgfQorICAgIH0KKworI2Vu
ZGlmCisKICAgICBWZWN0b3I8Ym9vbD4gZGlzdHJpYnV0ZWQocG9vbC5zaXplKCkpOwogICAgIGRp
c3RyaWJ1dGVkLmZpbGwoZmFsc2UpOwogCkBAIC0xMTgsNyArMTQwLDggQEAgdm9pZCBDb250ZW50
RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGVTZWxlY3Rpb25zVG8oSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50LAogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgTm9kZSogY2hpbGQg
PSBwb29sW2ldLmdldCgpOwotICAgICAgICBpZiAoIXF1ZXJ5Lm1hdGNoZXMoY2hpbGQpKQorICAg
ICAgICBSZWlmaWVkTm9kZSByZWlmaWVkTm9kZShjaGlsZC0+cGFyZW50Tm9kZSgpLCBwb29sLCBp
KTsKKyAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKCZyZWlmaWVkTm9kZSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICBkaXN0cmlidXRpb24uYXBwZW5kKGNoaWxkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmNwcApp
bmRleCBmMTJjNTk5MjVmN2M5MzI0ZjZmZWZjYmViMjIzNTg5NTdkZjIxMWYzLi5lZTYxYWVhZWQ0
MGE0MzEyNjhjMjc1NDYwNWE5YjkyMWZiODdmNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCkBAIC0yOSwxMSArMjksMjY3
IEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3Qu
aCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgi
CisjaW5jbHVkZSAiSFRNTE9wdGlvbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJTaGFkb3dS
b290LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKKworUmVpZmllZE5vZGU6OlJlaWZpZWROb2RlKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYgY2hpbGRyZW4sIGludCBudGhDaGlsZCkKKyAgICA6IG1fcGFy
ZW50Tm9kZShwYXJlbnROb2RlKQorICAgICwgbV9jaGlsZHJlbihjaGlsZHJlbikKKyAgICAsIG1f
bnRoQ2hpbGQobnRoQ2hpbGQpCit7CisgICAgQVNTRVJUKHBhcmVudE5vZGUpOworfQorCitib29s
IFJlaWZpZWRFbGVtZW50Ojppc0ZpcnN0Q2hpbGQoKSBjb25zdAoreworICAgIGZvciAoaW50IGkg
PSBtX250aENoaWxkIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgaWYgKG1fY2hpbGRyZW5b
aV0gJiYgbV9jaGlsZHJlbltpXS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlaWZpZWRFbGVt
ZW50Ojppc0xhc3RDaGlsZCgpIGNvbnN0Cit7CisgICAgZm9yIChzaXplX3QgaSA9IG1fbnRoQ2hp
bGQgKyAxOyBpIDwgbV9jaGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9jaGls
ZHJlbltpXSAmJiBtX2NoaWxkcmVuW2ldLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgUmVpZmll
ZEVsZW1lbnQ6OmlzRmlyc3RPZlR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QK
K3sKKyAgICBmb3IgKGludCBpID0gbV9udGhDaGlsZCAtIDE7IGkgPj0gMDsgLS1pKSB7CisgICAg
ICAgIGlmIChtX2NoaWxkcmVuW2ldICYmIG1fY2hpbGRyZW5baV0tPmlzRWxlbWVudE5vZGUoKSAm
JiBtX2NoaWxkcmVuW2ldLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFJlaWZpZWRFbGVtZW50
Ojppc0xhc3RPZlR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gbV9udGhDaGlsZCArIDE7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChtX2NoaWxkcmVuW2ldICYmIG1fY2hpbGRyZW5baV0tPmlzRWxlbWVu
dE5vZGUoKSAmJiBtX2NoaWxkcmVuW2ldLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitpbnQgUmVpZmll
ZEVsZW1lbnQ6OmNvdW50RWxlbWVudHNCZWZvcmUoKSBjb25zdAoreworICAgIGludCBjb3VudCA9
IDA7CisgICAgZm9yIChpbnQgaSA9IG1fbnRoQ2hpbGQgLSAxOyBpID49IDA7IC0taSkgeworICAg
ICAgICBpZiAobV9jaGlsZHJlbltpXSAmJiBtX2NoaWxkcmVuW2ldLT5pc0VsZW1lbnROb2RlKCkp
CisgICAgICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKwor
aW50IFJlaWZpZWRFbGVtZW50Ojpjb3VudEVsZW1lbnRzQWZ0ZXIoKSBjb25zdAoreworICAgIGlu
dCBjb3VudCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IG1fbnRoQ2hpbGQgKyAxOyBpIDwgbV9j
aGlsZHJlbi5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9jaGlsZHJlbltpXSAmJiBtX2No
aWxkcmVuW2ldLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gKytjb3VudDsK
KyAgICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK2ludCBSZWlmaWVkRWxlbWVudDo6Y291
bnRFbGVtZW50c0JlZm9yZVdpdGgoY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3QKK3sK
KyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoaW50IGkgPSBtX250aENoaWxkIC0gMTsgaSA+
PSAwOyAtLWkpIHsKKyAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0gJiYgbV9jaGlsZHJlbltpXS0+
aXNFbGVtZW50Tm9kZSgpICYmIG1fY2hpbGRyZW5baV0tPmhhc1RhZ05hbWUodHlwZSkpCisgICAg
ICAgICAgICArK2NvdW50OworICAgIH0KKworICAgIHJldHVybiBjb3VudDsKK30KKworaW50IFJl
aWZpZWRFbGVtZW50Ojpjb3VudEVsZW1lbnRzQWZ0ZXJXaXRoKGNvbnN0IFF1YWxpZmllZE5hbWUm
IHR5cGUpIGNvbnN0Cit7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0g
bV9udGhDaGlsZCArIDE7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChtX2NoaWxkcmVuW2ldICYmIG1fY2hpbGRyZW5baV0tPmlzRWxlbWVudE5vZGUoKSAmJiBtX2No
aWxkcmVuW2ldLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuICsrY291bnQ7
CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCitDb250ZW50U2VsZWN0b3JDaGVja2Vy
OjpDb250ZW50U2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBzdHJpY3RQ
YXJzaW5nKQorICAgIDogU2VsZWN0b3JDaGVja2VyKGRvY3VtZW50LCBzdHJpY3RQYXJzaW5nKQor
eworfQorCitib29sIENvbnRlbnRTZWxlY3RvckNoZWNrZXI6OmNoZWNrQ29udGVudFNlbGVjdG9y
KENTU1NlbGVjdG9yKiBzZWxlY3RvciwgUmVpZmllZEVsZW1lbnQqIHZpcnR1YWxFbGVtZW50KSBj
b25zdAoreworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB2aXJ0dWFsRWxlbWVudC0+ZWxlbWVudCgp
OworCisgICAgaWYgKCFTZWxlY3RvckNoZWNrZXI6OnRhZ01hdGNoZXMoZWxlbWVudCwgc2VsZWN0
b3IpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2gg
PT0gQ1NTU2VsZWN0b3I6OkNsYXNzKQorICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzQ2xhc3Mo
KSAmJiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmNsYXNzTmFtZXMoKS5j
b250YWlucyhzZWxlY3Rvci0+dmFsdWUoKSk7CisKKyAgICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2gg
PT0gQ1NTU2VsZWN0b3I6OklkKQorICAgICAgICByZXR1cm4gZWxlbWVudC0+aGFzSUQoKSAmJiBl
bGVtZW50LT5pZEZvclN0eWxlUmVzb2x1dGlvbigpID09IHNlbGVjdG9yLT52YWx1ZSgpOworCisg
ICAgaWYgKHNlbGVjdG9yLT5pc0F0dHJpYnV0ZVNlbGVjdG9yKCkpIHsKKyAgICAgICAgYm9vbCBt
YXRjaGVkOworICAgICAgICBpZiAoY2hlY2tBdHRyaWJ1dGVTZWxlY3RvcihzZWxlY3RvciwgZWxl
bWVudCwgbWF0Y2hlZCkpCisgICAgICAgICAgICByZXR1cm4gbWF0Y2hlZDsKKyAgICB9CisKKyAg
ICBpZiAoc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKQorICAg
ICAgICByZXR1cm4gY2hlY2tPbmVQc2V1ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yLCB2aXJ0dWFs
RWxlbWVudCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCitib29sIENvbnRlbnRTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lUHNldWRvQ2xhc3NTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsZWN0
b3IsIFJlaWZpZWRFbGVtZW50KiBlbGVtZW50KSBjb25zdAoreworICAgIEFTU0VSVChtb2RlKCkg
PT0gU2VsZWN0b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpOworICAgIAorICAgIHN3aXRjaCAo
c2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgeworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Zp
cnN0Q2hpbGQ6CisgICAgICAgIGlmIChlbGVtZW50LT5wYXJlbnROb2RlKCkpCisgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudC0+aXNGaXJzdENoaWxkKCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0T2ZUeXBlOgorICAgICAgICBpZiAoZWxlbWVudC0+
cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmlzRmlyc3RPZlR5cGUo
ZWxlbWVudC0+ZWxlbWVudCgpLT50YWdRTmFtZSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGFzdENoaWxkOgorICAgICAgICBpZiAoZWxlbWVudC0+cGFy
ZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+
aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIGVsZW1lbnQtPmlzTGFzdENoaWxkKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0xhc3RPZlR5cGU6Cisg
ICAgICAgIGlmIChlbGVtZW50LT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gZWxl
bWVudC0+cGFyZW50RWxlbWVudCgpLT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkgJiYgZWxl
bWVudC0+aXNMYXN0T2ZUeXBlKGVsZW1lbnQtPmVsZW1lbnQoKS0+dGFnUU5hbWUoKSk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb09ubHlPZlR5cGU6CisgICAg
ICAgIGlmIChlbGVtZW50LT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICByZXR1cm4gZWxlbWVu
dC0+aXNGaXJzdE9mVHlwZShlbGVtZW50LT5lbGVtZW50KCktPnRhZ1FOYW1lKCkpCisgICAgICAg
ICAgICAgICAgJiYgZWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5pc0ZpbmlzaGVkUGFyc2luZ0No
aWxkcmVuKCkKKyAgICAgICAgICAgICAgICAmJiBlbGVtZW50LT5pc0xhc3RPZlR5cGUoZWxlbWVu
dC0+ZWxlbWVudCgpLT50YWdRTmFtZSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvTnRoQ2hpbGQ6CisgICAgICAgIGlmICghc2VsZWN0b3ItPnBhcnNlTnRo
KCkpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKGVsZW1lbnQtPnBhcmVudE5vZGUo
KSkKKyAgICAgICAgICAgIHJldHVybiBzZWxlY3Rvci0+bWF0Y2hOdGgoZWxlbWVudC0+Y291bnRF
bGVtZW50c0JlZm9yZSgpICsgMSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb050aE9mVHlwZToKKyAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50Tm9kZSgpKSB7
CisgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+ZWxlbWVu
dCgpLT50YWdRTmFtZSgpOworICAgICAgICAgICAgcmV0dXJuIHNlbGVjdG9yLT5tYXRjaE50aChl
bGVtZW50LT5jb3VudEVsZW1lbnRzQmVmb3JlV2l0aCh0eXBlKSArIDEpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb050aExhc3RDaGlsZDoK
KyAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBpZiAoZWxlbWVudC0+cGFyZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuIGVs
ZW1lbnQtPnBhcmVudEVsZW1lbnQoKS0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIHNl
bGVjdG9yLT5tYXRjaE50aChlbGVtZW50LT5jb3VudEVsZW1lbnRzQWZ0ZXIoKSArIDEpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0T2ZUeXBlOgor
ICAgICAgICBpZiAoIXNlbGVjdG9yLT5wYXJzZU50aCgpKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGlmIChlbGVtZW50LT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHR5cGUgPSBlbGVtZW50LT5lbGVtZW50KCktPnRhZ1FOYW1lKCk7CisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpLT5pc0ZpbmlzaGVkUGFyc2lu
Z0NoaWxkcmVuKCkgJiYgc2VsZWN0b3ItPm1hdGNoTnRoKGVsZW1lbnQtPmNvdW50RWxlbWVudHNB
ZnRlcldpdGgodHlwZSkgKyAxKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9UYXJnZXQ6CisgICAgICAgIGlmIChlbGVtZW50LT5lbGVtZW50
KCkgPT0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+Y3NzVGFyZ2V0KCkpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGlu
azoKKyAgICAgICAgLy8gOnZpc2l0ZWQgYW5kIDpsaW5rIG1hdGNoZXMgYXJlIHNlcGFyYXRlZCBs
YXRlciB3aGVuIGFwcGx5aW5nIHRoZSBzdHlsZS4gSGVyZSBib3RoIGNsYXNzZXMgbWF0Y2ggYWxs
IGxpbmtzLi4uCisgICAgICAgIHJldHVybiBlbGVtZW50LT5lbGVtZW50KCktPmlzTGluaygpOwor
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6CisgICAgICAgIC8vIC4uLmV4Y2Vw
dCBpZiA6dmlzaXRlZCBtYXRjaGluZyBpcyBkaXNhYmxlZCBmb3IgYW5jZXN0b3Ivc2libGluZyBt
YXRjaGluZy4KKworICAgICAgICAvLyBGSVhNRTogdmlzaXRlZCBpcyBub3Qgc3VwcG9ydGVkIHll
dC4KKyAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmVsZW1lbnQoKS0+aXNMaW5rKCk7CisgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvRW5hYmxlZDoKKyAgICAgICAgaWYgKGVsZW1lbnQgJiYgKGVs
ZW1lbnQtPmVsZW1lbnQoKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSB8fCBlbGVtZW50LT5oYXNU
YWdOYW1lKG9wdGlvblRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvcHRncm91cFRhZykpKQor
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmVsZW1lbnQoKS0+aXNFbmFibGVkRm9ybUNvbnRy
b2woKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRGlzYWJs
ZWQ6CisgICAgICAgIGlmIChlbGVtZW50ICYmIChlbGVtZW50LT5lbGVtZW50KCktPmlzRm9ybUNv
bnRyb2xFbGVtZW50KCkgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpIHx8IGVsZW1l
bnQtPmhhc1RhZ05hbWUob3B0Z3JvdXBUYWcpKSkKKyAgICAgICAgICAgIHJldHVybiAhZWxlbWVu
dC0+ZWxlbWVudCgpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9DaGVja2VkOgorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIWVsZW1lbnQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBF
dmVuIHRob3VnaCBXaW5JRSBhbGxvd3MgY2hlY2tlZCBhbmQgaW5kZXRlcm1pbmF0ZSB0byBjby1l
eGlzdCwgdGhlIENTUyBzZWxlY3RvciBzcGVjIHNheXMgdGhhdAorICAgICAgICAgICAgLy8geW91
IGNhbid0IGJlIGJvdGggY2hlY2tlZCBhbmQgaW5kZXRlcm1pbmF0ZS4gV2Ugd2lsbCBiZWhhdmUg
bGlrZSBXaW5JRSBiZWhpbmQgdGhlIHNjZW5lcyBhbmQganVzdAorICAgICAgICAgICAgLy8gb2Jl
eSB0aGUgQ1NTIHNwZWMgaGVyZSBpbiB0aGUgdGVzdCBmb3IgbWF0Y2hpbmcgdGhlIHBzZXVkby4K
KyAgICAgICAgICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IGVsZW1lbnQtPmVs
ZW1lbnQoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChpbnB1dEVsZW1lbnQg
JiYgaW5wdXRFbGVtZW50LT5zaG91bGRBcHBlYXJDaGVja2VkKCkgJiYgIWlucHV0RWxlbWVudC0+
aXNJbmRldGVybWluYXRlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICBpZiAoZWxlbWVudC0+aGFzVGFnTmFtZShvcHRpb25UYWcpICYmIHRvSFRNTE9wdGlvbkVs
ZW1lbnQoZWxlbWVudC0+ZWxlbWVudCgpKS0+c2VsZWN0ZWQoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvSW5kZXRlcm1pbmF0ZToKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFlbGVtZW50KQorICAgICAgICAgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShQUk9HUkVTU19F
TEVNRU5UKQorICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUocHJvZ3Jlc3NUYWcp
KSB7CisgICAgICAgICAgICAgICAgSFRNTFByb2dyZXNzRWxlbWVudCogcHJvZ3Jlc3MgPSBzdGF0
aWNfY2FzdDxIVE1MUHJvZ3Jlc3NFbGVtZW50Kj4oZWxlbWVudC0+ZWxlbWVudCgpKTsKKyAgICAg
ICAgICAgICAgICBpZiAocHJvZ3Jlc3MgJiYgIXByb2dyZXNzLT5pc0RldGVybWluYXRlKCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1
dEVsZW1lbnQgPSBlbGVtZW50LT5lbGVtZW50KCktPnRvSW5wdXRFbGVtZW50KCk7CisgICAgICAg
ICAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNJbmRldGVybWluYXRlKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisKK2Jvb2wgQ29udGVudFNl
bGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoY29uc3QgQ29udGVudFNlbGVjdG9yQ2hlY2tlciYgc2Vs
ZWN0b3JDaGVja2VyLCBSZWlmaWVkRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQodGFyZ2V0RWxlbWVudCk7CisKKyAgICB1bnNpZ25lZCBzZWxlY3RvckNvdW50ID0g
bV9zZWxlY3RvcnMuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZWxlY3Rv
ckNvdW50OyArK2kpIHsKKyAgICAgICAgaWYgKHNlbGVjdG9yQ2hlY2tlci5jaGVja0NvbnRlbnRT
ZWxlY3RvcihtX3NlbGVjdG9yc1tpXS5zZWxlY3RvciwgdGFyZ2V0RWxlbWVudCkpCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIENvbnRl
bnRTZWxlY3RvclF1ZXJ5OjpDb250ZW50U2VsZWN0b3JRdWVyeShjb25zdCBJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnQpCiAgICAgOiBtX2luc2VydGlvblBvaW50KGluc2VydGlvblBvaW50
KQogICAgICwgbV9zZWxlY3RvckNoZWNrZXIoaW5zZXJ0aW9uUG9pbnQtPmRvY3VtZW50KCksICFp
bnNlcnRpb25Qb2ludC0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpCkBAIC01OCw3ICszMTQs
NyBAQCBib29sIENvbnRlbnRTZWxlY3RvclF1ZXJ5Ojppc1ZhbGlkU2VsZWN0b3IoKSBjb25zdAog
ICAgIHJldHVybiBtX2lzVmFsaWRTZWxlY3RvcjsKIH0KIAotYm9vbCBDb250ZW50U2VsZWN0b3JR
dWVyeTo6bWF0Y2hlcyhOb2RlKiBub2RlKSBjb25zdAorYm9vbCBDb250ZW50U2VsZWN0b3JRdWVy
eTo6bWF0Y2hlcyhSZWlmaWVkTm9kZSogbm9kZSkgY29uc3QKIHsKICAgICBBU1NFUlQobm9kZSk7
CiAgICAgaWYgKCFub2RlKQpAQCAtNzUsNyArMzMxLDcgQEAgYm9vbCBDb250ZW50U2VsZWN0b3JR
dWVyeTo6bWF0Y2hlcyhOb2RlKiBub2RlKSBjb25zdAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9zZWxlY3RvcnMu
bWF0Y2hlcyhtX3NlbGVjdG9yQ2hlY2tlciwgdG9FbGVtZW50KG5vZGUpKTsKKyAgICByZXR1cm4g
bV9zZWxlY3RvcnMubWF0Y2hlcyhtX3NlbGVjdG9yQ2hlY2tlciwgdG9SZWlmaWVkRWxlbWVudChu
b2RlKSk7CiB9CiAKIHN0YXRpYyBib29sIHZhbGlkYXRlU3ViU2VsZWN0b3IoQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVu
dFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxl
Y3RvclF1ZXJ5LmgKaW5kZXggOTRmYTNlZmNjZjNmOWQ3MmU5NzQ3NzVlMmQyZDMxNDBkMTNjYjM0
ZS4uYjIwMTJiYmVkNjc4N2I0ZjdlZGMzNTM0MzZmMWEzYzVhNzk5ZjNiMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVyeS5oCkBAIC00Mywy
NSArNDMsNzYgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgSW5zZXJ0aW9u
UG9pbnQ7CiAKK2NsYXNzIFJlaWZpZWROb2RlIHsKK3B1YmxpYzoKKyAgICBSZWlmaWVkTm9kZShO
b2RlKiBwYXJlbnQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgY2hpbGRyZW4sIGludCBu
dGhDaGlsZCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBub2Rl
KCktPmRvY3VtZW50KCk7IH0KKyAgICBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9jaGls
ZHJlblttX250aENoaWxkXS5nZXQoKTsgfQorICAgIE5vZGUqIHBhcmVudE5vZGUoKSBjb25zdCB7
IHJldHVybiBtX3BhcmVudE5vZGU7IH0KKworICAgIGJvb2wgaXNFbGVtZW50Tm9kZSgpIGNvbnN0
IHsgcmV0dXJuIG5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpOyB9CisKK3Byb3RlY3RlZDoKKyAgICBO
b2RlKiBtX3BhcmVudE5vZGU7CisgICAgVmVjdG9yPFJlZlB0cjxOb2RlPiA+IG1fY2hpbGRyZW47
CisgICAgaW50IG1fbnRoQ2hpbGQ7Cit9OworCitjbGFzcyBSZWlmaWVkRWxlbWVudCA6IHB1Ymxp
YyBSZWlmaWVkTm9kZSB7CitwdWJsaWM6CisgICAgRWxlbWVudCogcGFyZW50RWxlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIFdlYkNvcmU6OnRvRWxlbWVudChwYXJlbnROb2RlKCkpOyB9CisgICAgRWxl
bWVudCogZWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OnRvRWxlbWVudChub2RlKCkp
OyB9CisKKyAgICBib29sIGhhc1RhZ05hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29u
c3QgeyByZXR1cm4gbm9kZSgpLT5oYXNUYWdOYW1lKG5hbWUpOyB9CisKKyAgICBib29sIGlzRmly
c3RDaGlsZCgpIGNvbnN0OworICAgIGJvb2wgaXNMYXN0Q2hpbGQoKSBjb25zdDsKKyAgICBib29s
IGlzRmlyc3RPZlR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3Q7CisgICAgYm9v
bCBpc0xhc3RPZlR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkgY29uc3Q7CisgICAgaW50
IGNvdW50RWxlbWVudHNCZWZvcmUoKSBjb25zdDsKKyAgICBpbnQgY291bnRFbGVtZW50c0FmdGVy
KCkgY29uc3Q7CisgICAgaW50IGNvdW50RWxlbWVudHNCZWZvcmVXaXRoKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHR5cGUpIGNvbnN0OworICAgIGludCBjb3VudEVsZW1lbnRzQWZ0ZXJXaXRoKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHR5cGUpIGNvbnN0OworfTsKKworY2xhc3MgQ29udGVudFNlbGVjdG9y
Q2hlY2tlciA6IHB1YmxpYyBTZWxlY3RvckNoZWNrZXIgeworcHVibGljOgorICAgIENvbnRlbnRT
ZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29sIHN0cmljdFBhcnNpbmcpOworCisgICAgYm9v
bCBjaGVja0NvbnRlbnRTZWxlY3RvcihDU1NTZWxlY3RvciosIFJlaWZpZWRFbGVtZW50KikgY29u
c3Q7Citwcml2YXRlOgorICAgIGJvb2wgY2hlY2tPbmVQc2V1ZG9DbGFzc1NlbGVjdG9yKENTU1Nl
bGVjdG9yKiwgUmVpZmllZEVsZW1lbnQqKSBjb25zdDsKK307CisKK2NsYXNzIENvbnRlbnRTZWxl
Y3RvckRhdGFMaXN0IDogcHVibGljIFNlbGVjdG9yRGF0YUxpc3QgeworcHVibGljOgorICAgIGJv
b2wgbWF0Y2hlcyhjb25zdCBDb250ZW50U2VsZWN0b3JDaGVja2VyJiwgUmVpZmllZEVsZW1lbnQq
KSBjb25zdDsKK307CisKIGNsYXNzIENvbnRlbnRTZWxlY3RvclF1ZXJ5IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShDb250ZW50U2VsZWN0b3JRdWVyeSk7CiBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgQ29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9uUG9pbnQqKTsKIAogICAgIGJv
b2wgaXNWYWxpZFNlbGVjdG9yKCkgY29uc3Q7Ci0gICAgYm9vbCBtYXRjaGVzKE5vZGUqKSBjb25z
dDsKKyAgICBib29sIG1hdGNoZXMoUmVpZmllZE5vZGUqKSBjb25zdDsKIHByaXZhdGU6CiAgICAg
Ym9vbCB2YWxpZGF0ZVNlbGVjdG9yTGlzdCgpOwogCiAgICAgY29uc3QgSW5zZXJ0aW9uUG9pbnQq
IG1faW5zZXJ0aW9uUG9pbnQ7Ci0gICAgU2VsZWN0b3JEYXRhTGlzdCBtX3NlbGVjdG9yczsKKyAg
ICBDb250ZW50U2VsZWN0b3JEYXRhTGlzdCBtX3NlbGVjdG9yczsKICAgICBDU1NTZWxlY3Rvckxp
c3QgbV9zZWxlY3Rvckxpc3Q7Ci0gICAgU2VsZWN0b3JDaGVja2VyIG1fc2VsZWN0b3JDaGVja2Vy
OworICAgIENvbnRlbnRTZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7CiAgICAgYm9v
bCBtX2lzVmFsaWRTZWxlY3RvcjsKIH07CiAKK2lubGluZSBSZWlmaWVkRWxlbWVudCogdG9SZWlm
aWVkRWxlbWVudChSZWlmaWVkTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgbm9k
ZS0+aXNFbGVtZW50Tm9kZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVpZmllZEVsZW1l
bnQqPihub2RlKTsKIH0KIAotCit9CiAKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165723</attachid>
            <date>2012-09-25 21:20:26 -0700</date>
            <delta_ts>2012-10-04 06:13:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>38290</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5o
dG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9DU1MvcHNldWRvY2xhc3Mtc2VsZWN0b3JzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmViZmJmYwotLS0gL2Rldi9udWxsCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ1NTL3BzZXVkb2NsYXNzLXNlbGVjdG9ycy5odG1sCkBAIC0w
LDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKworPGRpdiBpZD0i
dGVzdC10YXJnZXQiPgorICAgIDxkaXY+CisgICAgICAgIDxkaXY+PC9kaXY+CisgICAgICAgIDxk
aXY+CisgICAgICAgICAgICA8c3Bhbj48L3NwYW4+CisgICAgICAgICAgICA8c3Bhbj48L3NwYW4+
CisgICAgICAgICAgICA8c3Bhbj48L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2
PjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXY+CisgICAgICAgIDxkaXY+CisgICAgICAgICAg
ICA8c3Bhbj48L3NwYW4+CisgICAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICAgIDxzcGFuPjwv
c3Bhbj4KKyAgICA8c3Bhbj48L3NwYW4+CisgICAgPHNwYW4+PC9zcGFuPgorICAgIDxzcGFuPjwv
c3Bhbj4KKzwvZGl2PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3J1bm5lci5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorUGVyZlRlc3RSdW5uZXIucnVuUGVyU2Vjb25kKHsKKyAgICBkZXNj
cmlwdGlvbjogIlRoaXMgYmVuY2htYXJrIHRlc3RzIENTUyBTZWxlY3RvciBwZXJmb3JtYW5jZSB3
aXRoIHF1ZXJ5U2VsZWN0b3IoKS4iLAorICAgIHJ1bjogZnVuY3Rpb24oKSB7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoInNwYW46Zmlyc3QtY2hpbGQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoInNwYW46bGFzdC1jaGlsZCIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlT
ZWxlY3Rvcigic3BhbjpmaXJzdC1vZi10eXBlIik7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCJzcGFuOmxhc3Qtb2YtdHlwZSIpOworICAgICAgICAgICAgZG9jdW1lbnQucXVl
cnlTZWxlY3Rvcigic3BhbjpudGgtY2hpbGQoNG4rMykiKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoInNwYW46bnRoLWxhc3QtY2hpbGQoNG4rMykiKTsKKyAgICAgICAgICAg
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46bnRoLW9mLXR5cGUoNG4rMykiKTsKKyAgICAg
ICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNwYW46bnRoLWxhc3Qtb2YtdHlwZSg0bisz
KSIpOworICAgICAgICB9CisgICAgfQorfSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nIGIvUGVyZm9ybWFuY2VUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNTkyOWRjOC4uYmFkNjlmNCAxMDA2NDQKLS0tIGEvUGVyZm9ybWFu
Y2VUZXN0cy9DaGFuZ2VMb2cKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxMi0wOS0yMSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgW1JlZmFjdG9yaW5nXSBJbnRyb2R1Y2UgYSB0cmF2ZXJzYWwgc3Ry
YXRlZ3kgaW4gU2VsZWN0b3JDaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NzI5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEludHJvZHVjZXMgcXVlcnlTZWxlY3RvcigpIHBlcmZvcm1hbmNlIHRl
c3RzIHRvIGNoZWNrIFNlbGVjdG9yQ2hlY2tlciBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIENT
Uy9wc2V1ZG9jbGFzcy1zZWxlY3RvcnMuaHRtbDogQWRkZWQuCisKIDIwMTItMDktMjUgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2tpcCBEcm9tYWVvL2pzbGli
LW1vZGlmeS1qcXVlcnkuaHRtbCBwZXIgYnVnIDk1Mzc2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDUxMGZhMTYu
LjBhODA0YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxMi0wOS0yNCAgU2hpbnlh
IEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1JlZmFjdG9yaW5n
XSBJbnRyb2R1Y2UgYSB0cmF2ZXJzYWwgc3RyYXRlZ3kgaW4gU2VsZWN0b3JDaGVja2VyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzI5OAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGV4dHJhY3QgRE9N
IHRyYXZlcnNhbCBjb2RlIGZyb20gU2VsZWN0b3JDaGVja2VyIHNvIHRoYXQgd2UgY2FuIHVzZSBh
bm90aGVyIHRyYXZlcnNhbCBzdHJhdGVneS4KKyAgICAgICAgQW5vdGhlciB0cmF2ZXJzYWwgc3Ry
YXRlZ3kgd2lsbCBiZSBpbnRyb2R1Y2VkIGluIEJ1ZyA5Njk5MC4KKworICAgICAgICBTaW5jZSB0
aGlzIGNvZGUgcGF0aCBpcyB2ZXJ5IGhvdCwgd2Ugd2VyZSB2ZXJ5IGNhcmVmdWwgbm90IHRvIHJl
Z3Jlc3MgcGVyZm9ybWFuY2UuCisgICAgICAgIFdlIHdpbGwgdXNlIHRlbXBsYXRlIHNwZWNpYWxp
emF0aW9uIHRvIGNoYW5nZSB0aGUgdHJhdmVyc2FsIGltcGxlbWVudGF0aW9uLgorCisgICAgICAg
IFdlIGNvbmZpcm1lZCB0aGF0IHRoaXMgcGF0Y2ggZG9lcyBub3QgcmVncmVzcyBTZWxlY3RvckNo
ZWNrZXJQZXJmb3JtYW5jZS4gSSBoYXZlIGNoZWNrZWQgdGhlIHBlcmZvcm1hbmNlIG9mCisgICAg
ICAgIHRoZSBhZGRlZCB0ZXN0IGluIG15IExpbnV4IEJveCB1c2luZyBydW4tcGVyZi10ZXN0cy4K
KworICAgICAgICBUaGUgcGVyZm9ybWFuY2Ugb2YgdGhlIGFkZGVkIHRlc3QgYmVmb3JlIHVzaW5n
IHRoaXMgcGF0Y2ggd2FzOgorICAgICAgICAgIGF2ZyAzNjY5LjE0MzM5Njc3Njk5MiBydW5zL3MK
KyAgICAgICAgICBtZWRpYW4gMzY2Ny45Mzk0MTEyNjk2MzE0IHJ1bnMvcworICAgICAgICAgIHN0
ZGV2IDIxLjEyMzQ1Mjk2NjAxMzY5IHJ1bnMvcworICAgICAgICAgIG1pbiAzNTk0LjU0NTI3NzY0
MzAxMzQgcnVucy9zCisgICAgICAgICAgbWF4IDM3MDcuNDA4MjUxMDU2NzAzIHJ1bnMvcworCisg
ICAgICAgIFdoZW4gd2UgdXNlZCB0aGlzIHBhdGNoLCB0aGUgcGVyZm9ybWFuY2Ugd2FzOgorICAg
ICAgICAgIGF2ZyAzODUxLjM3NjU1NTU5MDk0NiBydW5zL3MKKyAgICAgICAgICBtZWRpYW4gMzg1
OC4zNDMzNDUyNjA0MzUgcnVucy9zCisgICAgICAgICAgc3RkZXYgMjUuMjQ1NjgzOTY3MjQ5NDk0
IHJ1bnMvcworICAgICAgICAgIG1pbiAzNzgyLjUxMDg3ODI0MTc1NCBydW5zL3MKKyAgICAgICAg
ICBtYXggMzg3OC40MzA1OTM4NDI1MDk2IHJ1bnMvcworCisgICAgICAgIEkndmUgdHJpZWQgdGhl
c2UgdGVzdHMgc2V2ZXJhbCB0aW1lcywgYW5kIEkgdXNlZCB0aGUgYmVzdCByZWNvcmQgaGVyZS4K
KworICAgICAgICBUZXN0OiBQZXJmb3JtYW5jZVRlc3RzL0NTUz9wc2V1ZG9jbGFzcy1zZWxlY3Rv
cnMuaHRtbAorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rv
cik6IE1ha2UgdGhpcyBhIHRlbXBsYXRlIG1ldGhvZCB0byBhY2NlcHQgYW5vdGhlciBDb250ZXh0
IHR5cGUuCisgICAgICAgIEFub3RoZXIgQ29udGV4dCB0eXBlIHdpbGwgYmUgaW50cm9kdWNlZCBp
biBjb21pbmcgcGF0Y2guCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2
ZXJzYWxTdHJhdGVneTo6aXNGaXJzdENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9y
Q2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmlzTGFzdENoaWxkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmlzRmlyc3RPZlR5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJh
dGVneTo6aXNMYXN0T2ZUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6
RE9NVHJhdmVyc2FsU3RyYXRlZ3k6OmNvdW50RWxlbWVudHNCZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50
c09mVHlwZUJlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5Ojpjb3VudEVsZW1lbnRzQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTo6Y291bnRFbGVtZW50c09mVHlw
ZUFmdGVyKToKKyAgICAgICAgKiBjc3MvU2VsZWN0b3JDaGVja2VyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0OjpTZWxlY3RvckNo
ZWNraW5nQ29udGV4dCk6CisgICAgICAgIChTZWxlY3RvckNoZWNraW5nQ29udGV4dCk6CisgICAg
ICAgIChTZWxlY3RvckNoZWNrZXIpOgorICAgICAgICAoRE9NVHJhdmVyc2FsU3RyYXRlZ3kpOiBF
eHRyYWN0ZWQgdGhlIERPTSB0cmF2ZXJzYWwgY29kZSBmcm9tIFNlbGVjdG9yQ2hlY2tlci4gQW5v
dGhlciB0cmF2ZXJzYWwgY29kZQorICAgICAgICB3aWxsIGJlIGludHJvZHVjZWQgdGhlIGNvbWlu
ZyBwYXRjaC4KKwogMjAxMi0wOS0yNSAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJzb25AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEVuc3VyZSB2YXJpYWJsZXMgYXJlIHJlc29sdmVkIGZvciBz
cGVjaWFsaXplZCBDU1MgcHJpbWl0aXZlIHZhbHVlIHR5cGVzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcAppbmRleCBhYWU0N2UyLi5iYmIxNWRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ1NT
U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTZWxlY3Rvckxpc3QuaCIKKyNpbmNsdWRlICJDb250
ZW50U2VsZWN0b3JRdWVyeS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkZvY3VzQ29udHJvbGxlci5o
IgpAQCAtNTUsNiArNTYsOCBAQAogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJYTGlua05h
bWVzLmgiCiAKKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKwogI2lmIFVTRShQTEFURk9S
TV9TVFJBVEVHSUVTKQogI2luY2x1ZGUgIlBsYXRmb3JtU3RyYXRlZ2llcy5oIgogI2luY2x1ZGUg
IlZpc2l0ZWRMaW5rU3RyYXRlZ3kuaCIKQEAgLTQzOSw3ICs0NDIsOCBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6aXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVj
dG9yKQogLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAgLSB0aGUgc2VsZWN0b3IgZmFpbHMg
Zm9yIHRoZSBlbGVtZW50IGUKIC8vICogU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIC0gdGhlIHNl
bGVjdG9yIGZhaWxzIGZvciBlIGFuZCBhbnkgc2libGluZyBvZiBlCiAvLyAqIFNlbGVjdG9yRmFp
bHNDb21wbGV0ZWx5ICAtIHRoZSBzZWxlY3RvciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcg
b3IgYW5jZXN0b3Igb2YgZQotU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29u
dGV4dCwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVt
ZW50cykgY29uc3QKK3RlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KK1NlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29u
c3QgQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9v
bCYgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAogewogICAgIC8vIGZpcnN0IHNlbGVj
dG9yIGhhcyB0byBtYXRjaAogICAgIGlmICghY2hlY2tPbmVTZWxlY3Rvcihjb250ZXh0LCBkeW5h
bWljUHNldWRvLCBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpKQpAQCAtNDUzLDcgKzQ1Nyw3IEBA
IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Vs
ZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgaWYgKCFoaXN0b3J5U2VsZWN0b3IpCiAgICAg
ICAgIHJldHVybiBTZWxlY3Rvck1hdGNoZXM7CiAKLSAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCBuZXh0Q29udGV4dChjb250ZXh0KTsKKyAgICBDaGVja2luZ0NvbnRleHQgbmV4dENvbnRleHQo
Y29udGV4dCk7CiAgICAgbmV4dENvbnRleHQuc2VsZWN0b3IgPSBoaXN0b3J5U2VsZWN0b3I7CiAK
ICAgICBpZiAocmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yKSB7CkBAIC03MDEs
NyArNzA1LDggQEAgc3RhdGljIGJvb2wgYW55QXR0cmlidXRlTWF0Y2hlcyhFbGVtZW50KiBlbGVt
ZW50LCBDU1NTZWxlY3Rvcjo6TWF0Y2ggbWF0Y2gsIGNvbnMKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9y
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCYg
aGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAordGVtcGxhdGU8dHlwZW5hbWUgQ2hlY2tp
bmdDb250ZXh0PgorYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
Q2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCYg
aGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKSBjb25zdAogewogICAgIEVsZW1lbnQqIGNvbnN0ICYg
ZWxlbWVudCA9IGNvbnRleHQuZWxlbWVudDsKICAgICBDU1NTZWxlY3RvciogY29uc3QgJiBzZWxl
Y3RvciA9IGNvbnRleHQuc2VsZWN0b3I7CkBAIC03MzgsNyArNzQzLDcgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
IGNvbnRleHQsIFAKICAgICAgICAgICAgIGlmICghc2VsZWN0b3JMaXN0KQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQg
c3ViQ29udGV4dChjb250ZXh0KTsKKyAgICAgICAgICAgIENoZWNraW5nQ29udGV4dCBzdWJDb250
ZXh0KGNvbnRleHQpOwogICAgICAgICAgICAgc3ViQ29udGV4dC5pc1N1YlNlbGVjdG9yID0gdHJ1
ZTsKICAgICAgICAgICAgIGZvciAoc3ViQ29udGV4dC5zZWxlY3RvciA9IHNlbGVjdG9yTGlzdC0+
Zmlyc3QoKTsgc3ViQ29udGV4dC5zZWxlY3Rvcjsgc3ViQ29udGV4dC5zZWxlY3RvciA9IHN1YkNv
bnRleHQuc2VsZWN0b3ItPnRhZ0hpc3RvcnkoKSkgewogICAgICAgICAgICAgICAgIC8vIDpub3Qg
Y2Fubm90IG5lc3QuIEkgZG9uJ3QgcmVhbGx5IGtub3cgd2h5IHRoaXMgaXMgYQpAQCAtNzkyLDkg
Kzc5Nyw3IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNl
bGVjdG9yQ2hlY2tpbmdDb250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0ZpcnN0Q2hpbGQ6CiAgICAgICAgICAgICAvLyBmaXJzdC1jaGlsZCBtYXRjaGVz
IHRoZSBmaXJzdCBjaGlsZCB0aGF0IGlzIGFuIGVsZW1lbnQKICAgICAgICAgICAgIGlmIChlbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwotICAgICAgICAgICAgICAgIGlmICghZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGlu
ZygpKQotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNG
aXJzdENoaWxkKGNvbnRleHQsIGVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUg
PT0gUmVzb2x2aW5nU3R5bGUpIHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNo
aWxkU3R5bGUgPSBjb250ZXh0LmVsZW1lbnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDog
ZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUq
IHBhcmVudFN0eWxlID0gY29udGV4dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJl
bnRTdHlsZSA6IGVsZW1lbnQtPnBhcmVudE5vZGUoKS0+cmVuZGVyU3R5bGUoKTsKQEAgLTgwOSwx
NCArODEyLDcgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3Qg
U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRmlyc3RPZlR5cGU6CiAgICAgICAgICAgICAvLyBmaXJzdC1vZi10eXBlIG1h
dGNoZXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgaXRzIHR5cGUKICAgICAgICAgICAgIGlmIChlbGVt
ZW50LT5wYXJlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSA9IGVsZW1lbnQt
PnRhZ1FOYW1lKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5n
ID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0g
c2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICByZXN1bHQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJvb2wg
cmVzdWx0ID0gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6aXNGaXJzdE9m
VHlwZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAgICAgICAg
IFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4
dC5lbGVtZW50UGFyZW50U3R5bGUgOiBlbGVtZW50LT5wYXJlbnROb2RlKCktPnJlbmRlclN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnRTdHlsZSkKQEAgLTgyOCw3ICs4MjQs
NyBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dCYgY29udGV4dCwgUAogICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9MYXN0Q2hpbGQ6CiAgICAgICAgICAgICAvLyBsYXN0LWNoaWxkIG1hdGNoZXMgdGhlIGxh
c3QgY2hpbGQgdGhhdCBpcyBhbiBlbGVtZW50CiAgICAgICAgICAgICBpZiAoRWxlbWVudCogcGFy
ZW50RWxlbWVudCA9IGVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigp
ICYmICFlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsKKyAgICAgICAgICAgICAgICBib29s
IHJlc3VsdCA9IHBhcmVudEVsZW1lbnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSAmJiBE
T01UcmF2ZXJzYWxTdHJhdGVneTxDaGVja2luZ0NvbnRleHQ+Ojppc0xhc3RDaGlsZChjb250ZXh0
LCBlbGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxl
KSB7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4
dC5lbGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0
eWxlKCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNv
bnRleHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRF
bGVtZW50LT5yZW5kZXJTdHlsZSgpOwpAQCAtODUwLDE5ICs4NDYsMTMgQEAgYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQm
IGNvbnRleHQsIFAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJl
bnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0
eXBlID0gZWxlbWVudC0+dGFnUU5hbWUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVs
ZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsg
c2libGluZyA9IHNpYmxpbmctPm5leHRFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9NVHJhdmVyc2FsU3RyYXRlZ3k8
Q2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQt
PnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb09ubHlDaGlsZDoKICAgICAgICAgICAgIGlmIChFbGVt
ZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgYm9vbCBmaXJzdENoaWxkID0gIWVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxp
bmcoKTsKLSAgICAgICAgICAgICAgICBib29sIG9ubHlDaGlsZCA9IGZpcnN0Q2hpbGQgJiYgcGFy
ZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmICFlbGVtZW50LT5uZXh0
RWxlbWVudFNpYmxpbmcoKTsKLQorICAgICAgICAgICAgICAgIGJvb2wgZmlyc3RDaGlsZCA9IERP
TVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzRmlyc3RDaGlsZChjb250ZXh0
LCBlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBib29sIG9ubHlDaGlsZCA9IGZpcnN0Q2hpbGQg
JiYgcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpICYmIERPTVRyYXZl
cnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzTGFzdENoaWxkKGNvbnRleHQsIGVsZW1l
bnQpOwogICAgICAgICAgICAgICAgIGlmIChtX21vZGUgPT0gUmVzb2x2aW5nU3R5bGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIGNoaWxkU3R5bGUgPSBjb250ZXh0LmVsZW1l
bnRTdHlsZSA/IGNvbnRleHQuZWxlbWVudFN0eWxlIDogZWxlbWVudC0+cmVuZGVyU3R5bGUoKTsK
ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlID0gY29udGV4dC5l
bGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA6IHBhcmVudEVsZW1lbnQt
PnJlbmRlclN0eWxlKCk7CkBAIC04OTAsMzMgKzg4MCwxNCBAQCBib29sIFNlbGVjdG9yQ2hlY2tl
cjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29udGV4
dCwgUAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoIXBhcmVudEVsZW1l
bnQtPmlzRmluaXNoZWRQYXJzaW5nQ2hpbGRyZW4oKSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUgPSBl
bGVtZW50LT50YWdRTmFtZSgpOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCog
c2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2li
bGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgewotICAgICAgICAgICAg
ICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
Zm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5n
KCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgewot
ICAgICAgICAgICAgICAgICAgICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIERPTVRyYXZl
cnNhbFN0cmF0ZWd5PENoZWNraW5nQ29udGV4dD46OmlzRmlyc3RPZlR5cGUoY29udGV4dCwgZWxl
bWVudCwgZWxlbWVudC0+dGFnUU5hbWUoKSkgJiYgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tp
bmdDb250ZXh0Pjo6aXNMYXN0T2ZUeXBlKGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FO
YW1lKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb050aENoaWxkOgogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+
cGFyc2VOdGgoKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVt
ZW50KiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaW50IGNvdW50ID0gMTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1l
bnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7
IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyU3R5bGUqIHMgPSBzaWJsaW5nLT5yZW5kZXJTdHlsZSgpOwotICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHMgPyBzLT5jaGlsZEluZGV4KCkgOiAw
OwotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXgpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvdW50ICs9IGluZGV4OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAg
ICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJhdmVyc2Fs
U3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c0JlZm9yZShjb250ZXh0LCBl
bGVtZW50KTsKICAgICAgICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7
CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBjaGlsZFN0eWxlID0gY29udGV4dC5l
bGVtZW50U3R5bGUgPyBjb250ZXh0LmVsZW1lbnRTdHlsZSA6IGVsZW1lbnQtPnJlbmRlclN0eWxl
KCk7CiAgICAgICAgICAgICAgICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRl
eHQuZWxlbWVudFN0eWxlID8gY29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVt
ZW50LT5yZW5kZXJTdHlsZSgpOwpAQCAtOTM0LDEyICs5MDUsNyBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYgY29u
dGV4dCwgUAogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci0+cGFyc2VOdGgoKSkKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGlmIChFbGVtZW50KiBwYXJlbnRFbGVtZW50ID0g
ZWxlbWVudC0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0g
MTsKLSAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+
dGFnUU5hbWUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcg
PSBlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBz
aWJsaW5nLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICAr
K2NvdW50OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAx
ICsgRE9NVHJhdmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c09m
VHlwZUJlZm9yZShjb250ZXh0LCBlbGVtZW50LCBlbGVtZW50LT50YWdRTmFtZSgpKTsKICAgICAg
ICAgICAgICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlKSB7CiAgICAgICAgICAgICAg
ICAgICAgIFJlbmRlclN0eWxlKiBwYXJlbnRTdHlsZSA9IGNvbnRleHQuZWxlbWVudFN0eWxlID8g
Y29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgOiBwYXJlbnRFbGVtZW50LT5yZW5kZXJTdHlsZSgp
OwogICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGUpCkBAIC05NjEsOSArOTI3LDcg
QEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JD
aGVja2luZ0NvbnRleHQmIGNvbnRleHQsIFAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgaWYgKCFwYXJlbnRFbGVtZW50LT5pc0ZpbmlzaGVkUGFyc2luZ0NoaWxkcmVuKCkpCiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBpbnQgY291
bnQgPSAxOwotICAgICAgICAgICAgICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVs
ZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dEVsZW1lbnRTaWJsaW5nKCkpCi0gICAgICAgICAgICAgICAgICAgICsrY291bnQ7CisgICAg
ICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIERPTVRyYXZlcnNhbFN0cmF0ZWd5PENoZWNraW5n
Q29udGV4dD46OmNvdW50RWxlbWVudHNBZnRlcihjb250ZXh0LCBlbGVtZW50KTsKICAgICAgICAg
ICAgICAgICBpZiAoc2VsZWN0b3ItPm1hdGNoTnRoKGNvdW50KSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC05NzksMTIgKzk0Myw4IEBAIGJvb2wg
U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0JiBjb250ZXh0LCBQCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlm
ICghcGFyZW50RWxlbWVudC0+aXNGaW5pc2hlZFBhcnNpbmdDaGlsZHJlbigpKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsK
LSAgICAgICAgICAgICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlID0gZWxlbWVudC0+dGFn
UU5hbWUoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBl
bGVtZW50LT5uZXh0RWxlbWVudFNpYmxpbmcoKTsgc2libGluZzsgc2libGluZyA9IHNpYmxpbmct
Pm5leHRFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzaWJsaW5n
LT5oYXNUYWdOYW1lKHR5cGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKLSAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgRE9NVHJh
dmVyc2FsU3RyYXRlZ3k8Q2hlY2tpbmdDb250ZXh0Pjo6Y291bnRFbGVtZW50c09mVHlwZUFmdGVy
KGNvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQtPnRhZ1FOYW1lKCkpOwogICAgICAgICAgICAgICAg
IGlmIChzZWxlY3Rvci0+bWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTk5NSw3ICs5NTUsNyBAQCBib29sIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dCYg
Y29udGV4dCwgUAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OlBzZXVkb0FueToKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBTZWxlY3RvckNoZWNr
aW5nQ29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgICAgIENoZWNraW5n
Q29udGV4dCBzdWJDb250ZXh0KGNvbnRleHQpOwogICAgICAgICAgICAgICAgIHN1YkNvbnRleHQu
aXNTdWJTZWxlY3RvciA9IHRydWU7CiAgICAgICAgICAgICAgICAgZm9yIChzdWJDb250ZXh0LnNl
bGVjdG9yID0gc2VsZWN0b3ItPnNlbGVjdG9yTGlzdCgpLT5maXJzdCgpOyBzdWJDb250ZXh0LnNl
bGVjdG9yOyBzdWJDb250ZXh0LnNlbGVjdG9yID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHN1YkNv
bnRleHQuc2VsZWN0b3IpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9y
KHN1YkNvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgPT0g
U2VsZWN0b3JNYXRjaGVzKQpAQCAtMTM5Miw0ICsxMzUyLDIyNCBAQCBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6ZGV0ZXJtaW5lU2VsZWN0b3JTY29wZXMoY29uc3QgQ1NTU2VsZWN0b3JMaXN0JiBzZWxl
Y3RvckxpcwogICAgIHJldHVybiB0cnVlOwogfQogCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JDaGVja2luZ0NvbnRleHQ+Ojppc0ZpcnN0Q2hpbGQoY29uc3QgU2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0
dXJuICFlbGVtZW50LT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCk7Cit9CisKK3RlbXBsYXRlPD4K
K2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0
b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmlzTGFzdENoaWxkKGNvbnN0IFNl
bGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50
KQoreworICAgIHJldHVybiAhZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7Cit9CisKK3Rl
bXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRl
Z3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dD46OmlzRmlyc3RPZlR5
cGUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dCYsIEVsZW1l
bnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUpCit7CisgICAgZm9yIChjb25z
dCBFbGVtZW50KiBzaWJsaW5nID0gZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpOyBz
aWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Cisg
ICAgICAgIGlmIChzaWJsaW5nLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8PgoraW5saW5l
IGJvb2wgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6aXNMYXN0T2ZUeXBlKGNvbnN0IFNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25z
dCBRdWFsaWZpZWROYW1lJiB0eXBlKQoreworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGlu
ZyA9IGVsZW1lbnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2li
bGluZy0+bmV4dEVsZW1lbnRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHNpYmxpbmctPmhhc1Rh
Z05hbWUodHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9N
VHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4
dD46OmNvdW50RWxlbWVudHNCZWZvcmUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNo
ZWNraW5nQ29udGV4dCYsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaW50IGNvdW50ID0gMDsK
KyAgICBmb3IgKGNvbnN0IEVsZW1lbnQqIHNpYmxpbmcgPSBlbGVtZW50LT5wcmV2aW91c0VsZW1l
bnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJsaW5nLT5wcmV2aW91c0VsZW1lbnRT
aWJsaW5nKCkpIHsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHMgPSBzaWJsaW5nLT5yZW5kZXJTdHls
ZSgpOworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IHMgPyBzLT5jaGlsZEluZGV4KCkgOiAwOwor
ICAgICAgICBpZiAoaW5kZXgpIHsKKyAgICAgICAgICAgIGNvdW50ICs9IGluZGV4OworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY291bnQrKzsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY291bnQ7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2Vy
OjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0Pjo6Y291bnRFbGVtZW50c09mVHlwZUJlZm9yZShjb25zdCBTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdHlwZSkKK3sKKyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3QgRWxl
bWVudCogc2libGluZyA9IGVsZW1lbnQtPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKTsgc2libGlu
Zzsgc2libGluZyA9IHNpYmxpbmctPnByZXZpb3VzRWxlbWVudFNpYmxpbmcoKSkgeworICAgICAg
ICBpZiAoc2libGluZy0+aGFzVGFnTmFtZSh0eXBlKSkKKyAgICAgICAgICAgICsrY291bnQ7Cisg
ICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNl
bGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3RvckNoZWNraW5nQ29udGV4dD46OmNvdW50RWxlbWVudHNBZnRlcihjb25zdCBTZWxlY3RvckNo
ZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgRWxlbWVudCogZWxlbWVudCkKK3sKKyAg
ICBpbnQgY291bnQgPSAwOworICAgIGZvciAoY29uc3QgRWxlbWVudCogc2libGluZyA9IGVsZW1l
bnQtPm5leHRFbGVtZW50U2libGluZygpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+bmV4
dEVsZW1lbnRTaWJsaW5nKCkpCisgICAgICAgICsrY291bnQ7CisKKyAgICByZXR1cm4gY291bnQ7
Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJz
YWxTdHJhdGVneTxTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Pjo6Y291
bnRFbGVtZW50c09mVHlwZUFmdGVyKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVj
a2luZ0NvbnRleHQmLCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBl
KQoreworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBFbGVtZW50KiBzaWJsaW5n
ID0gZWxlbWVudC0+bmV4dEVsZW1lbnRTaWJsaW5nKCk7IHNpYmxpbmc7IHNpYmxpbmcgPSBzaWJs
aW5nLT5uZXh0RWxlbWVudFNpYmxpbmcoKSkgeworICAgICAgICBpZiAoc2libGluZy0+aGFzVGFn
TmFtZSh0eXBlKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfQorCisgICAgcmV0dXJuIGNv
dW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRy
YXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRX
aXRoTm9kZVBvb2w+Ojppc0ZpcnN0Q2hpbGQoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbCYgY29udGV4dCwgRWxlbWVudCogZWxlbWVudCkK
K3sKKyAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CisKKyAgICBjb25zdCBWZWN0b3I8UmVmUHRy
PE5vZGU+ID4mIHNpYmxpbmdzID0gY29udGV4dC5zaWJsaW5nczsKKyAgICBBU1NFUlQoZWxlbWVu
dCA9PSB0b0VsZW1lbnQoc2libGluZ3NbY29udGV4dC5udGhdLmdldCgpKSk7CisgICAgCisgICAg
Zm9yIChpbnQgaSA9IGNvbnRleHQubnRoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgaWYg
KHNpYmxpbmdzW2ldICYmIHNpYmxpbmdzW2ldLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRl
PD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2Vs
ZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbD46OmlzTGFz
dENoaWxkKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRo
Tm9kZVBvb2wmIGNvbnRleHQsIEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgVU5VU0VEX1BBUkFN
KGVsZW1lbnQpOworCisgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBzaWJsaW5ncyA9
IGNvbnRleHQuc2libGluZ3M7CisgICAgQVNTRVJUKGVsZW1lbnQgPT0gdG9FbGVtZW50KHNpYmxp
bmdzW2NvbnRleHQubnRoXS5nZXQoKSkpOworCisgICAgZm9yIChzaXplX3QgaSA9IGNvbnRleHQu
bnRoICsgMTsgaSA8IHNpYmxpbmdzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChzaWJsaW5n
c1tpXSAmJiBzaWJsaW5nc1tpXS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit0ZW1wbGF0ZTw+Citpbmxp
bmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRoTm9kZVBvb2w+Ojppc0ZpcnN0T2ZUeXBl
KGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRoTm9kZVBv
b2wmIGNvbnRleHQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHR5cGUp
Cit7CisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOworCisgICAgY29uc3QgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+JiBzaWJsaW5ncyA9IGNvbnRleHQuc2libGluZ3M7CisgICAgQVNTRVJUKGVsZW1l
bnQgPT0gdG9FbGVtZW50KHNpYmxpbmdzW2NvbnRleHQubnRoXS5nZXQoKSkpOworCisgICAgZm9y
IChpbnQgaSA9IGNvbnRleHQubnRoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgaWYgKHNp
YmxpbmdzW2ldICYmIHNpYmxpbmdzW2ldLT5pc0VsZW1lbnROb2RlKCkgJiYgc2libGluZ3NbaV0t
Pmhhc1RhZ05hbWUodHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBib29sIFNlbGVjdG9yQ2hl
Y2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNr
aW5nQ29udGV4dFdpdGhOb2RlUG9vbD46OmlzTGFzdE9mVHlwZShjb25zdCBTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0aE5vZGVQb29sJiBjb250ZXh0LCBFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0eXBlKQoreworICAgIFVOVVNFRF9QQVJB
TShlbGVtZW50KTsKKworICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3Mg
PSBjb250ZXh0LnNpYmxpbmdzOworICAgIEFTU0VSVChlbGVtZW50ID09IHRvRWxlbWVudChzaWJs
aW5nc1tjb250ZXh0Lm50aF0uZ2V0KCkpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSBjb250ZXh0
Lm50aCArIDE7IGkgPCBzaWJsaW5ncy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoc2libGlu
Z3NbaV0gJiYgc2libGluZ3NbaV0tPmlzRWxlbWVudE5vZGUoKSAmJiBzaWJsaW5nc1tpXS0+aGFz
VGFnTmFtZSh0eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordGVtcGxhdGU8PgoraW5saW5lIGludCBTZWxlY3RvckNoZWNrZXI6
OkRPTVRyYXZlcnNhbFN0cmF0ZWd5PFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0Nv
bnRleHRXaXRoTm9kZVBvb2w+Ojpjb3VudEVsZW1lbnRzQmVmb3JlKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tlcjo6U2VsZWN0b3JDaGVja2luZ0NvbnRleHRXaXRoTm9kZVBvb2wmIGNvbnRleHQsIEVsZW1l
bnQqIGVsZW1lbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOworCisgICAgY29uc3Qg
VmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBzaWJsaW5ncyA9IGNvbnRleHQuc2libGluZ3M7CisgICAg
QVNTRVJUKGVsZW1lbnQgPT0gdG9FbGVtZW50KHNpYmxpbmdzW2NvbnRleHQubnRoXS5nZXQoKSkp
OworCisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gY29udGV4dC5udGggLSAx
OyBpID49IDA7IC0taSkgeworICAgICAgICBpZiAoc2libGluZ3NbaV0gJiYgc2libGluZ3NbaV0t
PmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgfQorCisgICAgcmV0
dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgaW50IFNlbGVjdG9yQ2hlY2tlcjo6
RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29u
dGV4dFdpdGhOb2RlUG9vbD46OmNvdW50RWxlbWVudHNBZnRlcihjb25zdCBTZWxlY3RvckNoZWNr
ZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0aE5vZGVQb29sJiBjb250ZXh0LCBFbGVtZW50
KiBlbGVtZW50KQoreworICAgIFVOVVNFRF9QQVJBTShlbGVtZW50KTsKKworICAgIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3MgPSBjb250ZXh0LnNpYmxpbmdzOworICAgIEFT
U0VSVChlbGVtZW50ID09IHRvRWxlbWVudChzaWJsaW5nc1tjb250ZXh0Lm50aF0uZ2V0KCkpKTsK
KworICAgIGludCBjb3VudCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IGNvbnRleHQubnRoICsg
MTsgaSA8IHNpYmxpbmdzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChzaWJsaW5nc1tpXSAm
JiBzaWJsaW5nc1tpXS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuICsrY291
bnQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvdW50OworfQorCit0ZW1wbGF0ZTw+CitpbmxpbmUg
aW50IFNlbGVjdG9yQ2hlY2tlcjo6RE9NVHJhdmVyc2FsU3RyYXRlZ3k8U2VsZWN0b3JDaGVja2Vy
OjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbD46OmNvdW50RWxlbWVudHNPZlR5
cGVCZWZvcmUoY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdp
dGhOb2RlUG9vbCYgY29udGV4dCwgRWxlbWVudCogZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgdHlwZSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZWxlbWVudCk7CisKKyAgICBjb25zdCBWZWN0
b3I8UmVmUHRyPE5vZGU+ID4mIHNpYmxpbmdzID0gY29udGV4dC5zaWJsaW5nczsKKyAgICBBU1NF
UlQoZWxlbWVudCA9PSB0b0VsZW1lbnQoc2libGluZ3NbY29udGV4dC5udGhdLmdldCgpKSk7CisK
KyAgICBpbnQgY291bnQgPSAwOworICAgIGZvciAoaW50IGkgPSBjb250ZXh0Lm50aCAtIDE7IGkg
Pj0gMDsgLS1pKSB7CisgICAgICAgIGlmIChzaWJsaW5nc1tpXSAmJiBzaWJsaW5nc1tpXS0+aXNF
bGVtZW50Tm9kZSgpICYmIHNpYmxpbmdzW2ldLT5oYXNUYWdOYW1lKHR5cGUpKQorICAgICAgICAg
ICAgKytjb3VudDsKKyAgICB9CisKKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3RlbXBsYXRlPD4K
K2lubGluZSBpbnQgU2VsZWN0b3JDaGVja2VyOjpET01UcmF2ZXJzYWxTdHJhdGVneTxTZWxlY3Rv
ckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0V2l0aE5vZGVQb29sPjo6Y291bnRFbGVt
ZW50c09mVHlwZUFmdGVyKGNvbnN0IFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JDaGVja2luZ0Nv
bnRleHRXaXRoTm9kZVBvb2wmIGNvbnRleHQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHR5cGUpCit7CisgICAgVU5VU0VEX1BBUkFNKGVsZW1lbnQpOworCisgICAgY29u
c3QgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBzaWJsaW5ncyA9IGNvbnRleHQuc2libGluZ3M7Cisg
ICAgQVNTRVJUKGVsZW1lbnQgPT0gdG9FbGVtZW50KHNpYmxpbmdzW2NvbnRleHQubnRoXS5nZXQo
KSkpOworCisgICAgaW50IGNvdW50ID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gY29udGV4dC5u
dGggKyAxOyBpIDwgc2libGluZ3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKHNpYmxpbmdz
W2ldICYmIHNpYmxpbmdzW2ldLT5pc0VsZW1lbnROb2RlKCkgJiYgc2libGluZ3NbaV0tPmhhc1Rh
Z05hbWUodHlwZSkpCisgICAgICAgICAgICByZXR1cm4gKytjb3VudDsKKyAgICB9CisKKyAgICBy
ZXR1cm4gY291bnQ7Cit9CisKK3RlbXBsYXRlCitTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0
Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yPFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0
b3JDaGVja2luZ0NvbnRleHQ+KGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRv
SWQmLCBib29sJikgY29uc3Q7Cit0ZW1wbGF0ZQorYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNr
T25lU2VsZWN0b3I8U2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhO
b2RlUG9vbD4oY29uc3QgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdp
dGhOb2RlUG9vbCYsIFBzZXVkb0lkJiwgYm9vbCYpIGNvbnN0OworCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U2VsZWN0b3JDaGVja2VyLmgKaW5kZXggZjE1Y2UwZC4uNDY3MDdmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU1NlbGVj
dG9yLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
TGlua0hhc2guaCIKKyNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUg
IlN0eWxlZEVsZW1lbnQuaCIKQEAgLTU0LDMxICs1NSw2NSBAQCBwdWJsaWM6CiAgICAgZW51bSBW
aXNpdGVkTWF0Y2hUeXBlIHsgVmlzaXRlZE1hdGNoRGlzYWJsZWQsIFZpc2l0ZWRNYXRjaEVuYWJs
ZWQgfTsKICAgICBlbnVtIE1vZGUgeyBSZXNvbHZpbmdTdHlsZSA9IDAsIENvbGxlY3RpbmdSdWxl
cywgUXVlcnlpbmdSdWxlcyB9OwogCi0gICAgc3RydWN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
IHsKKyAgICBzdHJ1Y3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHRCYXNlIHsKICAgICAgICAgLy8g
SW5pdGlhbCBzZWxlY3RvciBjb25zdHJ1Y3RvcgotICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29u
dGV4dChDU1NTZWxlY3Rvciogc2VsZWN0b3IsIEVsZW1lbnQqIGVsZW1lbnQsIFZpc2l0ZWRNYXRj
aFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkKKyAgICAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHRC
YXNlKENTU1NlbGVjdG9yKiBzZWxlY3RvciwgRWxlbWVudCogZWxlbWVudCwgVmlzaXRlZE1hdGNo
VHlwZSB2aXNpdGVkTWF0Y2hUeXBlKQogICAgICAgICAgICAgOiBzZWxlY3RvcihzZWxlY3RvcikK
ICAgICAgICAgICAgICwgZWxlbWVudChlbGVtZW50KQogICAgICAgICAgICAgLCBzY29wZSgwKQog
ICAgICAgICAgICAgLCB2aXNpdGVkTWF0Y2hUeXBlKHZpc2l0ZWRNYXRjaFR5cGUpCisgICAgICAg
ICAgICAsIHBzZXVkb1N0eWxlKE5PUFNFVURPKQogICAgICAgICAgICAgLCBlbGVtZW50U3R5bGUo
MCkKICAgICAgICAgICAgICwgZWxlbWVudFBhcmVudFN0eWxlKDApCiAgICAgICAgICAgICAsIGlz
U3ViU2VsZWN0b3IoZmFsc2UpCi0gICAgICAgICAgICAsIHBzZXVkb1N0eWxlKE5PUFNFVURPKQog
ICAgICAgICB7IH0KIAogICAgICAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3I7CiAgICAgICAgIEVs
ZW1lbnQqIGVsZW1lbnQ7CiAgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlOwogICAg
ICAgICBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGU7CisgICAgICAgIFBzZXVkb0lk
IHBzZXVkb1N0eWxlOwogICAgICAgICBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlOwogICAgICAg
ICBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlOwogICAgICAgICBib29sIGlzU3ViU2Vs
ZWN0b3I7Ci0gICAgICAgIFBzZXVkb0lkIHBzZXVkb1N0eWxlOworICAgIH07CisKKyAgICBzdHJ1
Y3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQgOiBwdWJsaWMgU2VsZWN0b3JDaGVja2luZ0NvbnRl
eHRCYXNlIHsKKyAgICAgICAgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQoQ1NTU2VsZWN0b3IqIHNl
bGVjdG9yLCBFbGVtZW50KiBlbGVtZW50LCBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5
cGUpCisgICAgICAgICAgICA6IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0QmFzZShzZWxlY3Rvciwg
ZWxlbWVudCwgdmlzaXRlZE1hdGNoVHlwZSkKKyAgICAgICAgeyB9CisgICAgfTsKKworICAgIHN0
cnVjdCBTZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbCA6IHB1YmxpYyBTZWxlY3Rv
ckNoZWNraW5nQ29udGV4dEJhc2UgeworICAgICAgICBTZWxlY3RvckNoZWNraW5nQ29udGV4dFdp
dGhOb2RlUG9vbChDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9k
ZT4gPiYgcG9vbCwgaW50IG50aCwgVmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBlKQor
ICAgICAgICAgICAgOiBTZWxlY3RvckNoZWNraW5nQ29udGV4dEJhc2Uoc2VsZWN0b3IsIHRvRWxl
bWVudChwb29sW250aF0uZ2V0KCkpLCB2aXNpdGVkTWF0Y2hUeXBlKQorICAgICAgICAgICAgLCBz
aWJsaW5ncyhwb29sKQorICAgICAgICAgICAgLCBudGgobnRoKQorICAgICAgICB7IH0KKworICAg
ICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gc2libGluZ3M7CisgICAgICAgIGludCBudGg7Cisg
ICAgfTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbnRleHQ+CisgICAgc3RydWN0IERPTVRy
YXZlcnNhbFN0cmF0ZWd5IHsKKyAgICAgICAgc3RhdGljIGJvb2wgaXNGaXJzdENoaWxkKGNvbnN0
IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGlzTGFzdENoaWxkKGNv
bnN0IENvbnRleHQmLCBFbGVtZW50Kik7CisgICAgICAgIHN0YXRpYyBib29sIGlzRmlyc3RPZlR5
cGUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
ICAgIHN0YXRpYyBib29sIGlzTGFzdE9mVHlwZShjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNv
bnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgICAgICBzdGF0aWMgaW50IGNvdW50RWxlbWVudHNC
ZWZvcmUoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKKyAgICAgICAgc3RhdGljIGludCBjb3Vu
dEVsZW1lbnRzQWZ0ZXIoY29uc3QgQ29udGV4dCYsIEVsZW1lbnQqKTsKKyAgICAgICAgc3RhdGlj
IGludCBjb3VudEVsZW1lbnRzT2ZUeXBlQmVmb3JlKGNvbnN0IENvbnRleHQmLCBFbGVtZW50Kiwg
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgICAgICBzdGF0aWMgaW50IGNvdW50RWxlbWVudHNP
ZlR5cGVBZnRlcihjb25zdCBDb250ZXh0JiwgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB9OwogCiAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVu
dCosIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IgPSBmYWxzZSkgY29uc3Q7Ci0gICAgU2Vs
ZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0Jiwg
UHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworICAgIHRl
bXBsYXRlPHR5cGVuYW1lIENoZWNraW5nQ29udGV4dD4KKyAgICBTZWxlY3Rvck1hdGNoIGNoZWNr
U2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtu
b3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoZWNraW5n
Q29udGV4dD4KKyAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoY29uc3QgQ2hlY2tpbmdDb250ZXh0
JiwgUHNldWRvSWQmLCBib29sJiBoYXNVbmtub3duUHNldWRvRWxlbWVudHMpIGNvbnN0OworCiAg
ICAgc3RhdGljIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3Iq
KTsKICAgICBib29sIGZhc3RDaGVja1NlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3Qg
RWxlbWVudCopIGNvbnN0OwogCkBAIC0xMTcsNyArMTUyLDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBib29sIGVsZW1lbnRNYXRjaGVzU2VsZWN0b3JTY29wZXMoY29uc3QgU3R5bGVkRWxlbWVudCos
IGNvbnN0IEhhc2hTZXQ8QXRvbWljU3RyaW5nSW1wbCo+JiBpZFNjb3BlcywgY29uc3QgSGFzaFNl
dDxBdG9taWNTdHJpbmdJbXBsKj4mIGNsYXNzU2NvcGVzKTsKIAogcHJpdmF0ZToKLSAgICBib29s
IGNoZWNrT25lU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVja2luZ0NvbnRleHQmLCBQc2V1ZG9J
ZCYsIGJvb2wmIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cykgY29uc3Q7CisKICAgICBib29sIGNo
ZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqLCBQc2V1ZG9JZCYgZHluYW1pY1Bz
ZXVkbykgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgaXNGcmFtZUZvY3VzZWQoY29uc3QgRWxlbWVu
dCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIu
Y3BwCmluZGV4IGQzYTU0ZjguLjA5ZDA3YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwCkBAIC0yMzcsNiArMjM3LDI1IEBAIHZvaWQgQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjpwYXJlbnQoKQogICAgIGFzc2VydFBvc3Rjb25kaXRpb24o
KTsKIH0KIAorc3RhdGljIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlv
bihjb25zdCBOb2RlKiBub2RlLCBFbGVtZW50U2hhZG93KiBzaGFkb3cpCit7CisgICAgQVNTRVJU
KG5vZGUpOworICAgIEFTU0VSVChzaGFkb3cpOworCisgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2Vy
dGlvblBvaW50ID0gMDsKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0gbm9kZTsKKyAgICBkbyB7
CisgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgIGlmIChJbnNl
cnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkp
IHsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgaW5zZXJ0
aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0gd2hpbGUgKCEhKHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KGN1cnJlbnQpKSk7CisK
KyAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7Cit9CisKIC8vIEZJWE1FOiBVc2UgYW4gaXRlcmF0
aXZlIGFsZ29yaXRobSBzbyB0aGF0IGl0IGNhbiBiZSBpbmxpbmVkLgogLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNDE1CiBOb2RlKiBDb21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNh
bERldGFpbHMqIGRldGFpbHMpIGNvbnN0CkBAIC0yNDUsOSArMjY0LDkgQEAgTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJl
bnRUcmF2ZXJzYWwKICAgICAgICAgQVNTRVJUKHRvU2hhZG93Um9vdChub2RlKS0+aXNZb3VuZ2Vz
dCgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCiAgICAgaWYgKEVsZW1lbnRTaGFkb3cq
IHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpKSB7Ci0gICAgICAgIHNoYWRvdy0+ZW5zdXJl
RGlzdHJpYnV0aW9uKCk7Ci0gICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQgPSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKG5vZGUpKSB7CisgICAgICAgIGlmIChJbnNl
cnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUsIHNo
YWRvdykpIHsKICAgICAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgICAgIGRldGFp
bHMtPmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOwogICAgICAgICAg
ICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KGluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKQEAgLTI1
Nyw2ICsyNzYsNyBAQCBOb2RlKiBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFy
ZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRyYXZlcnNhbAogICAgICAgICBpZiAoZGV0YWls
cykKICAgICAgICAgICAgIGRldGFpbHMtPmNoaWxkV2FzT3V0T2ZDb21wb3NpdGlvbigpOwogICAg
IH0KKwogICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudEluQ3VycmVudFRyZWUobm9kZSwgZGV0YWls
cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRE
aXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuY3BwCmluZGV4IDA3NmE3MjMuLmM0NWFiMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtNTcsOCArNTcsMjcgQEAg
dm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCogaG9zdCkKICAgICBt
X3ZhbGlkaXR5ID0gVmFsaWQ7CiAKICAgICBDb250ZW50RGlzdHJpYnV0aW9uIHBvb2w7CisjaWYg
MAogICAgIGZvciAoTm9kZSogbm9kZSA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9
IG5vZGUtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIHBvb2wuYXBwZW5kKG5vZGUpOworI2Vsc2UK
KyAgICBmb3IgKE5vZGUqIG5vZGUgPSBob3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghaXNJbnNlcnRpb25Qb2ludChub2Rl
KSkgeworICAgICAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlv
blBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJpbnNlcnRpb25Qb2ludCglcCkgPSAlZFxuIiwgaW5zZXJ0aW9uUG9pbnQsIChpbnQpaW5zZXJ0
aW9uUG9pbnQtPnNpemUoKSk7CisgICAgICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aGFzRGlzdHJp
YnV0aW9uKCkpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zZXJ0aW9u
UG9pbnQtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGluc2VydGlv
blBvaW50LT5hdChpKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKE5vZGUq
IGZhbGxiYWNrTm9kZSA9IGluc2VydGlvblBvaW50LT5maXJzdENoaWxkKCk7IGZhbGxiYWNrTm9k
ZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tOb2RlLT5uZXh0U2libGluZygpKQorICAgICAgICAg
ICAgICAgIHBvb2wuYXBwZW5kKGZhbGxiYWNrTm9kZSk7CisgICAgICAgIH0KKyAgICB9CisjZW5k
aWYKICAgICBWZWN0b3I8Ym9vbD4gZGlzdHJpYnV0ZWQocG9vbC5zaXplKCkpOwogICAgIGRpc3Ry
aWJ1dGVkLmZpbGwoZmFsc2UpOwogCkBAIC0xMTcsMTAgKzEzNiwxMCBAQCB2b2lkIENvbnRlbnRE
aXN0cmlidXRvcjo6ZGlzdHJpYnV0ZVNlbGVjdGlvbnNUbyhJbnNlcnRpb25Qb2ludCogaW5zZXJ0
aW9uUG9pbnQsCiAgICAgICAgIGlmIChkaXN0cmlidXRlZFtpXSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIE5vZGUqIGNoaWxkID0gcG9vbFtpXS5nZXQoKTsKLSAgICAgICAgaWYg
KCFxdWVyeS5tYXRjaGVzKGNoaWxkKSkKKyAgICAgICAgaWYgKCFxdWVyeS5tYXRjaGVzKHBvb2ws
IGkpKQogICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgTm9kZSogY2hpbGQgPSBwb29s
W2ldLmdldCgpOwogICAgICAgICBkaXN0cmlidXRpb24uYXBwZW5kKGNoaWxkKTsKICAgICAgICAg
bV9ub2RlVG9JbnNlcnRpb25Qb2ludC5hZGQoY2hpbGQsIGluc2VydGlvblBvaW50KTsKICAgICAg
ICAgZGlzdHJpYnV0ZWRbaV0gPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuY3BwCmluZGV4IGYxMmM1OTkuLjI1Yjg0MjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2VsZWN0b3JRdWVy
eS5jcHAKQEAgLTI5LDE3ICsyOSw1MyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5j
bHVkZSAiQ1NTU2VsZWN0b3JMaXN0LmgiCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50
LmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3Vz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK0NvbnRlbnRTZWxlY3RvckNoZWNrZXI6OkNvbnRl
bnRTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHN0cmljdFBhcnNpbmcp
CisgICAgOiBtX3NlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCwgc3RyaWN0UGFyc2luZykKK3sKKyAg
ICBtX3NlbGVjdG9yQ2hlY2tlci5zZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1
bGVzKTsKK30KKworYm9vbCBDb250ZW50U2VsZWN0b3JDaGVja2VyOjpjaGVja0NvbnRlbnRTZWxl
Y3RvcihDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYg
c2libGluZ3MsIGludCBudGgpIGNvbnN0Cit7CisgICAgUHNldWRvSWQgZHluYW1pY1BzZXVkbyA9
IE5PUFNFVURPOworICAgIGJvb2wgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzID0gZmFsc2U7Cisg
ICAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3RvckNoZWNraW5nQ29udGV4dFdpdGhOb2RlUG9vbCBj
b250ZXh0KHNlbGVjdG9yLCBzaWJsaW5ncywgbnRoLCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRN
YXRjaERpc2FibGVkKTsKKyAgICAKKyAgICByZXR1cm4gbV9zZWxlY3RvckNoZWNrZXIuY2hlY2tP
bmVTZWxlY3Rvcihjb250ZXh0LCBkeW5hbWljUHNldWRvLCBoYXNVbmtub3duUHNldWRvRWxlbWVu
dHMpOworfQorCit2b2lkIENvbnRlbnRTZWxlY3RvckRhdGFMaXN0Ojppbml0aWFsaXplKGNvbnN0
IENTU1NlbGVjdG9yTGlzdCYgc2VsZWN0b3JzKQoreworICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNl
bGVjdG9yID0gc2VsZWN0b3JzLmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVj
dG9yTGlzdDo6bmV4dChzZWxlY3RvcikpCisgICAgICAgIG1fc2VsZWN0b3JzLmFwcGVuZChzZWxl
Y3Rvcik7Cit9CisKK2Jvb2wgQ29udGVudFNlbGVjdG9yRGF0YUxpc3Q6Om1hdGNoZXMoY29uc3Qg
Q29udGVudFNlbGVjdG9yQ2hlY2tlciYgc2VsZWN0b3JDaGVja2VyLCBjb25zdCBWZWN0b3I8UmVm
UHRyPE5vZGU+ID4mIHNpYmxpbmdzLCBpbnQgbnRoKSBjb25zdAoreworICAgIHVuc2lnbmVkIHNl
bGVjdG9yQ291bnQgPSBtX3NlbGVjdG9ycy5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHNlbGVjdG9yQ291bnQ7ICsraSkgeworICAgICAgICBpZiAoc2VsZWN0b3JDaGVja2Vy
LmNoZWNrQ29udGVudFNlbGVjdG9yKG1fc2VsZWN0b3JzW2ldLCBzaWJsaW5ncywgbnRoKSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwog
Q29udGVudFNlbGVjdG9yUXVlcnk6OkNvbnRlbnRTZWxlY3RvclF1ZXJ5KGNvbnN0IEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCkKICAgICA6IG1faW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9u
UG9pbnQpCiAgICAgLCBtX3NlbGVjdG9yQ2hlY2tlcihpbnNlcnRpb25Qb2ludC0+ZG9jdW1lbnQo
KSwgIWluc2VydGlvblBvaW50LT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkKIHsKLSAgICBt
X3NlbGVjdG9yQ2hlY2tlci5zZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVz
KTsKLQogICAgIGlmIChpbnNlcnRpb25Qb2ludC0+c2VsZWN0KCkuaXNOdWxsKCkgfHwgaW5zZXJ0
aW9uUG9pbnQtPnNlbGVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICBtX2lzVmFsaWRTZWxlY3Rv
ciA9IHRydWU7CiAgICAgICAgIHJldHVybjsKQEAgLTU4LDE0ICs5NCwxNCBAQCBib29sIENvbnRl
bnRTZWxlY3RvclF1ZXJ5Ojppc1ZhbGlkU2VsZWN0b3IoKSBjb25zdAogICAgIHJldHVybiBtX2lz
VmFsaWRTZWxlY3RvcjsKIH0KIAotYm9vbCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhO
b2RlKiBub2RlKSBjb25zdAorYm9vbCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhjb25z
dCBWZWN0b3I8UmVmUHRyPE5vZGU+ID4mIHNpYmxpbmdzLCBpbnQgbnRoKSBjb25zdAogeworICAg
IE5vZGUqIG5vZGUgPSBzaWJsaW5nc1tudGhdLmdldCgpOworCiAgICAgQVNTRVJUKG5vZGUpOwog
ICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQVNTRVJUKG5vZGUt
PnBhcmVudE5vZGUoKSA9PSBtX2luc2VydGlvblBvaW50LT5zaGFkb3dSb290KCktPmhvc3QoKSk7
Ci0KICAgICBpZiAobV9pbnNlcnRpb25Qb2ludC0+c2VsZWN0KCkuaXNOdWxsKCkgfHwgbV9pbnNl
cnRpb25Qb2ludC0+c2VsZWN0KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApA
QCAtNzUsNyArMTExLDcgQEAgYm9vbCBDb250ZW50U2VsZWN0b3JRdWVyeTo6bWF0Y2hlcyhOb2Rl
KiBub2RlKSBjb25zdAogICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9zZWxlY3RvcnMubWF0Y2hlcyhtX3NlbGVjdG9y
Q2hlY2tlciwgdG9FbGVtZW50KG5vZGUpKTsKKyAgICByZXR1cm4gbV9zZWxlY3RvcnMubWF0Y2hl
cyhtX3NlbGVjdG9yQ2hlY2tlciwgc2libGluZ3MsIG50aCk7CiB9CiAKIHN0YXRpYyBib29sIHZh
bGlkYXRlU3ViU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNlbGVjdG9yUXVlcnkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnRTZWxlY3RvclF1ZXJ5LmgKaW5kZXggOTRmYTNlZi4u
MmM3MTBhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudFNl
bGVjdG9yUXVlcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50U2Vs
ZWN0b3JRdWVyeS5oCkBAIC00MywyNSArNDMsNDEgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBO
b2RlOwogY2xhc3MgSW5zZXJ0aW9uUG9pbnQ7CiAKK2NsYXNzIENvbnRlbnRTZWxlY3RvckNoZWNr
ZXIgeworcHVibGljOgorICAgIENvbnRlbnRTZWxlY3RvckNoZWNrZXIoRG9jdW1lbnQqLCBib29s
IHN0cmljdFBhcnNpbmcpOworCisgICAgYm9vbCBjaGVja0NvbnRlbnRTZWxlY3RvcihDU1NTZWxl
Y3RvciosIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiYgc2libGluZ3MsIGludCBudGhOb2Rl
KSBjb25zdDsKK3ByaXZhdGU6CisgICAgU2VsZWN0b3JDaGVja2VyIG1fc2VsZWN0b3JDaGVja2Vy
OworfTsKKworY2xhc3MgQ29udGVudFNlbGVjdG9yRGF0YUxpc3QgeworcHVibGljOgorICAgIHZv
aWQgaW5pdGlhbGl6ZShjb25zdCBDU1NTZWxlY3Rvckxpc3QmKTsKKyAgICBib29sIG1hdGNoZXMo
Y29uc3QgQ29udGVudFNlbGVjdG9yQ2hlY2tlciYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Tm9kZT4g
PiYgc2libGluZ3MsIGludCBudGhOb2RlKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8
Q1NTU2VsZWN0b3IqPiBtX3NlbGVjdG9yczsKK307CisKIGNsYXNzIENvbnRlbnRTZWxlY3RvclF1
ZXJ5IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50U2VsZWN0b3JRdWVyeSk7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgQ29udGVudFNlbGVjdG9yUXVlcnkoY29uc3QgSW5zZXJ0aW9u
UG9pbnQqKTsKIAogICAgIGJvb2wgaXNWYWxpZFNlbGVjdG9yKCkgY29uc3Q7Ci0gICAgYm9vbCBt
YXRjaGVzKE5vZGUqKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXMoY29uc3QgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+JiBzaWJsaW5ncywgaW50IG50aE5vZGUpIGNvbnN0OwogcHJpdmF0ZToKICAgICBi
b29sIHZhbGlkYXRlU2VsZWN0b3JMaXN0KCk7CiAKICAgICBjb25zdCBJbnNlcnRpb25Qb2ludCog
bV9pbnNlcnRpb25Qb2ludDsKLSAgICBTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOworICAg
IENvbnRlbnRTZWxlY3RvckRhdGFMaXN0IG1fc2VsZWN0b3JzOwogICAgIENTU1NlbGVjdG9yTGlz
dCBtX3NlbGVjdG9yTGlzdDsKLSAgICBTZWxlY3RvckNoZWNrZXIgbV9zZWxlY3RvckNoZWNrZXI7
CisgICAgQ29udGVudFNlbGVjdG9yQ2hlY2tlciBtX3NlbGVjdG9yQ2hlY2tlcjsKICAgICBib29s
IG1faXNWYWxpZFNlbGVjdG9yOwogfTsKIAogfQogCi0KLQogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>165727</attachid>
            <date>2012-09-25 21:38:47 -0700</date>
            <delta_ts>2012-09-25 21:38:47 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>tmp.html</filename>
            <type>text/html</type>
            <size>672</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KCjxkaXYgaWQ9Imhvc3QxIj48c3BhbiBpZD0nZm9vJz5z
cGFuIDM8L3NwYW4+PHNwYW4+c2hvdWxkIG5vdCBiZSByZW5kZXJlZDwvc3Bhbj48L2Rpdj4KCjxz
Y3JpcHQ+CnZhciBzcjEgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChob3N0MSk7CnNyMS5pbm5lckhU
TUwgPSAnPGRpdiBpZD0iaG9zdDIiPjxzcGFuIGlkPSJ0YXJnZXQiPnNwYW4gMjwvc3Bhbj48Y29u
dGVudCBzZWxlY3Q9IiNmb28iPjwvY29udGVudD48c3Bhbj5zcGFuIDQ8L3NwYW4+PC9kaXY+JzsK
CnZhciBzcjIgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChzcjEuZ2V0RWxlbWVudEJ5SWQoJ2hvc3Qy
JykpOwpzcjIuaW5uZXJIVE1MID0gJzxzcGFuIGlkPSJ0YXJnZXQiPnNwYW4gMTwvc3Bhbj48Y29u
dGVudCBzZWxlY3Q9InNwYW4iPjwvY29udGVudD4nOwoKdmFyIHRhcmdldCA9IHNyMi5nZXRFbGVt
ZW50QnlJZCgndGFyZ2V0Jyk7CgppZiAod2luZG93LmludGVybmFscykgewogICAgZm9yICh2YXIg
bm9kZSA9IHRhcmdldDsgbm9kZTsgbm9kZSA9IGludGVybmFscy5uZXh0U2libGluZ0J5V2Fsa2Vy
KG5vZGUpKSB7CiAgICAgICAgY29uc29sZS5sb2cobm9kZSk7CiAgICAgICAgY29uc29sZS5sb2co
bm9kZS5pbm5lckhUTUwpOwogICAgfQp9Cgo8L3NjcmlwdD4KCjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167092</attachid>
            <date>2012-10-04 06:13:38 -0700</date>
            <delta_ts>2012-10-09 03:52:32 -0700</delta_ts>
            <desc>Rebase</desc>
            <filename>bug-97151-20121004221248.patch</filename>
            <type>text/plain</type>
            <size>8314</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2YxNTgyNTE5OTU1N2M2
NmM0NzFmMzU1YTEyZTM2OWFkYzAzZjY2NC4uYzBmYzc5ZGZlYWNmMmYyN2E1YzFjMTczOTdhYTIz
YTFmMjQ1ZGM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxIEBACiAyMDEyLTEwLTA0ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBVcGRhdGUgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyIGZvciBTaGFkb3cgRE9NIHJlLXByb2plY3Rpb24uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzE1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXNvbHZlUmVwcm9qZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudCk6
CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZSk6CisKKzIwMTItMTAtMDQg
IEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIE1ha2UgQ29udGVu
dFNlbGVjdG9yUXVlcnkgd29yayB3aGVuIGEgbm9kZSBQT09MIGlzIHVzZWQgaW5zdGVhZCBvZiBu
b2RlJ3MgcmVhbCBzaWJsaW5ncy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk2OTkwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlci5jcHAKaW5kZXggZDNhNTRmODg3YTg1ZmQwNTc1ZDM3MDJjODExN2UyYmJh
MDJhZDZhNi4uNWFlNjA3YjJmMGQ4NDhkYTUwYTU2ZjdjNjMyMzgyOTkzYzU0ZTVjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTIz
Nyw2ICsyMzcsMjEgQEAgdm9pZCBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OnBhcmVudCgpCiAg
ICAgYXNzZXJ0UG9zdGNvbmRpdGlvbigpOwogfQogCitzdGF0aWMgaW5saW5lIEluc2VydGlvblBv
aW50KiByZXNvbHZlUmVwcm9qZWN0aW9uKGNvbnN0IE5vZGUqIG5vZGUpCit7CisgICAgSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gMDsKKyAgICBjb25zdCBOb2RlKiBjdXJyZW50ID0g
bm9kZTsKKyAgICB3aGlsZSAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQo
Y3VycmVudCkpIHsKKyAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKKyAgICAg
ICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRlZFRvID0gc2hhZG93LT5pbnNlcnRpb25Qb2lu
dEZvcihub2RlKSkgeworICAgICAgICAgICAgY3VycmVudCA9IGluc2VydGVkVG87CisgICAgICAg
ICAgICBpbnNlcnRpb25Qb2ludCA9IGluc2VydGVkVG87CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKK30KKwogLy8g
RklYTUU6IFVzZSBhbiBpdGVyYXRpdmUgYWxnb3JpdGhtIHNvIHRoYXQgaXQgY2FuIGJlIGlubGlu
ZWQuCiAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0MTUKIE5v
ZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQoY29uc3QgTm9kZSog
bm9kZSwgUGFyZW50VHJhdmVyc2FsRGV0YWlscyogZGV0YWlscykgY29uc3QKQEAgLTI0NSwxNyAr
MjYwLDEwIEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQo
Y29uc3QgTm9kZSogbm9kZSwgUGFyZW50VHJhdmVyc2FsCiAgICAgICAgIEFTU0VSVCh0b1NoYWRv
d1Jvb3Qobm9kZSktPmlzWW91bmdlc3QoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAg
ICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobm9kZSkpIHsKLSAg
ICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKLSAgICAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkp
IHsKLSAgICAgICAgICAgIGlmIChkZXRhaWxzKQotICAgICAgICAgICAgICAgIGRldGFpbHMtPmRp
ZFRyYXZlcnNlSW5zZXJ0aW9uUG9pbnQoaW5zZXJ0aW9uUG9pbnQpOwotICAgICAgICAgICAgcmV0
dXJuIHRyYXZlcnNlUGFyZW50KGluc2VydGlvblBvaW50LCBkZXRhaWxzKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIFRoZSBub2RlIGlzIGEgbm9uLWRpc3RyaWJ1dGVkIGxpZ2h0IGNoaWxkIG9y
IG9sZGVyIHNoYWRvdydzIGNoaWxkLgorICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9u
UG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUpKSB7CiAgICAgICAgIGlmIChkZXRhaWxz
KQotICAgICAgICAgICAgZGV0YWlscy0+Y2hpbGRXYXNPdXRPZkNvbXBvc2l0aW9uKCk7CisgICAg
ICAgICAgICBkZXRhaWxzLT5kaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KGluc2VydGlvblBvaW50
KTsKKyAgICAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KGluc2VydGlvblBvaW50LCBkZXRhaWxz
KTsKICAgICB9CiAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50SW5DdXJyZW50VHJlZShub2RlLCBk
ZXRhaWxzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRl
bnREaXN0cmlidXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlz
dHJpYnV0b3IuY3BwCmluZGV4IDY3NDhiNTk5MWRiNjdmYmIzNWRlYzc5ZjM1MzQ4NmE0ZGJkN2Rl
YWEuLjgzNjM2MzhmMzg4MGZhMGRjMjc1MzdjZjVjYWU3NmM4NGUxZWM0NjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcApAQCAtNTcs
OCArNTcsMjQgQEAgdm9pZCBDb250ZW50RGlzdHJpYnV0b3I6OmRpc3RyaWJ1dGUoRWxlbWVudCog
aG9zdCkKICAgICBtX3ZhbGlkaXR5ID0gVmFsaWQ7CiAKICAgICBDb250ZW50RGlzdHJpYnV0aW9u
IHBvb2w7Ci0gICAgZm9yIChOb2RlKiBub2RlID0gaG9zdC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBu
b2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7CisK
KyAgICBmb3IgKE5vZGUqIG5vZGUgPSBob3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBu
b2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghaXNJbnNlcnRpb25Qb2ludChub2Rl
KSkgeworICAgICAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7CisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgfQorCisgICAgICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9
IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7CisgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAiaW5z
ZXJ0aW9uUG9pbnQoJXApID0gJWRcbiIsIGluc2VydGlvblBvaW50LCAoaW50KWluc2VydGlvblBv
aW50LT5zaXplKCkpOworICAgICAgICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmhhc0Rpc3RyaWJ1dGlv
bigpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc2VydGlvblBvaW50
LT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgICAgICBwb29sLmFwcGVuZChpbnNlcnRpb25Qb2lu
dC0+YXQoaSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChOb2RlKiBmYWxs
YmFja05vZGUgPSBpbnNlcnRpb25Qb2ludC0+Zmlyc3RDaGlsZCgpOyBmYWxsYmFja05vZGU7IGZh
bGxiYWNrTm9kZSA9IGZhbGxiYWNrTm9kZS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgICAgICAg
ICBwb29sLmFwcGVuZChmYWxsYmFja05vZGUpOworICAgICAgICB9CisgICAgfQorCiAgICAgVmVj
dG9yPGJvb2w+IGRpc3RyaWJ1dGVkKHBvb2wuc2l6ZSgpKTsKICAgICBkaXN0cmlidXRlZC5maWxs
KGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDJkNDk3MDA1MTFkMmI4MzI5ZmIwZmZlMzA3MmE0Y2QzYWY2YWUx
OWUuLmIzNGU3YzY5ZWUyOWNlZDE4YWY0ZGY3NThjYzJlMDMwNmMzOTY0YWYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0xMC0wNCAgSGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgVXBkYXRlIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBmb3IgU2hhZG93IERP
TSByZS1wcm9qZWN0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTcxNTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJl
ZS13YWxrZXIuaHRtbDoKKwogMjAxMi0xMC0wMyAgRG91Z2xhcyBTdG9ja3dlbGwgIDxkc3RvY2t3
ZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDaHJvbWl1bSBuZWVkcyBzdXBwb3J0IGZvciBi
b3JkZXIgcmFkaXVzIGNsaXBwaW5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItZXhwZWN0ZWQu
dHh0CmluZGV4IDJhMjAxYTZjNmNhNDAyNjFiYjU2NjRlMzliYWY4ZDg3ODI4YTM0YWMuLmEwY2M5
N2U4N2E3N2FkMThkMTBiYzJiYWE1M2NkYjg3MWJlMjJjYzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJl
ZS13YWxrZXItZXhwZWN0ZWQudHh0CkBAIC0yNDcsOCArMjQ3LDYgQEAgVGVzdCBmb3IgbmVzdGVk
IGluc2VydGlvbiBwb2ludHMuIFNvbWUgb2YgdGhlbSBhcmUgZWl0aGVyIGVtcHR5IGluc2VydGlv
biBwb2ludHMKIENvbXBvc2VkIFNoYWRvdyBUcmVlOgogRElWCSBpZD1hCiAJRElWCSBpZD1iCi0J
CUNPTlRFTlQJIGlkPWluYWN0aXZlLWluc2VydGlvbi1wb2ludCBjbGFzcz1zZWxlY3QtNAotCQlE
SVYJIGlkPWYgY2xhc3M9c2VsZWN0LTQKIAkJRElWCSBpZD1jCiAJCURJVgkgaWQ9ZCBjbGFzcz1z
ZWxlY3QtMgogCQlESVYJIGlkPWUgY2xhc3M9c2VsZWN0LTIKQEAgLTI1Niw4ICsyNTQsNiBAQCBE
SVYJIGlkPWEKIFRyYXZlcnNlIGluIGZvcndhcmQuCiBESVYJIGlkPWEKIERJVgkgaWQ9YgotQ09O
VEVOVAkgaWQ9aW5hY3RpdmUtaW5zZXJ0aW9uLXBvaW50IGNsYXNzPXNlbGVjdC00Ci1ESVYJIGlk
PWYgY2xhc3M9c2VsZWN0LTQKIERJVgkgaWQ9YwogRElWCSBpZD1kIGNsYXNzPXNlbGVjdC0yCiBE
SVYJIGlkPWUgY2xhc3M9c2VsZWN0LTIKQEAgLTI2NSw4ICsyNjEsMjcgQEAgVHJhdmVyc2UgaW4g
YmFja3dhcmQuCiBESVYJIGlkPWUgY2xhc3M9c2VsZWN0LTIKIERJVgkgaWQ9ZCBjbGFzcz1zZWxl
Y3QtMgogRElWCSBpZD1jCi1ESVYJIGlkPWYgY2xhc3M9c2VsZWN0LTQKLUNPTlRFTlQJIGlkPWlu
YWN0aXZlLWluc2VydGlvbi1wb2ludCBjbGFzcz1zZWxlY3QtNAorRElWCSBpZD1iCitESVYJIGlk
PWEKKworVGVzdCBmb3IgcmUtcHJvamVjdGlvbi4KK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElW
CSBpZD1hCisJRElWCSBpZD1iCisJCURJVgkgaWQ9ZSBjbGFzcz1mb28KKwkJRElWCSBpZD1kIGNs
YXNzPWZvbworCQlESVYJIGlkPWMKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQor
RElWCSBpZD1iCitESVYJIGlkPWUgY2xhc3M9Zm9vCitESVYJIGlkPWQgY2xhc3M9Zm9vCitESVYJ
IGlkPWMKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1jCitESVYJIGlkPWQgY2xhc3M9
Zm9vCitESVYJIGlkPWUgY2xhc3M9Zm9vCiBESVYJIGlkPWIKIERJVgkgaWQ9YQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fs
a2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRy
ZWUtd2Fsa2VyLmh0bWwKaW5kZXggZDFjMmQ5YmJhZDczYTgzNDJkYjY5YWM0YTdkZTdhZGI1MjZj
OTIwMi4uOTA2ZjQ3YzhkYzM3NzFlNjg4YWZlM2E3NjdiOGI2MDQzNDc4NmI3ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtl
ci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ct
dHJlZS13YWxrZXIuaHRtbApAQCAtMjI4LDYgKzIyOCwyNyBAQCB0ZXN0Q29tcG9zZWRTaGFkb3dU
cmVlKAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ2luYWN0aXZl
LWluc2VydGlvbi1wb2ludCcsICdjbGFzcyc6ICdzZWxlY3QtNCd9KSwKICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ3Nob3VsZC1ub3QtYmUtc2VsZWN0ZWQnfSksCiAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJywgJ2NsYXNzJzogJ3NlbGVjdC00
J30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciByZS1wcm9qZWN0aW9uLicpOwordGVzdENvbXBvc2Vk
U2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ2InfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dS
b290KGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYyd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50
JywgeydzZWxlY3QnOiAnLmZvbyd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnZCcsICdjbGFzcyc6ICdmb28nfSkpKSwKKyAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnLCAnY2xhc3MnOiAnZm9vJ30pKSk7CisKK2Rl
YnVnKCdUZXN0IGZvciByZS1wcm9qZWN0aW9uIDIuJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVl
KAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
c2hhZG93LXJvb3QtY2hpbGQtMSd9KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29u
dGVudCcsIHsnc2VsZWN0JzogJyNob3N0LWNoaWxkLTEnfSksCisgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnc2hhZG93LXJvb3QtY2hpbGQtMid9KSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNoaWxkLTEnLCAnY2xhc3MnOiAn
Zm9vJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGls
ZC0yJywgJ2NsYXNzJzogJ2Zvbyd9KSkpOwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167726</attachid>
            <date>2012-10-09 03:52:37 -0700</date>
            <delta_ts>2012-10-09 20:34:13 -0700</delta_ts>
            <desc>WIP. We have to update an event re-targeting algorithm for re-projection.</desc>
            <filename>bug-97151-20121009195138.patch</filename>
            <type>text/plain</type>
            <size>18231</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJmYTI0MWFkODdiNDY1
Yjk4NDU4NTEzZWRjMTk1ZDJlYjU1MzE4OS4uOWI2MDg0ZDBmYzg3NTQ3Y2Q4NjMzZDczY2Y3YWYz
ZmY4ODYwYzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTEwLTA0ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBVcGRhdGUgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyIGZvciBTaGFkb3cgRE9NIHJlLXByb2plY3Rpb24uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzE1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXNvbHZlUmVwcm9qZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdP
ckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRT
aGFkb3dUcmVlUGFyZW50V2Fsa2VyOjpDb21wb3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlUGFyZW50V2Fsa2VyOjpwYXJlbnRJ
bmNsdWRpbmdJbnNlcnRpb25Qb2ludEFuZFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKENvbXBvc2VkU2hhZG93VHJlZVBhcmVu
dFdhbGtlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZSk6CisKKzIw
MTItMTAtMDQgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIE1h
a2UgQ29udGVudFNlbGVjdG9yUXVlcnkgd29yayB3aGVuIGEgbm9kZSBQT09MIGlzIHVzZWQgaW5z
dGVhZCBvZiBub2RlJ3MgcmVhbCBzaWJsaW5ncy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2OTkwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKaW5kZXggZDNhNTRmODg3YTg1ZmQwNTc1ZDM3MDJj
ODExN2UyYmJhMDJhZDZhNi4uYzQyYTcxM2UyODQ5MjExZGNiNzM3MzE0ZWNkYTRhNjExNGFkOWE3
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHAKQEAgLTUxLDYgKzUxLDIxIEBAIHN0YXRpYyBpbmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93
T2ZQYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGlu
bGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBub2Rl
KQoreworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3Qg
Tm9kZSogY3VycmVudCA9IG5vZGU7CisgICAgd2hpbGUgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9
IHNoYWRvd09mUGFyZW50KGN1cnJlbnQpKSB7CisgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJp
YnV0aW9uKCk7CisgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRv
dy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpIHsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNl
cnRlZFRvOworICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gaW5zZXJ0aW9u
UG9pbnQ7Cit9CisKIGlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50
VHJhdmVyc2FsRGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgaWYgKCFtX2luc2VydGlvblBvaW50KQpAQCAtMTc5
LDcgKzE5NCw4IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJs
aW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlCiAgICAgRWxlbWVudFNoYWRvdyog
c2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobm9kZSk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAg
IHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0g
ICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5pbnNlcnRpb25Qb2lu
dEZvcihub2RlKTsKKyAgICAvLyBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFk
b3ctPmluc2VydGlvblBvaW50Rm9yKG5vZGUpOworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rpb24obm9kZSk7CiAgICAgaWYgKCFpbnNlcnRpb25Q
b2ludCkKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwg
ZGlyZWN0aW9uKTsKIApAQCAtMjQ3LDEyICsyNjMsMTEgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJz
YWwKICAgICB9CiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50
KG5vZGUpKSB7CiAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci0gICAgICAg
IGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3ctPmluc2VydGlvblBv
aW50Rm9yKG5vZGUpKSB7CisgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUpKSB7CiAgICAgICAgICAgICBpZiAoZGV0YWls
cykKICAgICAgICAgICAgICAgICBkZXRhaWxzLT5kaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KGlu
c2VydGlvblBvaW50KTsKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChpbnNlcnRp
b25Qb2ludCwgZGV0YWlscyk7CiAgICAgICAgIH0KLQogICAgICAgICAvLyBUaGUgbm9kZSBpcyBh
IG5vbi1kaXN0cmlidXRlZCBsaWdodCBjaGlsZCBvciBvbGRlciBzaGFkb3cncyBjaGlsZC4KICAg
ICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAgICBkZXRhaWxzLT5jaGlsZFdhc091dE9mQ29t
cG9zaXRpb24oKTsKQEAgLTMzMSwxOSArMzQ2LDQzIEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjpwcmV2aW91cygpCiAKIENvbXBvc2VkU2hhZG93VHJlZVBhcmVudFdhbGtlcjo6Q29t
cG9zZWRTaGFkb3dUcmVlUGFyZW50V2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgOiBtX25v
ZGUobm9kZSkKKyAgICAsIG1fZGlzdHJpYnV0ZWROb2RlKG5vZGUpCiB7CisgICAgQVNTRVJUKG5v
ZGUpOwogfQogCiB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVBhcmVudFdhbGtlcjo6cGFyZW50SW5j
bHVkaW5nSW5zZXJ0aW9uUG9pbnRBbmRTaGFkb3dSb290KCkKIHsKICAgICBBU1NFUlQobV9ub2Rl
KTsKLSAgICBtX25vZGUgPSB0cmF2ZXJzZVBhcmVudEluY2x1ZGluZ0luc2VydGlvblBvaW50QW5k
U2hhZG93Um9vdChtX25vZGUpOworICAgIEFTU0VSVChtX2Rpc3RyaWJ1dGVkTm9kZSk7CisKKyAg
ICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobV9ub2RlKSkgewor
ICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5pbnNl
cnRpb25Qb2ludEZvcihtX2Rpc3RyaWJ1dGVkTm9kZSkpIHsKKyAgICAgICAgICAgIG1fbm9kZSA9
IGluc2VydGlvblBvaW50OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQor
ICAgIGlmICghbV9ub2RlLT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBtX25vZGUgPSBtX25v
ZGUtPnBhcmVudE5vZGUoKTsKKyAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBTaGFkb3dSb290KiBzaGFkb3dSb290
ID0gdG9TaGFkb3dSb290KG1fbm9kZSk7CisgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKSkgeworICAgICAgICBtX25vZGUgPSBp
bnNlcnRpb25Qb2ludDsKKyAgICAgICAgLy8gbV9kaXN0cmlidXRlZE5vZGUgPSBpbnNlcnRpb25Q
b2ludAorICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fbm9kZSA9IHNoYWRvd1Jvb3QtPmhv
c3QoKTsKKyAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsKIH0KIAotTm9kZSogQ29tcG9z
ZWRTaGFkb3dUcmVlUGFyZW50V2Fsa2VyOjp0cmF2ZXJzZVBhcmVudEluY2x1ZGluZ0luc2VydGlv
blBvaW50QW5kU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlKSBjb25zdAorLyoKK05vZGUqIENv
bXBvc2VkU2hhZG93VHJlZVBhcmVudFdhbGtlcjo6dHJhdmVyc2VQYXJlbnRJbmNsdWRpbmdJbnNl
cnRpb25Qb2ludEFuZFNoYWRvd1Jvb3QoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgTm9kZSogc3Rh
cnRpbmdOb2RlKQogewogICAgIGlmIChFbGVtZW50U2hhZG93KiBzaGFkb3cgPSBzaGFkb3dPZlBh
cmVudChub2RlKSkgewotICAgICAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
ID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKSkKKyAgICAgICAgaWYgKEluc2VydGlv
blBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Ioc3RhcnRp
bmdOb2RlKSkKICAgICAgICAgICAgIHJldHVybiBpbnNlcnRpb25Qb2ludDsKICAgICB9CiAgICAg
aWYgKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSkKQEAgLTM1Myw1ICszOTIsNiBAQCBOb2RlKiBDb21w
b3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXI6OnRyYXZlcnNlUGFyZW50SW5jbHVkaW5nSW5zZXJ0
aW9uUG9pbnRBbmRTaAogICAgICAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7CiAgICAgcmV0dXJu
IHNoYWRvd1Jvb3QtPmhvc3QoKTsKIH0KKyovCiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKaW5kZXggYTBkYzJmNjA0ZDlk
NWJlYzcxM2I0MzlhNjFhNGNhNTU1YWM5NmU2Mi4uMmYxN2EyY2NlMzNiOTkyOTUyODdjOGY4NjNh
N2Y2ZDgxMjYzMTc1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hh
ZG93VHJlZVdhbGtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1Ry
ZWVXYWxrZXIuaApAQCAtMTcyLDggKzE3Miw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhcmVudElu
Y2x1ZGluZ0luc2VydGlvblBvaW50QW5kU2hhZG93Um9vdCgpOwogICAgIE5vZGUqIGdldCgpIGNv
bnN0IHsgcmV0dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KG1fbm9kZSk7IH0KIHByaXZhdGU6Ci0gICAg
Tm9kZSogdHJhdmVyc2VQYXJlbnRJbmNsdWRpbmdJbnNlcnRpb25Qb2ludEFuZFNoYWRvd1Jvb3Qo
Y29uc3QgTm9kZSopIGNvbnN0OworICAgIHN0YXRpYyBOb2RlKiB0cmF2ZXJzZVBhcmVudEluY2x1
ZGluZ0luc2VydGlvblBvaW50QW5kU2hhZG93Um9vdChjb25zdCBOb2RlKiBub2RlLCBjb25zdCBO
b2RlKiBOb2RlKTsKICAgICBjb25zdCBOb2RlKiBtX25vZGU7CisgICAgY29uc3QgTm9kZSogbV9k
aXN0cmlidXRlZE5vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggNjc0OGI1OTkxZGI2
N2ZiYjM1ZGVjNzlmMzUzNDg2YTRkYmQ3ZGVhYS4uODM2MzYzOGYzODgwZmEwZGMyNzUzN2NmNWNh
ZTc2Yzg0ZTFlYzQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29u
dGVudERpc3RyaWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250
ZW50RGlzdHJpYnV0b3IuY3BwCkBAIC01Nyw4ICs1NywyNCBAQCB2b2lkIENvbnRlbnREaXN0cmli
dXRvcjo6ZGlzdHJpYnV0ZShFbGVtZW50KiBob3N0KQogICAgIG1fdmFsaWRpdHkgPSBWYWxpZDsK
IAogICAgIENvbnRlbnREaXN0cmlidXRpb24gcG9vbDsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBo
b3N0LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQotICAg
ICAgICBwb29sLmFwcGVuZChub2RlKTsKKworICAgIGZvciAoTm9kZSogbm9kZSA9IGhvc3QtPmZp
cnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
aWYgKCFpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgICAgICBwb29sLmFwcGVuZChu
b2RlKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgSW5zZXJ0
aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gdG9JbnNlcnRpb25Qb2ludChub2RlKTsKKyAgICAg
ICAgLy8gZnByaW50ZihzdGRlcnIsICJpbnNlcnRpb25Qb2ludCglcCkgPSAlZFxuIiwgaW5zZXJ0
aW9uUG9pbnQsIChpbnQpaW5zZXJ0aW9uUG9pbnQtPnNpemUoKSk7CisgICAgICAgIGlmIChpbnNl
cnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnQtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAg
IHBvb2wuYXBwZW5kKGluc2VydGlvblBvaW50LT5hdChpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9IGluc2VydGlvblBvaW50LT5maXJz
dENoaWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tOb2RlLT5uZXh0
U2libGluZygpKQorICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGZhbGxiYWNrTm9kZSk7Cisg
ICAgICAgIH0KKyAgICB9CisKICAgICBWZWN0b3I8Ym9vbD4gZGlzdHJpYnV0ZWQocG9vbC5zaXpl
KCkpOwogICAgIGRpc3RyaWJ1dGVkLmZpbGwoZmFsc2UpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjJlMjdkNjQ3NWFj
OTM1Nzg2NjU1NzhiMjEyYzc4MzBjMjBjNjU5Mi4uMTJkNjZlNjI3MDllNzhmNDc2YTg4ZjA1Yjk4
OWMzZGEwNTIzMDliOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTEwLTA0ICBIYXlhdG8g
SXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBVcGRhdGUgQ29tcG9zZWRTaGFk
b3dUcmVlV2Fsa2VyIGZvciBTaGFkb3cgRE9NIHJlLXByb2plY3Rpb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzE1MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2NvbXBv
c2VkLXNoYWRvdy10cmVlLXdhbGtlci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sOgorICAgICAgICAqIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZG9tLWV2ZW50LWRpc3BhdGNoaW5nLmh0bWw6CisKIDIwMTItMTAt
MDQgIFJpayBDYWJhbmllciAgPGNhYmFuaWVyQGFkb2JlLmNvbT4KIAogICAgICAgICBUdXJuIENv
bXBvc2l0aW5nIG9uIGJ5IGRlZmF1bHQgaW4gV2ViS2l0IGJ1aWxkCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJl
ZS13YWxrZXItZXhwZWN0ZWQudHh0CmluZGV4IDJhMjAxYTZjNmNhNDAyNjFiYjU2NjRlMzliYWY4
ZDg3ODI4YTM0YWMuLjllOGJmNTM2ZjQxNzBmYWVmOGI5ZTQwZWJiMTM3MTIzNDFmODA0ODUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJl
ZS13YWxrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9j
b21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXItZXhwZWN0ZWQudHh0CkBAIC0yNDcsOCArMjQ3LDYg
QEAgVGVzdCBmb3IgbmVzdGVkIGluc2VydGlvbiBwb2ludHMuIFNvbWUgb2YgdGhlbSBhcmUgZWl0
aGVyIGVtcHR5IGluc2VydGlvbiBwb2ludHMKIENvbXBvc2VkIFNoYWRvdyBUcmVlOgogRElWCSBp
ZD1hCiAJRElWCSBpZD1iCi0JCUNPTlRFTlQJIGlkPWluYWN0aXZlLWluc2VydGlvbi1wb2ludCBj
bGFzcz1zZWxlY3QtNAotCQlESVYJIGlkPWYgY2xhc3M9c2VsZWN0LTQKIAkJRElWCSBpZD1jCiAJ
CURJVgkgaWQ9ZCBjbGFzcz1zZWxlY3QtMgogCQlESVYJIGlkPWUgY2xhc3M9c2VsZWN0LTIKQEAg
LTI1Niw4ICsyNTQsNiBAQCBESVYJIGlkPWEKIFRyYXZlcnNlIGluIGZvcndhcmQuCiBESVYJIGlk
PWEKIERJVgkgaWQ9YgotQ09OVEVOVAkgaWQ9aW5hY3RpdmUtaW5zZXJ0aW9uLXBvaW50IGNsYXNz
PXNlbGVjdC00Ci1ESVYJIGlkPWYgY2xhc3M9c2VsZWN0LTQKIERJVgkgaWQ9YwogRElWCSBpZD1k
IGNsYXNzPXNlbGVjdC0yCiBESVYJIGlkPWUgY2xhc3M9c2VsZWN0LTIKQEAgLTI2NSwxMSArMjYx
LDEwOCBAQCBUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KIERJVgkgaWQ9ZSBjbGFzcz1zZWxlY3QtMgog
RElWCSBpZD1kIGNsYXNzPXNlbGVjdC0yCiBESVYJIGlkPWMKLURJVgkgaWQ9ZiBjbGFzcz1zZWxl
Y3QtNAotQ09OVEVOVAkgaWQ9aW5hY3RpdmUtaW5zZXJ0aW9uLXBvaW50IGNsYXNzPXNlbGVjdC00
CiBESVYJIGlkPWIKIERJVgkgaWQ9YQogCitUZXN0IGZvciByZS1wcm9qZWN0aW9uLgorQ29tcG9z
ZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwkJRElWCSBpZD1lIGNsYXNz
PWZvbworCQlESVYJIGlkPWQgY2xhc3M9Zm9vCisJCURJVgkgaWQ9YworCitUcmF2ZXJzZSBpbiBm
b3J3YXJkLgorRElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9ZSBjbGFzcz1mb28KK0RJVgkg
aWQ9ZCBjbGFzcz1mb28KK0RJVgkgaWQ9YworVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlk
PWMKK0RJVgkgaWQ9ZCBjbGFzcz1mb28KK0RJVgkgaWQ9ZSBjbGFzcz1mb28KK0RJVgkgaWQ9Ygor
RElWCSBpZD1hCisKK1Rlc3QgZm9yIHJlLXByb2plY3Rpb24gMi4KK0NvbXBvc2VkIFNoYWRvdyBU
cmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1zaGFkb3ctcm9vdC1jaGlsZC0xCisJRElWCSBpZD1o
b3N0LWNoaWxkLTEgY2xhc3M9Zm9vCisJRElWCSBpZD1zaGFkb3ctcm9vdC1jaGlsZC0yCisKK1Ry
YXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9c2hhZG93LXJvb3QtY2hpbGQt
MQorRElWCSBpZD1ob3N0LWNoaWxkLTEgY2xhc3M9Zm9vCitESVYJIGlkPXNoYWRvdy1yb290LWNo
aWxkLTIKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1zaGFkb3ctcm9vdC1jaGlsZC0y
CitESVYJIGlkPWhvc3QtY2hpbGQtMSBjbGFzcz1mb28KK0RJVgkgaWQ9c2hhZG93LXJvb3QtY2hp
bGQtMQorRElWCSBpZD1hCisKK1Rlc3QgZm9yIHJlLXByb2plY3Rpb24gMy0xLgorQ29tcG9zZWQg
U2hhZG93IFRyZWU6CitESVYJIGlkPXRvcAorCURJVgkgaWQ9QQorCQlESVYJIGlkPUIKKwkJCURJ
VgkgaWQ9RworCQkJCURJVgkgaWQ9SgorCQkJCQlESVYJIGlkPUMKKwkJCQkJCURJVgkgaWQ9RAor
CQkJCURJVgkgaWQ9TAorCQkJCQlESVYJIGlkPUUKKwkJCQkJCURJVgkgaWQ9RgorCitUcmF2ZXJz
ZSBpbiBmb3J3YXJkLgorRElWCSBpZD10b3AKK0RJVgkgaWQ9QQorRElWCSBpZD1CCitESVYJIGlk
PUcKK0RJVgkgaWQ9SgorRElWCSBpZD1DCitESVYJIGlkPUQKK0RJVgkgaWQ9TAorRElWCSBpZD1F
CitESVYJIGlkPUYKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1GCitESVYJIGlkPUUK
K0RJVgkgaWQ9TAorRElWCSBpZD1ECitESVYJIGlkPUMKK0RJVgkgaWQ9SgorRElWCSBpZD1HCitE
SVYJIGlkPUIKK0RJVgkgaWQ9QQorRElWCSBpZD10b3AKKworVGVzdCBmb3IgcmUtcHJvamVjdGlv
biAzLTIuCitDb21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9dG9wCisJRElWCSBpZD1BCisJ
CURJVgkgaWQ9QgorCQkJRElWCSBpZD1HCisJCQkJRElWCSBpZD1KCisJCQkJRElWCSBpZD1MCisK
K1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPXRvcAorRElWCSBpZD1BCitESVYJIGlkPUIK
K0RJVgkgaWQ9RworRElWCSBpZD1KCitESVYJIGlkPUwKK1RyYXZlcnNlIGluIGJhY2t3YXJkLgor
RElWCSBpZD1MCitESVYJIGlkPUoKK0RJVgkgaWQ9RworRElWCSBpZD1CCitESVYJIGlkPUEKK0RJ
VgkgaWQ9dG9wCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNo
YWRvdy10cmVlLXdhbGtlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBv
c2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sCmluZGV4IGQxYzJkOWJiYWQ3M2E4MzQyZGI2OWFj
NGE3ZGU3YWRiNTI2YzkyMDIuLjdmODgzOTFkYThhYzI0NmY4OTc3YzczODEzZjlhY2JiMzA0ZjVm
NGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFk
b3ctdHJlZS13YWxrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29t
cG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKQEAgLTIyOCw2ICsyMjgsNzQgQEAgdGVzdENv
bXBvc2VkU2hhZG93VHJlZSgKICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywgeydp
ZCc6ICdpbmFjdGl2ZS1pbnNlcnRpb24tcG9pbnQnLCAnY2xhc3MnOiAnc2VsZWN0LTQnfSksCiAg
ICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdzaG91bGQtbm90LWJlLXNlbGVj
dGVkJ30pLAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZicsICdjbGFz
cyc6ICdzZWxlY3QtNCd9KSkpOworCitkZWJ1ZygnVGVzdCBmb3IgcmUtcHJvamVjdGlvbi4nKTsK
K3Rlc3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2En
fSwKKyAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdiJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZm9vJ30p
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2MnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QnLCAnY2xhc3MnOiAnZm9vJ30pKSks
CisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdlJywgJ2NsYXNzJzogJ2Zv
byd9KSkpOworCitkZWJ1ZygnVGVzdCBmb3IgcmUtcHJvamVjdGlvbiAyLicpOwordGVzdENvbXBv
c2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAg
ICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ3NoYWRvdy1yb290LWNoaWxkLTEnfSksCisgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjaG9zdC1jaGlsZC0xJ30pLAorICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ3NoYWRvdy1yb290LWNoaWxkLTIn
fSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnaG9zdC1jaGlsZC0x
JywgJ2NsYXNzJzogJ2Zvbyd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ2hvc3QtY2hpbGQtMicsICdjbGFzcyc6ICdmb28nfSkpKTsKKworZGVidWcoJ1Rlc3QgZm9y
IHJlLXByb2plY3Rpb24gMy0xLicpOwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAndG9wJ30sCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2
JywgeydpZCc6ICdBJ30sCisgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnQid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNo
YWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnZGl2JywgeydpZCc6ICdHJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdKJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7
J2lkJzogJ04nLCAnc2VsZWN0JzogJyNDJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywg
eydpZCc6ICdLJywgJ3NlbGVjdCc6ICcjQyd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0wnfSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsn
aWQnOiAnTycsICdzZWxlY3QnOiAnI0UnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7
J2lkJzogJ00nLCAnc2VsZWN0JzogJyNFJ30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ0gnLCAn
c2VsZWN0JzogJyNDJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdJJywgJ3NlbGVjdCc6ICcjRSd9
KSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdDJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdEJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnRSd9LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnRid9
KSkpKSkpOworCitkZWJ1ZygnVGVzdCBmb3IgcmUtcHJvamVjdGlvbiAzLTIuJyk7Cit0ZXN0Q29t
cG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICd0b3AnfSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0EnfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdCJ30sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0cnfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3Qo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ0onfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnTicsICdzZWxlY3QnOiAnI0snfSkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ0snLCAnc2VsZWN0JzogJyNIJ30pKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnTCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdPJywgJ3NlbGVjdCc6ICcjTSd9KSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnTScsICdzZWxlY3QnOiAnI0knfSkpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURP
TSgnY29udGVudCcsIHsnaWQnOiAnSCcsICdzZWxlY3QnOiAnI0MnfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7
J2lkJzogJ0knLCAnc2VsZWN0JzogJyNFJ30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0MnfSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0QnfSkp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydp
ZCc6ICdFJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnZGl2JywgeydpZCc6ICdGJ30pKSkpKSk7CisKIDwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kb20tZXZl
bnQtZGlzcGF0Y2hpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
ZG9tLWV2ZW50LWRpc3BhdGNoaW5nLmh0bWwKaW5kZXggZGEyMzBjZjE2YzFlYTJlNjg4ZGMyNzEx
Nzk0YzM5NzQzMGIwYjRiMy4uZTI5NDcwYTJiNWQ5MmY4ZjgwOWQ2Y2JhZmMzNGI0N2Q0NGQwODlh
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kb20tZXZl
bnQtZGlzcGF0Y2hpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWRvbS1ldmVudC1kaXNwYXRjaGluZy5odG1sCkBAIC0xODAsMTIgKzE4MCwxMiBAQCBmdW5j
dGlvbiB0ZXN0RXZlbnRzT25OZXN0ZWRTaGFkb3dSb290cygpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdkaXYnLCB7J2lkJzogJ0onfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdOJywgJ3NlbGVjdCc6ICcjSyd9
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ0snLCAnc2VsZWN0Jzog
JyNIJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ04nLCAn
c2VsZWN0JzogJyNDJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAn
SycsICdzZWxlY3QnOiAnI0MnfSkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnTCd9LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlU2hhZG93Um9vdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
LCB7J2lkJzogJ08nLCAnc2VsZWN0JzogJyNNJ30pKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29u
dGVudCcsIHsnaWQnOiAnTScsICdzZWxlY3QnOiAnI0knfSkpKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ08nLCAnc2VsZWN0JzogJyNFJ30pKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnTScsICdzZWxlY3QnOiAnI0UnfSkpKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2NvbnRlbnQnLCB7J2lkJzogJ0gnLCAnc2VsZWN0JzogJyNDJ30pLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcsIHsnaWQnOiAnSScsICdzZWxlY3QnOiAnI0UnfSkpKSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0MnfSwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167905</attachid>
            <date>2012-10-09 20:34:17 -0700</date>
            <delta_ts>2012-10-11 02:55:09 -0700</delta_ts>
            <desc>WIP. Pass all tests.</desc>
            <filename>bug-97151-20121010123317.patch</filename>
            <type>text/plain</type>
            <size>21138</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJmYTI0MWFkODdiNDY1
Yjk4NDU4NTEzZWRjMTk1ZDJlYjU1MzE4OS4uOWI2MDg0ZDBmYzg3NTQ3Y2Q4NjMzZDczY2Y3YWYz
ZmY4ODYwYzlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2IEBACiAyMDEyLTEwLTA0ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAorICAgICAgICBVcGRhdGUgQ29tcG9zZWRT
aGFkb3dUcmVlV2Fsa2VyIGZvciBTaGFkb3cgRE9NIHJlLXByb2plY3Rpb24uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzE1MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpyZXNvbHZlUmVwcm9qZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdP
ckJhY2tUb0luc2VydGlvblBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6dHJhdmVyc2VQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRT
aGFkb3dUcmVlUGFyZW50V2Fsa2VyOjpDb21wb3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcG9zZWRTaGFkb3dUcmVlUGFyZW50V2Fsa2VyOjpwYXJlbnRJ
bmNsdWRpbmdJbnNlcnRpb25Qb2ludEFuZFNoYWRvd1Jvb3QpOgorICAgICAgICAqIGRvbS9Db21w
b3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAgICAgKENvbXBvc2VkU2hhZG93VHJlZVBhcmVu
dFdhbGtlcik6CisgICAgICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZSk6CisKKzIw
MTItMTAtMDQgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIE1h
a2UgQ29udGVudFNlbGVjdG9yUXVlcnkgd29yayB3aGVuIGEgbm9kZSBQT09MIGlzIHVzZWQgaW5z
dGVhZCBvZiBub2RlJ3MgcmVhbCBzaWJsaW5ncy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2OTkwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKaW5kZXggZDNhNTRmODg3YTg1ZmQwNTc1ZDM3MDJj
ODExN2UyYmJhMDJhZDZhNi4uNmMwMWZiOGE2Y2Y1NWJmZDIyMTM3MGU3NzdlYTBiNTY2NjA1OTYw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5j
cHAKQEAgLTUxLDYgKzUxLDIxIEBAIHN0YXRpYyBpbmxpbmUgRWxlbWVudFNoYWRvdyogc2hhZG93
T2ZQYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGlu
bGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJvamVjdGlvbihjb25zdCBOb2RlKiBub2Rl
KQoreworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IDA7CisgICAgY29uc3Qg
Tm9kZSogY3VycmVudCA9IG5vZGU7CisgICAgd2hpbGUgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9
IHNoYWRvd09mUGFyZW50KGN1cnJlbnQpKSB7CisgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJp
YnV0aW9uKCk7CisgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRv
dy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpIHsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBpbnNl
cnRlZFRvOworICAgICAgICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBpbnNlcnRlZFRvOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gaW5zZXJ0aW9u
UG9pbnQ7Cit9CisKIGlubGluZSB2b2lkIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6UGFyZW50
VHJhdmVyc2FsRGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNlcnRpb25Qb2ludChJbnNlcnRpb25Qb2lu
dCogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgaWYgKCFtX2luc2VydGlvblBvaW50KQpAQCAtMTc5
LDcgKzE5NCw4IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJs
aW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBOb2RlCiAgICAgRWxlbWVudFNoYWRvdyog
c2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobm9kZSk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAg
IHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0g
ICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93LT5pbnNlcnRpb25Qb2lu
dEZvcihub2RlKTsKKyAgICAvLyBJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFk
b3ctPmluc2VydGlvblBvaW50Rm9yKG5vZGUpOworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rpb24obm9kZSk7CiAgICAgaWYgKCFpbnNlcnRpb25Q
b2ludCkKICAgICAgICAgcmV0dXJuIHRyYXZlcnNlU2libGluZ0luQ3VycmVudFRyZWUobm9kZSwg
ZGlyZWN0aW9uKTsKIApAQCAtMjQ3LDEyICsyNjMsMTEgQEAgTm9kZSogQ29tcG9zZWRTaGFkb3dU
cmVlV2Fsa2VyOjp0cmF2ZXJzZVBhcmVudChjb25zdCBOb2RlKiBub2RlLCBQYXJlbnRUcmF2ZXJz
YWwKICAgICB9CiAgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50
KG5vZGUpKSB7CiAgICAgICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7Ci0gICAgICAg
IGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3ctPmluc2VydGlvblBv
aW50Rm9yKG5vZGUpKSB7CisgICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUpKSB7CiAgICAgICAgICAgICBpZiAoZGV0YWls
cykKICAgICAgICAgICAgICAgICBkZXRhaWxzLT5kaWRUcmF2ZXJzZUluc2VydGlvblBvaW50KGlu
c2VydGlvblBvaW50KTsKICAgICAgICAgICAgIHJldHVybiB0cmF2ZXJzZVBhcmVudChpbnNlcnRp
b25Qb2ludCwgZGV0YWlscyk7CiAgICAgICAgIH0KLQogICAgICAgICAvLyBUaGUgbm9kZSBpcyBh
IG5vbi1kaXN0cmlidXRlZCBsaWdodCBjaGlsZCBvciBvbGRlciBzaGFkb3cncyBjaGlsZC4KICAg
ICAgICAgaWYgKGRldGFpbHMpCiAgICAgICAgICAgICBkZXRhaWxzLT5jaGlsZFdhc091dE9mQ29t
cG9zaXRpb24oKTsKQEAgLTMzMSwyNyArMzQ2LDM5IEBAIHZvaWQgQ29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyOjpwcmV2aW91cygpCiAKIENvbXBvc2VkU2hhZG93VHJlZVBhcmVudFdhbGtlcjo6Q29t
cG9zZWRTaGFkb3dUcmVlUGFyZW50V2Fsa2VyKGNvbnN0IE5vZGUqIG5vZGUpCiAgICAgOiBtX25v
ZGUobm9kZSkKKyAgICAsIG1fZGlzdHJpYnV0ZWROb2RlKG5vZGUpCisgICAgLCBtX3RyYXZlcnNh
bFN0YXRlKFRyYXZlcnNpbmdQYXJlbnQpCiB7CisgICAgQVNTRVJUKG5vZGUpOwogfQogCiB2b2lk
IENvbXBvc2VkU2hhZG93VHJlZVBhcmVudFdhbGtlcjo6cGFyZW50SW5jbHVkaW5nSW5zZXJ0aW9u
UG9pbnRBbmRTaGFkb3dSb290KCkKIHsKICAgICBBU1NFUlQobV9ub2RlKTsKLSAgICBtX25vZGUg
PSB0cmF2ZXJzZVBhcmVudEluY2x1ZGluZ0luc2VydGlvblBvaW50QW5kU2hhZG93Um9vdChtX25v
ZGUpOwotfQorICAgIEFTU0VSVChtX2Rpc3RyaWJ1dGVkTm9kZSk7CisgICAgaWYgKEVsZW1lbnRT
aGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG1fbm9kZSkpIHsKKyAgICAgICAgaWYgKElu
c2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Io
bV9kaXN0cmlidXRlZE5vZGUpKSB7CisgICAgICAgICAgICBtX25vZGUgPSBpbnNlcnRpb25Qb2lu
dDsKKyAgICAgICAgICAgIG1fdHJhdmVyc2FsU3RhdGUgPSBDcm9zc2luZ0luc2VydGlvblBvaW50
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIGlmICghbV9ub2Rl
LT5pc1NoYWRvd1Jvb3QoKSkgeworICAgICAgICBtX25vZGUgPSBtX25vZGUtPnBhcmVudE5vZGUo
KTsKKyAgICAgICAgbV9kaXN0cmlidXRlZE5vZGUgPSBtX25vZGU7CisgICAgICAgIG1fdHJhdmVy
c2FsU3RhdGUgPSBUcmF2ZXJzaW5nUGFyZW50OworICAgICAgICByZXR1cm47CisgICAgfQogCi1O
b2RlKiBDb21wb3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXI6OnRyYXZlcnNlUGFyZW50SW5jbHVk
aW5nSW5zZXJ0aW9uUG9pbnRBbmRTaGFkb3dSb290KGNvbnN0IE5vZGUqIG5vZGUpIGNvbnN0Ci17
Ci0gICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG5vZGUpKSB7
Ci0gICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSBzaGFkb3ctPmlu
c2VydGlvblBvaW50Rm9yKG5vZGUpKQotICAgICAgICAgICAgcmV0dXJuIGluc2VydGlvblBvaW50
OworICAgIGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1NoYWRvd1Jvb3QobV9ub2Rl
KTsKKyAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50ID0gc2hhZG93Um9vdC0+
YXNzaWduZWRUbygpKSB7CisgICAgICAgIG1fbm9kZSA9IGluc2VydGlvblBvaW50OworICAgICAg
ICBtX3RyYXZlcnNhbFN0YXRlID0gQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludDsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICBpZiAoIW5vZGUtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1
cm4gbm9kZS0+cGFyZW50Tm9kZSgpOwotICAgIGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3Qg
PSB0b1NoYWRvd1Jvb3Qobm9kZSk7Ci0gICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Q
b2ludCA9IHNoYWRvd1Jvb3QtPmFzc2lnbmVkVG8oKSkKLSAgICAgICAgcmV0dXJuIGluc2VydGlv
blBvaW50OwotICAgIHJldHVybiBzaGFkb3dSb290LT5ob3N0KCk7CisgICAgbV9ub2RlID0gc2hh
ZG93Um9vdC0+aG9zdCgpOworICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOworICAgIG1f
dHJhdmVyc2FsU3RhdGUgPSBUcmF2ZXJzaW5nUGFyZW50OwogfQogCiB9IC8vIG5hbWVzcGFjZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCmluZGV4IGEw
ZGMyZjYwNGQ5ZDViZWM3MTNiNDM5YTYxYTRjYTU1NWFjOTZlNjIuLmJlOGNiNDI4NWI0ZmJmMmZm
ZjM0Y2EzYzNkMmUxNGJlNTEyNmMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTE3MSw5ICsxNzEsMTMgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IENvbXBvc2VkU2hhZG93VHJlZVBhcmVudFdhbGtlcihjb25zdCBOb2RlKik7CiAgICAg
dm9pZCBwYXJlbnRJbmNsdWRpbmdJbnNlcnRpb25Qb2ludEFuZFNoYWRvd1Jvb3QoKTsKICAgICBO
b2RlKiBnZXQoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PE5vZGUqPihtX25vZGUpOyB9Cisg
ICAgYm9vbCBjcm9zc2luZ0luc2VydGlvblBvaW50KCkgeyByZXR1cm4gbV90cmF2ZXJzYWxTdGF0
ZSA9PSBDcm9zc2luZ0luc2VydGlvblBvaW50OyB9CisKIHByaXZhdGU6Ci0gICAgTm9kZSogdHJh
dmVyc2VQYXJlbnRJbmNsdWRpbmdJbnNlcnRpb25Qb2ludEFuZFNoYWRvd1Jvb3QoY29uc3QgTm9k
ZSopIGNvbnN0OworICAgIGVudW0gVHJhdmVyc2FsU3RhdGUge1RyYXZlcnNpbmdQYXJlbnQsIENy
b3NzaW5nSW5zZXJ0aW9uUG9pbnR9OwogICAgIGNvbnN0IE5vZGUqIG1fbm9kZTsKKyAgICBjb25z
dCBOb2RlKiBtX2Rpc3RyaWJ1dGVkTm9kZTsKKyAgICBUcmF2ZXJzYWxTdGF0ZSBtX3RyYXZlcnNh
bFN0YXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0
Y2hlci5jcHAKaW5kZXggMzIxMGJjZWQ2NTc5OGIzZTVmNzkxMTAyNjhmYTE3ZDFiNjE1YjU2Yy4u
YTVhYTFmYWJiNjE4NTM0NjQzZTRkZDJjZTk4MzE5OGFiMzQwNGM0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTY0LDE5ICs2NCwxNyBAQCB2b2lkIEV2ZW50UmVs
YXRlZFRhcmdldEFkanVzdGVyOjphZGp1c3QoVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9y
cykKIHsKICAgICBWZWN0b3I8RXZlbnRUYXJnZXQqPiByZWxhdGVkVGFyZ2V0U3RhY2s7CiAgICAg
VHJlZVNjb3BlKiBsYXN0VHJlZVNjb3BlID0gMDsKLSAgICBOb2RlKiBsYXN0Tm9kZSA9IDA7CiAg
ICAgZm9yIChDb21wb3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXIgd2Fsa2VyKG1fcmVsYXRlZFRh
cmdldC5nZXQoKSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBhcmVudEluY2x1ZGluZ0luc2VydGlv
blBvaW50QW5kU2hhZG93Um9vdCgpKSB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSB3YWxrZXIuZ2V0
KCk7CiAgICAgICAgIGlmIChyZWxhdGVkVGFyZ2V0U3RhY2suaXNFbXB0eSgpKQogICAgICAgICAg
ICAgcmVsYXRlZFRhcmdldFN0YWNrLmFwcGVuZChub2RlKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJ
bnNlcnRpb25Qb2ludChub2RlKSAmJiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5jb250YWlucyhs
YXN0Tm9kZSkpCisgICAgICAgIGVsc2UgaWYgKHdhbGtlci5jcm9zc2luZ0luc2VydGlvblBvaW50
KCkpCiAgICAgICAgICAgICByZWxhdGVkVGFyZ2V0U3RhY2suYXBwZW5kKHJlbGF0ZWRUYXJnZXRT
dGFjay5sYXN0KCkpOwogICAgICAgICBUcmVlU2NvcGUqIHNjb3BlID0gbm9kZS0+dHJlZVNjb3Bl
KCk7CiAgICAgICAgIC8vIFNraXBzIGFkZGluZyBhIG5vZGUgdG8gdGhlIG1hcCBpZiB0cmVlU2Nv
cGUgZG9lcyBub3QgY2hhbmdlLiBKdXN0IGZvciB0aGUgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9u
LgogICAgICAgICBpZiAoc2NvcGUgIT0gbGFzdFRyZWVTY29wZSkKICAgICAgICAgICAgIG1fcmVs
YXRlZFRhcmdldE1hcC5hZGQoc2NvcGUsIHJlbGF0ZWRUYXJnZXRTdGFjay5sYXN0KCkpOwogICAg
ICAgICBsYXN0VHJlZVNjb3BlID0gc2NvcGU7Ci0gICAgICAgIGxhc3ROb2RlID0gbm9kZTsKICAg
ICAgICAgaWYgKG5vZGUtPmlzU2hhZG93Um9vdCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoIXJl
bGF0ZWRUYXJnZXRTdGFjay5pc0VtcHR5KCkpOwogICAgICAgICAgICAgcmVsYXRlZFRhcmdldFN0
YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTE4MywxNyArMTgxLDE1IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjplbnN1cmVFdmVudEFuY2VzdG9ycyhFdmVudCogZXZlbnQpCiAgICAgYm9vbCBpbkRvY3Vt
ZW50ID0gbV9ub2RlLT5pbkRvY3VtZW50KCk7CiAgICAgYm9vbCBpc1NWR0VsZW1lbnQgPSBtX25v
ZGUtPmlzU1ZHRWxlbWVudCgpOwogICAgIFZlY3RvcjxFdmVudFRhcmdldCo+IHRhcmdldFN0YWNr
OwotICAgIE5vZGUqIGxhc3QgPSAwOwogICAgIGZvciAoQ29tcG9zZWRTaGFkb3dUcmVlUGFyZW50
V2Fsa2VyIHdhbGtlcihtX25vZGUuZ2V0KCkpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wYXJlbnRJ
bmNsdWRpbmdJbnNlcnRpb25Qb2ludEFuZFNoYWRvd1Jvb3QoKSkgewogICAgICAgICBOb2RlKiBu
b2RlID0gd2Fsa2VyLmdldCgpOwogICAgICAgICBpZiAodGFyZ2V0U3RhY2suaXNFbXB0eSgpKQog
ICAgICAgICAgICAgdGFyZ2V0U3RhY2suYXBwZW5kKGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1Rh
cmdldFJ1bGVzKG5vZGUpKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbnNlcnRpb25Qb2ludChub2Rl
KSAmJiB0b0luc2VydGlvblBvaW50KG5vZGUpLT5jb250YWlucyhsYXN0KSkKKyAgICAgICAgZWxz
ZSBpZiAod2Fsa2VyLmNyb3NzaW5nSW5zZXJ0aW9uUG9pbnQoKSkKICAgICAgICAgICAgIHRhcmdl
dFN0YWNrLmFwcGVuZCh0YXJnZXRTdGFjay5sYXN0KCkpOwogICAgICAgICBtX2FuY2VzdG9ycy5h
cHBlbmQoRXZlbnRDb250ZXh0KG5vZGUsIGV2ZW50VGFyZ2V0UmVzcGVjdGluZ1NWR1RhcmdldFJ1
bGVzKG5vZGUpLCB0YXJnZXRTdGFjay5sYXN0KCkpKTsKICAgICAgICAgaWYgKCFpbkRvY3VtZW50
KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBsYXN0ID0gbm9kZTsKICAgICAgICAgaWYg
KCFub2RlLT5pc1NoYWRvd1Jvb3QoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBp
ZiAoZGV0ZXJtaW5lRGlzcGF0Y2hCZWhhdmlvcihldmVudCwgdG9TaGFkb3dSb290KG5vZGUpLCB0
YXJnZXRTdGFjay5sYXN0KCkpID09IFN0YXlJbnNpZGVTaGFkb3dET00pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJpYnV0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcAppbmRleCA2NzQ4YjU5
OTFkYjY3ZmJiMzVkZWM3OWYzNTM0ODZhNGRiZDdkZWFhLi44MzYzNjM4ZjM4ODBmYTBkYzI3NTM3
Y2Y1Y2FlNzZjODRlMWVjNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9Db250ZW50RGlzdHJpYnV0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L0NvbnRlbnREaXN0cmlidXRvci5jcHAKQEAgLTU3LDggKzU3LDI0IEBAIHZvaWQgQ29udGVudERp
c3RyaWJ1dG9yOjpkaXN0cmlidXRlKEVsZW1lbnQqIGhvc3QpCiAgICAgbV92YWxpZGl0eSA9IFZh
bGlkOwogCiAgICAgQ29udGVudERpc3RyaWJ1dGlvbiBwb29sOwotICAgIGZvciAoTm9kZSogbm9k
ZSA9IGhvc3QtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkp
Ci0gICAgICAgIHBvb2wuYXBwZW5kKG5vZGUpOworCisgICAgZm9yIChOb2RlKiBub2RlID0gaG9z
dC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgeworICAg
ICAgICBpZiAoIWlzSW5zZXJ0aW9uUG9pbnQobm9kZSkpIHsKKyAgICAgICAgICAgIHBvb2wuYXBw
ZW5kKG5vZGUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBJ
bnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQgPSB0b0luc2VydGlvblBvaW50KG5vZGUpOwor
ICAgICAgICAvLyBmcHJpbnRmKHN0ZGVyciwgImluc2VydGlvblBvaW50KCVwKSA9ICVkXG4iLCBp
bnNlcnRpb25Qb2ludCwgKGludClpbnNlcnRpb25Qb2ludC0+c2l6ZSgpKTsKKyAgICAgICAgaWYg
KGluc2VydGlvblBvaW50LT5oYXNEaXN0cmlidXRpb24oKSkgeworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbnNlcnRpb25Qb2ludC0+c2l6ZSgpOyArK2kpCisgICAgICAgICAg
ICAgICAgcG9vbC5hcHBlbmQoaW5zZXJ0aW9uUG9pbnQtPmF0KGkpKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIGZvciAoTm9kZSogZmFsbGJhY2tOb2RlID0gaW5zZXJ0aW9uUG9pbnQt
PmZpcnN0Q2hpbGQoKTsgZmFsbGJhY2tOb2RlOyBmYWxsYmFja05vZGUgPSBmYWxsYmFja05vZGUt
Pm5leHRTaWJsaW5nKCkpCisgICAgICAgICAgICAgICAgcG9vbC5hcHBlbmQoZmFsbGJhY2tOb2Rl
KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIFZlY3Rvcjxib29sPiBkaXN0cmlidXRlZChwb29s
LnNpemUoKSk7CiAgICAgZGlzdHJpYnV0ZWQuZmlsbChmYWxzZSk7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMmUyN2Q2
NDc1YWM5MzU3ODY2NTU3OGIyMTJjNzgzMGMyMGM2NTkyLi4xMmQ2NmU2MjcwOWU3OGY0NzZhODhm
MDViOTg5YzNkYTA1MjMwOWI4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTAtMDQgIEhh
eWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXIgZm9yIFNoYWRvdyBET00gcmUtcHJvamVjdGlvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MTUxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cv
Y29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWw6CisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1kb20tZXZlbnQtZGlzcGF0Y2hpbmcuaHRtbDoKKwogMjAx
Mi0xMC0wNCAgUmlrIENhYmFuaWVyICA8Y2FiYW5pZXJAYWRvYmUuY29tPgogCiAgICAgICAgIFR1
cm4gQ29tcG9zaXRpbmcgb24gYnkgZGVmYXVsdCBpbiBXZWJLaXQgYnVpbGQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRv
dy10cmVlLXdhbGtlci1leHBlY3RlZC50eHQKaW5kZXggMmEyMDFhNmM2Y2E0MDI2MWJiNTY2NGUz
OWJhZjhkODc4MjhhMzRhYy4uOWU4YmY1MzZmNDE3MGZhZWY4YjllNDBlYmIxMzcxMjM0MWY4MDQ4
NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRv
dy10cmVlLXdhbGtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1leHBlY3RlZC50eHQKQEAgLTI0Nyw4ICsy
NDcsNiBAQCBUZXN0IGZvciBuZXN0ZWQgaW5zZXJ0aW9uIHBvaW50cy4gU29tZSBvZiB0aGVtIGFy
ZSBlaXRoZXIgZW1wdHkgaW5zZXJ0aW9uIHBvaW50cwogQ29tcG9zZWQgU2hhZG93IFRyZWU6CiBE
SVYJIGlkPWEKIAlESVYJIGlkPWIKLQkJQ09OVEVOVAkgaWQ9aW5hY3RpdmUtaW5zZXJ0aW9uLXBv
aW50IGNsYXNzPXNlbGVjdC00Ci0JCURJVgkgaWQ9ZiBjbGFzcz1zZWxlY3QtNAogCQlESVYJIGlk
PWMKIAkJRElWCSBpZD1kIGNsYXNzPXNlbGVjdC0yCiAJCURJVgkgaWQ9ZSBjbGFzcz1zZWxlY3Qt
MgpAQCAtMjU2LDggKzI1NCw2IEBAIERJVgkgaWQ9YQogVHJhdmVyc2UgaW4gZm9yd2FyZC4KIERJ
VgkgaWQ9YQogRElWCSBpZD1iCi1DT05URU5UCSBpZD1pbmFjdGl2ZS1pbnNlcnRpb24tcG9pbnQg
Y2xhc3M9c2VsZWN0LTQKLURJVgkgaWQ9ZiBjbGFzcz1zZWxlY3QtNAogRElWCSBpZD1jCiBESVYJ
IGlkPWQgY2xhc3M9c2VsZWN0LTIKIERJVgkgaWQ9ZSBjbGFzcz1zZWxlY3QtMgpAQCAtMjY1LDEx
ICsyNjEsMTA4IEBAIFRyYXZlcnNlIGluIGJhY2t3YXJkLgogRElWCSBpZD1lIGNsYXNzPXNlbGVj
dC0yCiBESVYJIGlkPWQgY2xhc3M9c2VsZWN0LTIKIERJVgkgaWQ9YwotRElWCSBpZD1mIGNsYXNz
PXNlbGVjdC00Ci1DT05URU5UCSBpZD1pbmFjdGl2ZS1pbnNlcnRpb24tcG9pbnQgY2xhc3M9c2Vs
ZWN0LTQKIERJVgkgaWQ9YgogRElWCSBpZD1hCiAKK1Rlc3QgZm9yIHJlLXByb2plY3Rpb24uCitD
b21wb3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9YQorCURJVgkgaWQ9YgorCQlESVYJIGlkPWUg
Y2xhc3M9Zm9vCisJCURJVgkgaWQ9ZCBjbGFzcz1mb28KKwkJRElWCSBpZD1jCisKK1RyYXZlcnNl
IGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9YgorRElWCSBpZD1lIGNsYXNzPWZvbwor
RElWCSBpZD1kIGNsYXNzPWZvbworRElWCSBpZD1jCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJ
VgkgaWQ9YworRElWCSBpZD1kIGNsYXNzPWZvbworRElWCSBpZD1lIGNsYXNzPWZvbworRElWCSBp
ZD1iCitESVYJIGlkPWEKKworVGVzdCBmb3IgcmUtcHJvamVjdGlvbiAyLgorQ29tcG9zZWQgU2hh
ZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPXNoYWRvdy1yb290LWNoaWxkLTEKKwlESVYJ
IGlkPWhvc3QtY2hpbGQtMSBjbGFzcz1mb28KKwlESVYJIGlkPXNoYWRvdy1yb290LWNoaWxkLTIK
KworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9YQorRElWCSBpZD1zaGFkb3ctcm9vdC1j
aGlsZC0xCitESVYJIGlkPWhvc3QtY2hpbGQtMSBjbGFzcz1mb28KK0RJVgkgaWQ9c2hhZG93LXJv
b3QtY2hpbGQtMgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPXNoYWRvdy1yb290LWNo
aWxkLTIKK0RJVgkgaWQ9aG9zdC1jaGlsZC0xIGNsYXNzPWZvbworRElWCSBpZD1zaGFkb3ctcm9v
dC1jaGlsZC0xCitESVYJIGlkPWEKKworVGVzdCBmb3IgcmUtcHJvamVjdGlvbiAzLTEuCitDb21w
b3NlZCBTaGFkb3cgVHJlZToKK0RJVgkgaWQ9dG9wCisJRElWCSBpZD1BCisJCURJVgkgaWQ9Qgor
CQkJRElWCSBpZD1HCisJCQkJRElWCSBpZD1KCisJCQkJCURJVgkgaWQ9QworCQkJCQkJRElWCSBp
ZD1ECisJCQkJRElWCSBpZD1MCisJCQkJCURJVgkgaWQ9RQorCQkJCQkJRElWCSBpZD1GCisKK1Ry
YXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPXRvcAorRElWCSBpZD1BCitESVYJIGlkPUIKK0RJ
VgkgaWQ9RworRElWCSBpZD1KCitESVYJIGlkPUMKK0RJVgkgaWQ9RAorRElWCSBpZD1MCitESVYJ
IGlkPUUKK0RJVgkgaWQ9RgorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPUYKK0RJVgkg
aWQ9RQorRElWCSBpZD1MCitESVYJIGlkPUQKK0RJVgkgaWQ9QworRElWCSBpZD1KCitESVYJIGlk
PUcKK0RJVgkgaWQ9QgorRElWCSBpZD1BCitESVYJIGlkPXRvcAorCitUZXN0IGZvciByZS1wcm9q
ZWN0aW9uIDMtMi4KK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD10b3AKKwlESVYJIGlk
PUEKKwkJRElWCSBpZD1CCisJCQlESVYJIGlkPUcKKwkJCQlESVYJIGlkPUoKKwkJCQlESVYJIGlk
PUwKKworVHJhdmVyc2UgaW4gZm9yd2FyZC4KK0RJVgkgaWQ9dG9wCitESVYJIGlkPUEKK0RJVgkg
aWQ9QgorRElWCSBpZD1HCitESVYJIGlkPUoKK0RJVgkgaWQ9TAorVHJhdmVyc2UgaW4gYmFja3dh
cmQuCitESVYJIGlkPUwKK0RJVgkgaWQ9SgorRElWCSBpZD1HCitESVYJIGlkPUIKK0RJVgkgaWQ9
QQorRElWCSBpZD10b3AKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9z
ZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
Y29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKaW5kZXggZDFjMmQ5YmJhZDczYTgzNDJk
YjY5YWM0YTdkZTdhZGI1MjZjOTIwMi4uN2Y4ODM5MWRhOGFjMjQ2Zjg5NzdjNzM4MTNmOWFjYmIz
MDRmNWY0YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2NvbXBvc2Vk
LXNoYWRvdy10cmVlLXdhbGtlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbApAQCAtMjI4LDYgKzIyOCw3NCBAQCB0
ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
LCB7J2lkJzogJ2luYWN0aXZlLWluc2VydGlvbi1wb2ludCcsICdjbGFzcyc6ICdzZWxlY3QtNCd9
KSwKICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ3Nob3VsZC1ub3QtYmUt
c2VsZWN0ZWQnfSksCiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdmJywg
J2NsYXNzJzogJ3NlbGVjdC00J30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciByZS1wcm9qZWN0aW9u
LicpOwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQn
OiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5m
b28nfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnYyd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnLmZvbyd9KSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZCcsICdjbGFzcyc6ICdmb28n
fSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2UnLCAnY2xhc3Mn
OiAnZm9vJ30pKSk7CisKK2RlYnVnKCdUZXN0IGZvciByZS1wcm9qZWN0aW9uIDIuJyk7Cit0ZXN0
Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30sCisg
ICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnc2hhZG93LXJvb3QtY2hpbGQtMSd9KSwKKyAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNob3N0LWNoaWxkLTEnfSksCisg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnc2hhZG93LXJvb3QtY2hp
bGQtMid9KSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdob3N0LWNo
aWxkLTEnLCAnY2xhc3MnOiAnZm9vJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnaG9zdC1jaGlsZC0yJywgJ2NsYXNzJzogJ2Zvbyd9KSkpOworCitkZWJ1ZygnVGVz
dCBmb3IgcmUtcHJvamVjdGlvbiAzLTEuJyk7Cit0ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICd0b3AnfSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ0EnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
ZGl2JywgeydpZCc6ICdCJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ0cnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzog
J0onfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcsIHsnaWQnOiAnTicsICdzZWxlY3QnOiAnI0MnfSkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnLCB7J2lkJzogJ0snLCAnc2VsZWN0JzogJyNDJ30pKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
TCd9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50
JywgeydpZCc6ICdPJywgJ3NlbGVjdCc6ICcjRSd9KSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcsIHsnaWQnOiAnTScsICdzZWxlY3QnOiAnI0UnfSkpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAn
SCcsICdzZWxlY3QnOiAnI0MnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ0knLCAnc2VsZWN0Jzog
JyNFJ30pKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdk
aXYnLCB7J2lkJzogJ0MnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0QnfSkpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdFJ30sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6
ICdGJ30pKSkpKSk7CisKK2RlYnVnKCdUZXN0IGZvciByZS1wcm9qZWN0aW9uIDMtMi4nKTsKK3Rl
c3RDb21wb3NlZFNoYWRvd1RyZWUoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ3RvcCd9
LAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnQSd9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0InfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnRyd9LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93
Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnSid9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdOJywgJ3NlbGVjdCc6ICcjSyd9
KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnSycsICdzZWxlY3QnOiAnI0gn
fSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdMJ30sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ08nLCAnc2VsZWN0JzogJyNNJ30p
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdNJywgJ3NlbGVjdCc6ICcjSSd9
KSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdIJywgJ3NlbGVjdCc6ICcjQyd9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVu
dCcsIHsnaWQnOiAnSScsICdzZWxlY3QnOiAnI0UnfSkpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnQyd9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
RCd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYn
LCB7J2lkJzogJ0UnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0YnfSkpKSkpKTsKKwogPC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRv
bS1ldmVudC1kaXNwYXRjaGluZy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1kb20tZXZlbnQtZGlzcGF0Y2hpbmcuaHRtbAppbmRleCBkYTIzMGNmMTZjMWVhMmU2ODhk
YzI3MTE3OTRjMzk3NDMwYjBiNGIzLi4wMDExZDA5M2NmNDBjOTkwZmJlZTY0ZDY2M2NjZDdkZTk1
MWI5YmE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWRv
bS1ldmVudC1kaXNwYXRjaGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctZG9tLWV2ZW50LWRpc3BhdGNoaW5nLmh0bWwKQEAgLTE4MCwxMiArMTgwLDEyIEBA
IGZ1bmN0aW9uIHRlc3RFdmVudHNPbk5lc3RlZFNoYWRvd1Jvb3RzKCkKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2RpdicsIHsnaWQnOiAnSid9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ04nLCAnc2VsZWN0Jzog
JyNLJ30pKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnSycsICdzZWxl
Y3QnOiAnI0gnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAn
TicsICdzZWxlY3QnOiAnI0MnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywgeydp
ZCc6ICdLJywgJ3NlbGVjdCc6ICcjQyd9KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdMJ30s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29u
dGVudCcsIHsnaWQnOiAnTycsICdzZWxlY3QnOiAnI00nfSkpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdjb250ZW50JywgeydpZCc6ICdNJywgJ3NlbGVjdCc6ICcjSSd9KSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnTycsICdzZWxlY3QnOiAnI0UnfSkpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdNJywgJ3NlbGVjdCc6ICcjRSd9KSkp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnSCcsICdzZWxlY3QnOiAnI0MnfSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdj
b250ZW50JywgeydpZCc6ICdJJywgJ3NlbGVjdCc6ICcjRSd9KSkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnQyd9LApAQCAt
MjAxLDYgKzIwMSw3IEBAIGZ1bmN0aW9uIHRlc3RFdmVudHNPbk5lc3RlZFNoYWRvd1Jvb3RzKCkK
ICAgICBnZXROb2RlSW5TaGFkb3dUcmVlU3RhY2soJ0IvRy9MLycpLmlkID0gJ3NoYWRvdy1yb290
LUwnOwogICAgIHNob3dTYW5kYm94VHJlZSgpOwogCisgICAgd2luZG93LmludGVybmFscy5hZGRy
ZXNzKGRvY3VtZW50KTsKICAgICBtb3ZlTW91c2UoJ0YnLCAnRCcpOwogICAgIG1vdmVNb3VzZSgn
Qi9HL0wnLCAnRCcpOwogICAgIG1vdmVNb3VzZSgnQi9HL0wnLCAnQi9HL0onKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168182</attachid>
            <date>2012-10-11 02:54:08 -0700</date>
            <delta_ts>2012-10-11 09:24:55 -0700</delta_ts>
            <desc>ready for reivew, but the patch still depends on https://bugs.webkit.org/show_bug.cgi?id=96990.</desc>
            <filename>bug-97151-20121011185306.patch</filename>
            <type>text/plain</type>
            <size>34289</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzJmYTI0MWFkODdiNDY1
Yjk4NDU4NTEzZWRjMTk1ZDJlYjU1MzE4OS4uMWEwMmQ2ZGFiODQ5MGE0YWY0MDM4NGJkZWUxMTFi
ZTcxNmUzMzU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEyLTEwLTExICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IHJlLXByb2pl
Y3Rpb24gZm9yIFNoYWRvdyBET00uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NzE1MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSBub2RlIGRpc3RyaWJ1dGlvbiBhbGdvcml0aG0gc28gdGhhdCBu
b2RlcyBjYW4gYmUgcmUtcHJvamVjdGVkIHRvIGluc2VydGlvbiBwb2ludHMKKyAgICAgICAgaW4g
bmVzdGVkIHNoYWRvdyBzdWJ0cmVlLgorCisgICAgICAgIFNlZSB0aGUgbGF0ZXN0IFNoYWRvdyBE
T00gc3BlYyBmb3Igd2hhdCAncmUtcHJvamVjdGVkJyBtZWFuczoKKyAgICAgICAgLSBodHRwOi8v
ZHZjcy53My5vcmcvaGcvd2ViY29tcG9uZW50cy9yYXctZmlsZS90aXAvc3BlYy9zaGFkb3cvaW5k
ZXguaHRtbAorICAgICAgICBBbHNvIHNlZSB0aGUgcmVsYXRlZCBXM0MgYnVnOgorICAgICAgICAt
IGh0dHA6Ly93d3cudzMub3JnL0J1Z3MvUHVibGljL3Nob3dfYnVnLmNnaT9pZD0xODUxMworCisg
ICAgICAgIFNpbmNlIHRoaXMgY2hhbmdlIGJyZWFrcyBleGlzdGluZyBiZWhhdmlvciwgd2UgaGF2
ZSB0byB1cGRhdGUgc2V2ZXJhbCBjb2RlIGF0IG9uY2UsIHdoaWNoIGluY2x1ZGVzOgorICAgICAg
ICAtIENvbnRlbnREaXN0cmlidXRlcjogQ29udGVudERpc3RyaWJ1dG9yIG5vdyByZS1wcm9qZWN0
cyBkaXN0cmlidXRlZCBub2Rlcy4KKyAgICAgICAgLSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6
IENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBpcyBub3cgYXdhcmUgb2YgcmUtcHJvamVjdGlvbi4g
VGhhdCBjYW4KKyAgICAgICAgICByZXNvbHZlIHJlLXByb2plY3Rpb24gdHJhbnNwYXJlbnRseS4K
KyAgICAgICAgLSBBbmNlc3RvckNoYWluV2Fsa2VyIChmb3JtZXJseSBuYW1lZCBDb21wb3NlZFNo
YWRvd1RyZWVQYXJlbnRXYWxsa2VyKToKKyAgICAgICAgICBBbmNlc3RvckNoYWluV2Fsa2VyIGlz
IG5vdyBhd2FyZSBvZiByZS1wcm9qZWN0aW9uLiBJJ3ZlIGFsc28gYWRkZWQgYSBjcm9zc2luZ0lu
c2VydGlvblBvaW50KCkKKyAgICAgICAgICBtZW1iZXIgZnVuY3Rpb24gc28gdGhhdCBjbGllbnRz
IG9mIHRoZSB3YWxrZXIgY2FuIGtub3cgd2hldGhlciB0aGUgd2Fsa2VyIGlzIGp1c3QgY3Jvc3Np
bmcKKyAgICAgICAgICBpbnNlcnRpb24gcG9pbnRzIGZvciBhIHJlLXByb2plY3RlZCBub2RlLgor
ICAgICAgICAtIEV2ZW50RGlzcGF0Y2hlcjogRXZlbnREaXNwYXRjaGVyIG5vdyB1c2VzIHRoZSB1
cGRhdGVkIEFuY2VzdG9yQ2hhaW5XYWxrZXIgYW5kIGl0cworICAgICAgICAgIGNyb3NzaW5nSW5z
ZXJ0aW9uUG9pbnQoKSBzbyB0aGF0IEV2ZW50RGlzcGF0Y2hlciBjYW4gY29tcHV0ZSByZWxhdGl2
ZSB0YXJnZXQgZm9yIGVhY2ggYW5jZXN0b3IgY29ycmVjdGx5LgorCisgICAgICAgIEkndmUgYWxz
byB1cGRhdGVkIGV4aXN0aW5nIGxheW91dCB0ZXN0cyBhbmQgYWRkZWQgc29tZSBsYXlvdXQgdGVz
dHMgZm9yIHJlLXByb2plY3Rpb24uCisgICAgICAgIFJlLXByb2plY3Rpb24gZm9yIG11bHRpcGxl
IHNoYWRvdyByb290IGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiBJJ2xsIGFkZHJlc3MgdGhhdCBpbiBh
bm90aGVyIGJ1Zy4KKworICAgICAgICBUZXN0czogZmFzdC9kb20vc2hhZG93L2NvbXBvc2VkLXNo
YWRvdy10cmVlLXdhbGtlci5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWRvbS1ldmVudC1kaXNwYXRjaGluZy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9z
aGFkb3cvc2hhZG93ZG9tLXJlcHJvamVjdGlvbi0xLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3dkb20tcmVwcm9qZWN0aW9uLTIuaHRtbAorCisgICAgICAgICogZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXNvbHZl
UmVwcm9qZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyOjp0cmF2ZXJzZVNpYmxpbmdPckJhY2tUb0luc2VydGlvblBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcjo6dHJhdmVy
c2VQYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5jZXN0b3JDaGFpbldhbGtlcjo6QW5jZXN0
b3JDaGFpbldhbGtlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmNlc3RvckNoYWluV2Fsa2VyOjpw
YXJlbnQpOgorICAgICAgICAqIGRvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaDoKKyAgICAg
ICAgKEFuY2VzdG9yQ2hhaW5XYWxrZXIpOgorICAgICAgICAoV2ViQ29yZTo6QW5jZXN0b3JDaGFp
bldhbGtlcjo6Y3Jvc3NpbmdJbnNlcnRpb25Qb2ludCk6CisgICAgICAgICogZG9tL0V2ZW50RGlz
cGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFJlbGF0ZWRUYXJnZXRBZGp1c3Rl
cjo6YWRqdXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZW5zdXJlRXZl
bnRBbmNlc3RvcnMpOgorICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VHJlZVNjb3BlOjpmb2N1c2VkTm9kZSk6CisgICAgICAgICogaHRtbC9IVE1MTElFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMSUVsZW1lbnQ6OmF0dGFjaCk6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnREaXN0cmlidXRvcjo6ZGlzdHJpYnV0ZSk6CisgICAgICAgICogcGFnZS9FdmVu
dEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjp1cGRhdGVNb3Vz
ZUV2ZW50VGFyZ2V0Tm9kZSk6CisKIDIwMTItMTAtMDQgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIE1ha2UgQ29udGVudFNlbGVjdG9yUXVlcnkgd29yayB3aGVu
IGEgbm9kZSBQT09MIGlzIHVzZWQgaW5zdGVhZCBvZiBub2RlJ3MgcmVhbCBzaWJsaW5ncy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKaW5kZXgg
ZDNhNTRmODg3YTg1ZmQwNTc1ZDM3MDJjODExN2UyYmJhMDJhZDZhNi4uOGIwZWM3ZTI0ZmIzM2Mw
NmE4OGE5NjAzNmI5NmMzNDUyMGUxMGExZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Nv
bXBvc2VkU2hhZG93VHJlZVdhbGtlci5jcHAKQEAgLTUxLDYgKzUxLDIxIEBAIHN0YXRpYyBpbmxp
bmUgRWxlbWVudFNoYWRvdyogc2hhZG93T2ZQYXJlbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICBy
ZXR1cm4gMDsKIH0KIAorc3RhdGljIGlubGluZSBJbnNlcnRpb25Qb2ludCogcmVzb2x2ZVJlcHJv
amVjdGlvbihjb25zdCBOb2RlKiBub2RlKQoreworICAgIEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCA9IDA7CisgICAgY29uc3QgTm9kZSogY3VycmVudCA9IG5vZGU7CisgICAgd2hpbGUg
KEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KGN1cnJlbnQpKSB7CisgICAg
ICAgIHNoYWRvdy0+ZW5zdXJlRGlzdHJpYnV0aW9uKCk7CisgICAgICAgIGlmIChJbnNlcnRpb25Q
b2ludCogaW5zZXJ0ZWRUbyA9IHNoYWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3Iobm9kZSkpIHsKKyAg
ICAgICAgICAgIGN1cnJlbnQgPSBpbnNlcnRlZFRvOworICAgICAgICAgICAgaW5zZXJ0aW9uUG9p
bnQgPSBpbnNlcnRlZFRvOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICByZXR1cm4gaW5zZXJ0aW9uUG9pbnQ7Cit9CisKIGlubGluZSB2b2lkIENvbXBvc2Vk
U2hhZG93VHJlZVdhbGtlcjo6UGFyZW50VHJhdmVyc2FsRGV0YWlsczo6ZGlkVHJhdmVyc2VJbnNl
cnRpb25Qb2ludChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9pbnQpCiB7CiAgICAgaWYgKCFt
X2luc2VydGlvblBvaW50KQpAQCAtMTc5LDcgKzE5NCw3IEBAIE5vZGUqIENvbXBvc2VkU2hhZG93
VHJlZVdhbGtlcjo6dHJhdmVyc2VTaWJsaW5nT3JCYWNrVG9JbnNlcnRpb25Qb2ludChjb25zdCBO
b2RlCiAgICAgRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQYXJlbnQobm9kZSk7CiAg
ICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRU
cmVlKG5vZGUsIGRpcmVjdGlvbik7Ci0gICAgSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
ID0gc2hhZG93LT5pbnNlcnRpb25Qb2ludEZvcihub2RlKTsKKyAgICBJbnNlcnRpb25Qb2ludCog
aW5zZXJ0aW9uUG9pbnQgPSByZXNvbHZlUmVwcm9qZWN0aW9uKG5vZGUpOwogICAgIGlmICghaW5z
ZXJ0aW9uUG9pbnQpCiAgICAgICAgIHJldHVybiB0cmF2ZXJzZVNpYmxpbmdJbkN1cnJlbnRUcmVl
KG5vZGUsIGRpcmVjdGlvbik7CiAKQEAgLTI0Nyw3ICsyNjIsNyBAQCBOb2RlKiBDb21wb3NlZFNo
YWRvd1RyZWVXYWxrZXI6OnRyYXZlcnNlUGFyZW50KGNvbnN0IE5vZGUqIG5vZGUsIFBhcmVudFRy
YXZlcnNhbAogICAgIH0KICAgICBpZiAoRWxlbWVudFNoYWRvdyogc2hhZG93ID0gc2hhZG93T2ZQ
YXJlbnQobm9kZSkpIHsKICAgICAgICAgc2hhZG93LT5lbnN1cmVEaXN0cmlidXRpb24oKTsKLSAg
ICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHNoYWRvdy0+aW5zZXJ0
aW9uUG9pbnRGb3Iobm9kZSkpIHsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRp
b25Qb2ludCA9IHJlc29sdmVSZXByb2plY3Rpb24obm9kZSkpIHsKICAgICAgICAgICAgIGlmIChk
ZXRhaWxzKQogICAgICAgICAgICAgICAgIGRldGFpbHMtPmRpZFRyYXZlcnNlSW5zZXJ0aW9uUG9p
bnQoaW5zZXJ0aW9uUG9pbnQpOwogICAgICAgICAgICAgcmV0dXJuIHRyYXZlcnNlUGFyZW50KGlu
c2VydGlvblBvaW50LCBkZXRhaWxzKTsKQEAgLTMyOSwyOSArMzQ0LDQxIEBAIHZvaWQgQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyOjpwcmV2aW91cygpCiAgICAgYXNzZXJ0UG9zdGNvbmRpdGlvbigp
OwogfQogCi1Db21wb3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXI6OkNvbXBvc2VkU2hhZG93VHJl
ZVBhcmVudFdhbGtlcihjb25zdCBOb2RlKiBub2RlKQorQW5jZXN0b3JDaGFpbldhbGtlcjo6QW5j
ZXN0b3JDaGFpbldhbGtlcihjb25zdCBOb2RlKiBub2RlKQogICAgIDogbV9ub2RlKG5vZGUpCisg
ICAgLCBtX2Rpc3RyaWJ1dGVkTm9kZShub2RlKQorICAgICwgbV9pc0Nyb3NzaW5nSW5zZXJ0aW9u
UG9pbnQoZmFsc2UpCiB7CisgICAgQVNTRVJUKG5vZGUpOwogfQogCi12b2lkIENvbXBvc2VkU2hh
ZG93VHJlZVBhcmVudFdhbGtlcjo6cGFyZW50SW5jbHVkaW5nSW5zZXJ0aW9uUG9pbnRBbmRTaGFk
b3dSb290KCkKK3ZvaWQgQW5jZXN0b3JDaGFpbldhbGtlcjo6cGFyZW50KCkKIHsKICAgICBBU1NF
UlQobV9ub2RlKTsKLSAgICBtX25vZGUgPSB0cmF2ZXJzZVBhcmVudEluY2x1ZGluZ0luc2VydGlv
blBvaW50QW5kU2hhZG93Um9vdChtX25vZGUpOwotfQorICAgIEFTU0VSVChtX2Rpc3RyaWJ1dGVk
Tm9kZSk7CisgICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09mUGFyZW50KG1f
bm9kZSkpIHsKKyAgICAgICAgaWYgKEluc2VydGlvblBvaW50KiBpbnNlcnRpb25Qb2ludCA9IHNo
YWRvdy0+aW5zZXJ0aW9uUG9pbnRGb3IobV9kaXN0cmlidXRlZE5vZGUpKSB7CisgICAgICAgICAg
ICBtX25vZGUgPSBpbnNlcnRpb25Qb2ludDsKKyAgICAgICAgICAgIG1faXNDcm9zc2luZ0luc2Vy
dGlvblBvaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAoIW1fbm9kZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgbV9ub2RlID0gbV9u
b2RlLT5wYXJlbnROb2RlKCk7CisgICAgICAgIG1fZGlzdHJpYnV0ZWROb2RlID0gbV9ub2RlOwor
ICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOworICAgICAgICByZXR1
cm47CisgICAgfQogCi1Ob2RlKiBDb21wb3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXI6OnRyYXZl
cnNlUGFyZW50SW5jbHVkaW5nSW5zZXJ0aW9uUG9pbnRBbmRTaGFkb3dSb290KGNvbnN0IE5vZGUq
IG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKEVsZW1lbnRTaGFkb3cqIHNoYWRvdyA9IHNoYWRvd09m
UGFyZW50KG5vZGUpKSB7Ci0gICAgICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5zZXJ0aW9uUG9p
bnQgPSBzaGFkb3ctPmluc2VydGlvblBvaW50Rm9yKG5vZGUpKQotICAgICAgICAgICAgcmV0dXJu
IGluc2VydGlvblBvaW50OworICAgIGNvbnN0IFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSB0b1No
YWRvd1Jvb3QobV9ub2RlKTsKKyAgICBpZiAoSW5zZXJ0aW9uUG9pbnQqIGluc2VydGlvblBvaW50
ID0gc2hhZG93Um9vdC0+YXNzaWduZWRUbygpKSB7CisgICAgICAgIG1fbm9kZSA9IGluc2VydGlv
blBvaW50OworICAgICAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IHRydWU7CisgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKCFub2RlLT5pc1NoYWRvd1Jvb3QoKSkKLSAgICAg
ICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKLSAgICBjb25zdCBTaGFkb3dSb290KiBzaGFk
b3dSb290ID0gdG9TaGFkb3dSb290KG5vZGUpOwotICAgIGlmIChJbnNlcnRpb25Qb2ludCogaW5z
ZXJ0aW9uUG9pbnQgPSBzaGFkb3dSb290LT5hc3NpZ25lZFRvKCkpCi0gICAgICAgIHJldHVybiBp
bnNlcnRpb25Qb2ludDsKLSAgICByZXR1cm4gc2hhZG93Um9vdC0+aG9zdCgpOworICAgIG1fbm9k
ZSA9IHNoYWRvd1Jvb3QtPmhvc3QoKTsKKyAgICBtX2Rpc3RyaWJ1dGVkTm9kZSA9IG1fbm9kZTsK
KyAgICBtX2lzQ3Jvc3NpbmdJbnNlcnRpb25Qb2ludCA9IGZhbHNlOwogfQogCiB9IC8vIG5hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdh
bGtlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbXBvc2VkU2hhZG93VHJlZVdhbGtlci5oCmlu
ZGV4IGEwZGMyZjYwNGQ5ZDViZWM3MTNiNDM5YTYxYTRjYTU1NWFjOTZlNjIuLjg5NzY5YjE3MjM0
MmRkNGExOGM1OTdlNWM2YWUyNGQxZTgwZDJkYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db21wb3NlZFNoYWRvd1RyZWVXYWxrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyLmgKQEAgLTE2NCwxNiArMTY0LDE3IEBAIGlubGluZSBD
b21wb3NlZFNoYWRvd1RyZWVXYWxrZXI6OkNvbXBvc2VkU2hhZG93VHJlZVdhbGtlcihjb25zdCBO
b2RlKiBub2RlLCBQb2xpCiAjZW5kaWYKIH0KIAotLy8gQSBzcGVjaWFsIHdhbGtlciBjbGFzcyB3
aGljaCBpcyBvbmx5IHVzZWQgZm9yIHRyYXZlcnNpbmcgYSBwYXJlbnQgbm9kZSwgaW5jbHVkaW5n
Ci0vLyBpbnNlcnRpb24gcG9pbnRzIGFuZCBzaGFkb3cgcm9vdHMuCi1jbGFzcyBDb21wb3NlZFNo
YWRvd1RyZWVQYXJlbnRXYWxrZXIgeworY2xhc3MgQW5jZXN0b3JDaGFpbldhbGtlciB7CiBwdWJs
aWM6Ci0gICAgZXhwbGljaXQgQ29tcG9zZWRTaGFkb3dUcmVlUGFyZW50V2Fsa2VyKGNvbnN0IE5v
ZGUqKTsKLSAgICB2b2lkIHBhcmVudEluY2x1ZGluZ0luc2VydGlvblBvaW50QW5kU2hhZG93Um9v
dCgpOworICAgIGV4cGxpY2l0IEFuY2VzdG9yQ2hhaW5XYWxrZXIoY29uc3QgTm9kZSopOworICAg
IHZvaWQgcGFyZW50KCk7CiAgICAgTm9kZSogZ2V0KCkgY29uc3QgeyByZXR1cm4gY29uc3RfY2Fz
dDxOb2RlKj4obV9ub2RlKTsgfQorICAgIGJvb2wgY3Jvc3NpbmdJbnNlcnRpb25Qb2ludCgpIHsg
cmV0dXJuIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50OyB9CisKIHByaXZhdGU6Ci0gICAgTm9k
ZSogdHJhdmVyc2VQYXJlbnRJbmNsdWRpbmdJbnNlcnRpb25Qb2ludEFuZFNoYWRvd1Jvb3QoY29u
c3QgTm9kZSopIGNvbnN0OwogICAgIGNvbnN0IE5vZGUqIG1fbm9kZTsKKyAgICBjb25zdCBOb2Rl
KiBtX2Rpc3RyaWJ1dGVkTm9kZTsKKyAgICBib29sIG1faXNDcm9zc2luZ0luc2VydGlvblBvaW50
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5j
cHAKaW5kZXggMzIxMGJjZWQ2NTc5OGIzZTVmNzkxMTAyNjhmYTE3ZDFiNjE1YjU2Yy4uZDM3NjY1
MzNkMTJiODU1MmFjYzg5YWU0Y2E4OWUyN2I5ZDA2MjU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTY0LDE5ICs2NCwxNyBAQCB2b2lkIEV2ZW50UmVsYXRlZFRh
cmdldEFkanVzdGVyOjphZGp1c3QoVmVjdG9yPEV2ZW50Q29udGV4dD4mIGFuY2VzdG9ycykKIHsK
ICAgICBWZWN0b3I8RXZlbnRUYXJnZXQqPiByZWxhdGVkVGFyZ2V0U3RhY2s7CiAgICAgVHJlZVNj
b3BlKiBsYXN0VHJlZVNjb3BlID0gMDsKLSAgICBOb2RlKiBsYXN0Tm9kZSA9IDA7Ci0gICAgZm9y
IChDb21wb3NlZFNoYWRvd1RyZWVQYXJlbnRXYWxrZXIgd2Fsa2VyKG1fcmVsYXRlZFRhcmdldC5n
ZXQoKSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBhcmVudEluY2x1ZGluZ0luc2VydGlvblBvaW50
QW5kU2hhZG93Um9vdCgpKSB7CisgICAgZm9yIChBbmNlc3RvckNoYWluV2Fsa2VyIHdhbGtlciht
X3JlbGF0ZWRUYXJnZXQuZ2V0KCkpOyB3YWxrZXIuZ2V0KCk7IHdhbGtlci5wYXJlbnQoKSkgewog
ICAgICAgICBOb2RlKiBub2RlID0gd2Fsa2VyLmdldCgpOwogICAgICAgICBpZiAocmVsYXRlZFRh
cmdldFN0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXRTdGFjay5hcHBl
bmQobm9kZSk7Ci0gICAgICAgIGVsc2UgaWYgKGlzSW5zZXJ0aW9uUG9pbnQobm9kZSkgJiYgdG9J
bnNlcnRpb25Qb2ludChub2RlKS0+Y29udGFpbnMobGFzdE5vZGUpKQorICAgICAgICBlbHNlIGlm
ICh3YWxrZXIuY3Jvc3NpbmdJbnNlcnRpb25Qb2ludCgpKQogICAgICAgICAgICAgcmVsYXRlZFRh
cmdldFN0YWNrLmFwcGVuZChyZWxhdGVkVGFyZ2V0U3RhY2subGFzdCgpKTsKICAgICAgICAgVHJl
ZVNjb3BlKiBzY29wZSA9IG5vZGUtPnRyZWVTY29wZSgpOwogICAgICAgICAvLyBTa2lwcyBhZGRp
bmcgYSBub2RlIHRvIHRoZSBtYXAgaWYgdHJlZVNjb3BlIGRvZXMgbm90IGNoYW5nZS4gSnVzdCBm
b3IgdGhlIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KICAgICAgICAgaWYgKHNjb3BlICE9IGxh
c3RUcmVlU2NvcGUpCiAgICAgICAgICAgICBtX3JlbGF0ZWRUYXJnZXRNYXAuYWRkKHNjb3BlLCBy
ZWxhdGVkVGFyZ2V0U3RhY2subGFzdCgpKTsKICAgICAgICAgbGFzdFRyZWVTY29wZSA9IHNjb3Bl
OwotICAgICAgICBsYXN0Tm9kZSA9IG5vZGU7CiAgICAgICAgIGlmIChub2RlLT5pc1NoYWRvd1Jv
b3QoKSkgewogICAgICAgICAgICAgQVNTRVJUKCFyZWxhdGVkVGFyZ2V0U3RhY2suaXNFbXB0eSgp
KTsKICAgICAgICAgICAgIHJlbGF0ZWRUYXJnZXRTdGFjay5yZW1vdmVMYXN0KCk7CkBAIC0xODMs
MTcgKzE4MSwxNSBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZW5zdXJlRXZlbnRBbmNlc3RvcnMo
RXZlbnQqIGV2ZW50KQogICAgIGJvb2wgaW5Eb2N1bWVudCA9IG1fbm9kZS0+aW5Eb2N1bWVudCgp
OwogICAgIGJvb2wgaXNTVkdFbGVtZW50ID0gbV9ub2RlLT5pc1NWR0VsZW1lbnQoKTsKICAgICBW
ZWN0b3I8RXZlbnRUYXJnZXQqPiB0YXJnZXRTdGFjazsKLSAgICBOb2RlKiBsYXN0ID0gMDsKLSAg
ICBmb3IgKENvbXBvc2VkU2hhZG93VHJlZVBhcmVudFdhbGtlciB3YWxrZXIobV9ub2RlLmdldCgp
KTsgd2Fsa2VyLmdldCgpOyB3YWxrZXIucGFyZW50SW5jbHVkaW5nSW5zZXJ0aW9uUG9pbnRBbmRT
aGFkb3dSb290KCkpIHsKKyAgICBmb3IgKEFuY2VzdG9yQ2hhaW5XYWxrZXIgd2Fsa2VyKG1fbm9k
ZS5nZXQoKSk7IHdhbGtlci5nZXQoKTsgd2Fsa2VyLnBhcmVudCgpKSB7CiAgICAgICAgIE5vZGUq
IG5vZGUgPSB3YWxrZXIuZ2V0KCk7CiAgICAgICAgIGlmICh0YXJnZXRTdGFjay5pc0VtcHR5KCkp
CiAgICAgICAgICAgICB0YXJnZXRTdGFjay5hcHBlbmQoZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZH
VGFyZ2V0UnVsZXMobm9kZSkpOwotICAgICAgICBlbHNlIGlmIChpc0luc2VydGlvblBvaW50KG5v
ZGUpICYmIHRvSW5zZXJ0aW9uUG9pbnQobm9kZSktPmNvbnRhaW5zKGxhc3QpKQorICAgICAgICBl
bHNlIGlmICh3YWxrZXIuY3Jvc3NpbmdJbnNlcnRpb25Qb2ludCgpKQogICAgICAgICAgICAgdGFy
Z2V0U3RhY2suYXBwZW5kKHRhcmdldFN0YWNrLmxhc3QoKSk7CiAgICAgICAgIG1fYW5jZXN0b3Jz
LmFwcGVuZChFdmVudENvbnRleHQobm9kZSwgZXZlbnRUYXJnZXRSZXNwZWN0aW5nU1ZHVGFyZ2V0
UnVsZXMobm9kZSksIHRhcmdldFN0YWNrLmxhc3QoKSkpOwogICAgICAgICBpZiAoIWluRG9jdW1l
bnQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGxhc3QgPSBub2RlOwogICAgICAgICBp
ZiAoIW5vZGUtPmlzU2hhZG93Um9vdCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmIChkZXRlcm1pbmVEaXNwYXRjaEJlaGF2aW9yKGV2ZW50LCB0b1NoYWRvd1Jvb3Qobm9kZSks
IHRhcmdldFN0YWNrLmxhc3QoKSkgPT0gU3RheUluc2lkZVNoYWRvd0RPTSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZS5jcHAKaW5kZXggMjQ1M2E4ZjM0NTI2M2U1ODFmN2E0NzY2YjE5MDNlMTAzMmFmY2Fi
OC4uYWFkMWRmZjZkYzE0OTc3MDRkMzBlOGRiZGYwOTdiN2M0NzI5ZTUzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1RyZWVTY29wZS5jcHAKQEAgLTIzMSwxNiArMjMxLDE0IEBAIE5vZGUqIFRyZWVTY29wZTo6Zm9j
dXNlZE5vZGUoKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgVmVjdG9y
PE5vZGUqPiB0YXJnZXRTdGFjazsKLSAgICBOb2RlKiBsYXN0ID0gMDsKLSAgICBmb3IgKENvbXBv
c2VkU2hhZG93VHJlZVBhcmVudFdhbGtlciB3YWxrZXIobm9kZSk7IHdhbGtlci5nZXQoKTsgd2Fs
a2VyLnBhcmVudEluY2x1ZGluZ0luc2VydGlvblBvaW50QW5kU2hhZG93Um9vdCgpKSB7CisgICAg
Zm9yIChBbmNlc3RvckNoYWluV2Fsa2VyIHdhbGtlcihub2RlKTsgd2Fsa2VyLmdldCgpOyB3YWxr
ZXIucGFyZW50KCkpIHsKICAgICAgICAgTm9kZSogbm9kZSA9IHdhbGtlci5nZXQoKTsKICAgICAg
ICAgaWYgKHRhcmdldFN0YWNrLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRhcmdldFN0YWNrLmFw
cGVuZChub2RlKTsKLSAgICAgICAgZWxzZSBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSAmJiB0
b0luc2VydGlvblBvaW50KG5vZGUpLT5jb250YWlucyhsYXN0KSkKKyAgICAgICAgZWxzZSBpZiAo
d2Fsa2VyLmNyb3NzaW5nSW5zZXJ0aW9uUG9pbnQoKSkKICAgICAgICAgICAgIHRhcmdldFN0YWNr
LmFwcGVuZCh0YXJnZXRTdGFjay5sYXN0KCkpOwogICAgICAgICBpZiAobm9kZSA9PSByb290Tm9k
ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRhcmdldFN0YWNrLmxhc3QoKTsKLSAgICAgICAgbGFz
dCA9IG5vZGU7CiAgICAgICAgIGlmIChub2RlLT5pc1NoYWRvd1Jvb3QoKSkgewogICAgICAgICAg
ICAgQVNTRVJUKCF0YXJnZXRTdGFjay5pc0VtcHR5KCkpOwogICAgICAgICAgICAgdGFyZ2V0U3Rh
Y2sucmVtb3ZlTGFzdCgpOwpAQCAtMjgzLDQgKzI4MSwzIEBAIFRyZWVTY29wZSogY29tbW9uVHJl
ZVNjb3BlKE5vZGUqIG5vZGVBLCBOb2RlKiBub2RlQikKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTElFbGVtZW50LmNwcAppbmRleCA2NWY2NWRjOWU4
YThlZDkwOGZiMjI5NWYwZTFiZjlhMGFmZjFlNWYxLi4xODkzNDIwOTk2MGJhOTcxODYwNTIwZmVj
NDEwMWFmMGY1YmZhM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMSUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExJRWxlbWVudC5jcHAKQEAg
LTk2LDkgKzk2LDkgQEAgdm9pZCBIVE1MTElFbGVtZW50OjphdHRhY2goKQogCiAgICAgICAgIC8v
IEZpbmQgdGhlIGVuY2xvc2luZyBsaXN0IG5vZGUuCiAgICAgICAgIE5vZGUqIGxpc3ROb2RlID0g
MDsKLSAgICAgICAgQ29tcG9zZWRTaGFkb3dUcmVlUGFyZW50V2Fsa2VyIHdhbGtlcih0aGlzKTsK
KyAgICAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHdhbGtlcih0aGlzKTsKICAgICAgICAg
d2hpbGUgKCFsaXN0Tm9kZSkgewotICAgICAgICAgICAgd2Fsa2VyLnBhcmVudEluY2x1ZGluZ0lu
c2VydGlvblBvaW50QW5kU2hhZG93Um9vdCgpOworICAgICAgICAgICAgd2Fsa2VyLnBhcmVudCgp
OwogICAgICAgICAgICAgaWYgKCF3YWxrZXIuZ2V0KCkpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBpZiAod2Fsa2VyLmdldCgpLT5oYXNUYWdOYW1lKHVsVGFnKSB8fCB3YWxr
ZXIuZ2V0KCktPmhhc1RhZ05hbWUob2xUYWcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvQ29udGVudERpc3RyaWJ1dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L0NvbnRlbnREaXN0cmlidXRvci5jcHAKaW5kZXggNjc0OGI1OTkxZGI2N2ZiYjM1ZGVj
NzlmMzUzNDg2YTRkYmQ3ZGVhYS4uNDAwNTljNjA5YzExZjE5YWViYjkyNWQ5OTYyNWRiZjgzNWFm
OGNkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvQ29udGVudERpc3Ry
aWJ1dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9Db250ZW50RGlzdHJp
YnV0b3IuY3BwCkBAIC01Nyw4ICs1NywyMSBAQCB2b2lkIENvbnRlbnREaXN0cmlidXRvcjo6ZGlz
dHJpYnV0ZShFbGVtZW50KiBob3N0KQogICAgIG1fdmFsaWRpdHkgPSBWYWxpZDsKIAogICAgIENv
bnRlbnREaXN0cmlidXRpb24gcG9vbDsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBob3N0LT5maXJz
dENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKQotICAgICAgICBwb29s
LmFwcGVuZChub2RlKTsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSBob3N0LT5maXJzdENoaWxkKCk7
IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmICghaXNJbnNl
cnRpb25Qb2ludChub2RlKSkgeworICAgICAgICAgICAgcG9vbC5hcHBlbmQobm9kZSk7CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIEluc2VydGlvblBvaW50KiBp
bnNlcnRpb25Qb2ludCA9IHRvSW5zZXJ0aW9uUG9pbnQobm9kZSk7CisgICAgICAgIGlmIChpbnNl
cnRpb25Qb2ludC0+aGFzRGlzdHJpYnV0aW9uKCkpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5zZXJ0aW9uUG9pbnQtPnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAg
IHBvb2wuYXBwZW5kKGluc2VydGlvblBvaW50LT5hdChpKSk7CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBmb3IgKE5vZGUqIGZhbGxiYWNrTm9kZSA9IGluc2VydGlvblBvaW50LT5maXJz
dENoaWxkKCk7IGZhbGxiYWNrTm9kZTsgZmFsbGJhY2tOb2RlID0gZmFsbGJhY2tOb2RlLT5uZXh0
U2libGluZygpKQorICAgICAgICAgICAgICAgIHBvb2wuYXBwZW5kKGZhbGxiYWNrTm9kZSk7Cisg
ICAgICAgIH0KKyAgICB9CiAgICAgVmVjdG9yPGJvb2w+IGRpc3RyaWJ1dGVkKHBvb2wuc2l6ZSgp
KTsKICAgICBkaXN0cmlidXRlZC5maWxsKGZhbHNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDY3YmVmZTExNGRiZWE4OGFjMTIyNDNjNjNlMWJkZjc0OGZiZjUyZjEu
LjZkNjUxNmU4NWUwOGYyODIxODE2ZDQzY2Q3MDBmOGMzZGY3ZmQ4NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTIxNjYsOCArMjE2Niw4IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9kZShOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBQ
bGF0Zm9ybU1vCiAgICAgZWxzZSB7CiAgICAgICAgIC8vIElmIHRoZSB0YXJnZXQgbm9kZSBpcyBh
IHRleHQgbm9kZSwgZGlzcGF0Y2ggb24gdGhlIHBhcmVudCBub2RlIC0gcmRhcjovLzQxOTY2NDYK
ICAgICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQtPmlzVGV4dE5vZGUoKSkgewotICAgICAgICAg
ICAgQ29tcG9zZWRTaGFkb3dUcmVlUGFyZW50V2Fsa2VyIHdhbGtlcihyZXN1bHQpOwotICAgICAg
ICAgICAgd2Fsa2VyLnBhcmVudEluY2x1ZGluZ0luc2VydGlvblBvaW50QW5kU2hhZG93Um9vdCgp
OworICAgICAgICAgICAgQW5jZXN0b3JDaGFpbldhbGtlciB3YWxrZXIocmVzdWx0KTsKKyAgICAg
ICAgICAgIHdhbGtlci5wYXJlbnQoKTsKICAgICAgICAgICAgIHJlc3VsdCA9IHdhbGtlci5nZXQo
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBiMmUyN2Q2NDc1YWM5MzU3ODY2NTU3OGIyMTJj
NzgzMGMyMGM2NTkyLi4wY2MxYWJhODNmMjEwMGMyMGMwYzRiMWIxYzgxZjVhZTg4YjRhYjRhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTItMTAtMDQgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFVwZGF0ZSBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIgZm9y
IFNoYWRvdyBET00gcmUtcHJvamVjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk3MTUxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUt
d2Fsa2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQt
c2hhZG93LXRyZWUtd2Fsa2VyLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3Jlc291
cmNlcy9zaGFkb3ctZG9tLmpzOgorICAgICAgICAoY3JlYXRlU2hhZG93Um9vdFdpdGhBdHRyaWJ1
dGVzKToKKyAgICAgICAgKGNyZWF0ZURPTSk6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1kb20tZXZlbnQtZGlzcGF0Y2hpbmcuaHRtbDoKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvc2hhZG93ZG9tLXJlcHJvamVjdGlvbi0xLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3dkb20tcmVwcm9qZWN0aW9uLTEuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvd2RvbS1yZXByb2plY3Rpb24tMi1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93ZG9tLXJl
cHJvamVjdGlvbi0yLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEwLTA0ICBSaWsgQ2FiYW5pZXIgIDxj
YWJhbmllckBhZG9iZS5jb20+CiAKICAgICAgICAgVHVybiBDb21wb3NpdGluZyBvbiBieSBkZWZh
dWx0IGluIFdlYktpdCBidWlsZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLWV4cGVjdGVkLnR4
dAppbmRleCAyYTIwMWE2YzZjYTQwMjYxYmI1NjY0ZTM5YmFmOGQ4NzgyOGEzNGFjLi41Y2Q1Yzgw
NWU1YzNjMDRiMGQyM2Y3MzhiNDcwMmU4MTI3MDUxYjA0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUt
d2Fsa2VyLWV4cGVjdGVkLnR4dApAQCAtMjQ3LDggKzI0Nyw2IEBAIFRlc3QgZm9yIG5lc3RlZCBp
bnNlcnRpb24gcG9pbnRzLiBTb21lIG9mIHRoZW0gYXJlIGVpdGhlciBlbXB0eSBpbnNlcnRpb24g
cG9pbnRzCiBDb21wb3NlZCBTaGFkb3cgVHJlZToKIERJVgkgaWQ9YQogCURJVgkgaWQ9YgotCQlD
T05URU5UCSBpZD1pbmFjdGl2ZS1pbnNlcnRpb24tcG9pbnQgY2xhc3M9c2VsZWN0LTQKLQkJRElW
CSBpZD1mIGNsYXNzPXNlbGVjdC00CiAJCURJVgkgaWQ9YwogCQlESVYJIGlkPWQgY2xhc3M9c2Vs
ZWN0LTIKIAkJRElWCSBpZD1lIGNsYXNzPXNlbGVjdC0yCkBAIC0yNTYsOCArMjU0LDYgQEAgRElW
CSBpZD1hCiBUcmF2ZXJzZSBpbiBmb3J3YXJkLgogRElWCSBpZD1hCiBESVYJIGlkPWIKLUNPTlRF
TlQJIGlkPWluYWN0aXZlLWluc2VydGlvbi1wb2ludCBjbGFzcz1zZWxlY3QtNAotRElWCSBpZD1m
IGNsYXNzPXNlbGVjdC00CiBESVYJIGlkPWMKIERJVgkgaWQ9ZCBjbGFzcz1zZWxlY3QtMgogRElW
CSBpZD1lIGNsYXNzPXNlbGVjdC0yCkBAIC0yNjUsOCArMjYxLDkzIEBAIFRyYXZlcnNlIGluIGJh
Y2t3YXJkLgogRElWCSBpZD1lIGNsYXNzPXNlbGVjdC0yCiBESVYJIGlkPWQgY2xhc3M9c2VsZWN0
LTIKIERJVgkgaWQ9YwotRElWCSBpZD1mIGNsYXNzPXNlbGVjdC00Ci1DT05URU5UCSBpZD1pbmFj
dGl2ZS1pbnNlcnRpb24tcG9pbnQgY2xhc3M9c2VsZWN0LTQKK0RJVgkgaWQ9YgorRElWCSBpZD1h
CisKK1Rlc3QgZm9yIGEgcmUtcHJvamVjdGlvbi4KK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElW
CSBpZD1hCisJRElWCSBpZD1iCisJCURJVgkgaWQ9YworCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgor
RElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9YworVHJhdmVyc2UgaW4gYmFja3dhcmQuCitE
SVYJIGlkPWMKK0RJVgkgaWQ9YgorRElWCSBpZD1hCisKK1Rlc3QgZm9yIGEgY29udGVudCBlbGVt
ZW50IHdoaWNoIGlzIHNlbGVjdGVkIGJ5IGFub3RoZXIgY29udGVudCBlbGVtZW50LgorQ29tcG9z
ZWQgU2hhZG93IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwkJRElWCSBpZD1tb3N0LWlu
bmVyLWNoaWxkCisJCURJVgkgaWQ9aG9zdC1jaGlsZAorCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgor
RElWCSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9bW9zdC1pbm5lci1jaGlsZAorRElWCSBpZD1o
b3N0LWNoaWxkCitUcmF2ZXJzZSBpbiBiYWNrd2FyZC4KK0RJVgkgaWQ9aG9zdC1jaGlsZAorRElW
CSBpZD1tb3N0LWlubmVyLWNoaWxkCitESVYJIGlkPWIKK0RJVgkgaWQ9YQorCitUZXN0IGZvciBh
IHJlcHJvamVjdGlvbi4gQ29udGVudCBlbGVtZW50cyBzaG91bGQgYmUgdXNlZCBpbiBkb2N1bWVu
dCBvcmRlci4KK0NvbXBvc2VkIFNoYWRvdyBUcmVlOgorRElWCSBpZD1hCisJRElWCSBpZD1ob3N0
LWNoaWxkMSBjbGFzcz1jaGlsZAorCURJVgkgaWQ9YgorCQlESVYJIGlkPWhvc3QtY2hpbGQyIGNs
YXNzPWNoaWxkCisKK1RyYXZlcnNlIGluIGZvcndhcmQuCitESVYJIGlkPWEKK0RJVgkgaWQ9aG9z
dC1jaGlsZDEgY2xhc3M9Y2hpbGQKK0RJVgkgaWQ9YgorRElWCSBpZD1ob3N0LWNoaWxkMiBjbGFz
cz1jaGlsZAorVHJhdmVyc2UgaW4gYmFja3dhcmQuCitESVYJIGlkPWhvc3QtY2hpbGQyIGNsYXNz
PWNoaWxkCitESVYJIGlkPWIKK0RJVgkgaWQ9aG9zdC1jaGlsZDEgY2xhc3M9Y2hpbGQKK0RJVgkg
aWQ9YQorCitUZXN0IGZvciBjb21wbGV4IHJlLXByb2plY3Rpb25zLgorQ29tcG9zZWQgU2hhZG93
IFRyZWU6CitESVYJIGlkPWEKKwlESVYJIGlkPWIKKwkJRElWCSBpZD1jaGlsZC0xIGNsYXNzPWZv
bworCQlESVYJIGlkPWQgY2xhc3M9Zm9vCisJCQlESVYJIGlkPWUKKwkJCURJVgkgaWQ9Y2hpbGQt
MiBjbGFzcz1mb28KKwkJCURJVgkgaWQ9ZyBjbGFzcz1mb28KKwkJCURJVgkgaWQ9ZgorCQlESVYJ
IGlkPWggY2xhc3M9Zm9vCisJCURJVgkgaWQ9YworCitUcmF2ZXJzZSBpbiBmb3J3YXJkLgorRElW
CSBpZD1hCitESVYJIGlkPWIKK0RJVgkgaWQ9Y2hpbGQtMSBjbGFzcz1mb28KK0RJVgkgaWQ9ZCBj
bGFzcz1mb28KK0RJVgkgaWQ9ZQorRElWCSBpZD1jaGlsZC0yIGNsYXNzPWZvbworRElWCSBpZD1n
IGNsYXNzPWZvbworRElWCSBpZD1mCitESVYJIGlkPWggY2xhc3M9Zm9vCitESVYJIGlkPWMKK1Ry
YXZlcnNlIGluIGJhY2t3YXJkLgorRElWCSBpZD1jCitESVYJIGlkPWggY2xhc3M9Zm9vCitESVYJ
IGlkPWYKK0RJVgkgaWQ9ZyBjbGFzcz1mb28KK0RJVgkgaWQ9Y2hpbGQtMiBjbGFzcz1mb28KK0RJ
VgkgaWQ9ZQorRElWCSBpZD1kIGNsYXNzPWZvbworRElWCSBpZD1jaGlsZC0xIGNsYXNzPWZvbwog
RElWCSBpZD1iCiBESVYJIGlkPWEKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L2NvbXBvc2VkLXNoYWRvdy10cmVlLXdhbGtlci5odG1sCmluZGV4IGQxYzJk
OWJiYWQ3M2E4MzQyZGI2OWFjNGE3ZGU3YWRiNTI2YzkyMDIuLjA2ZjdhNzFmMmE0ZWQ0MzBmNmE0
ODQwMmEwYjUyZDVkYTRmMDQ5MTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9jb21wb3NlZC1zaGFkb3ctdHJlZS13YWxrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvY29tcG9zZWQtc2hhZG93LXRyZWUtd2Fsa2VyLmh0bWwKQEAgLTIyOCw2
ICsyMjgsNzcgQEAgdGVzdENvbXBvc2VkU2hhZG93VHJlZSgKICAgICAgICAgICAgICAgY3JlYXRl
RE9NKCdjb250ZW50JywgeydpZCc6ICdpbmFjdGl2ZS1pbnNlcnRpb24tcG9pbnQnLCAnY2xhc3Mn
OiAnc2VsZWN0LTQnfSksCiAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdz
aG91bGQtbm90LWJlLXNlbGVjdGVkJ30pLAogICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZicsICdjbGFzcyc6ICdzZWxlY3QtNCd9KSkpOworCitkZWJ1ZygnVGVzdCBmb3Ig
YSByZS1wcm9qZWN0aW9uLicpOwordGVzdENvbXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KAor
ICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2InfSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnY29udGVudCcs
IHsnc2VsZWN0JzogJyNjJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjYyd9KSkpLAorICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnYyd9KSkpOworCitkZWJ1ZygnVGVzdCBmb3IgYSBjb250ZW50IGVs
ZW1lbnQgd2hpY2ggaXMgc2VsZWN0ZWQgYnkgYW5vdGhlciBjb250ZW50IGVsZW1lbnQuJyk7Cit0
ZXN0Q29tcG9zZWRTaGFkb3dUcmVlKAorICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhJ30s
CisgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnYid9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZVNoYWRvd1Jvb3QoY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2NvbnRlbnQn
fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2RpdicsIHsnaWQnOiAnbW9zdC1pbm5lci1jaGlsZCd9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0
JzogJyNob3N0LWNoaWxkJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVE
T00oJ2NvbnRlbnQnLCB7J2lkJzogJ2NvbnRlbnQnLCAnc2VsZWN0JzogJyNob3N0LWNoaWxkJ30s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdzaG91bGQtbm90LWJlLXVzZWQnfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdpbm5lci1jaGlsZCcsICdjbGFzcyc6ICdmb28n
fSkpKSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQn
fSkpKTsKKworZGVidWcoJ1Rlc3QgZm9yIGEgcmVwcm9qZWN0aW9uLiBDb250ZW50IGVsZW1lbnRz
IHNob3VsZCBiZSB1c2VkIGluIGRvY3VtZW50IG9yZGVyLicpOwordGVzdENvbXBvc2VkU2hhZG93
VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAgICBj
cmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50Jywg
eydzZWxlY3QnOiAnI2hvc3QtY2hpbGQxJ30pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2InfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVT
aGFkb3dSb290KGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5jaGlsZCd9KSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3Qn
OiAnLmNoaWxkJ30pKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdo
b3N0LWNoaWxkMScsICdjbGFzcyc6ICdjaGlsZCd9KSwKKyAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdkaXYnLCB7J2lkJzogJ2hvc3QtY2hpbGQyJywgJ2NsYXNzJzogJ2NoaWxkJ30pKSk7CisKK2Rl
YnVnKCdUZXN0IGZvciBjb21wbGV4IHJlLXByb2plY3Rpb25zLicpOwordGVzdENvbXBvc2VkU2hh
ZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAgICAgICAgICAg
ICBjcmVhdGVTaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7
J2lkJzogJ2InfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
Yyd9KSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0ICNjaGlsZC0xCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3Qn
OiAnI2NoaWxkLTEnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ3Nob3VsZC1ub3QtYmUtdXNlZCd9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hvdWxkIG5vdCBzZWxlY3QgYW55IG5v
ZGVzIHNpbmNlIGl0J3MgaW5hY3RpdmUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnY2xhc3MnOiAnc2hvdWxkLWJlLWluYWN0aXZl
JywgJ3NlbGVjdCc6ICcuZm9vJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2RpdicsIHsnaWQnOiAnZCcsICdjbGFzcyc6ICdmb28nfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZSd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBTaG91bGQgc2VsZWN0ICNjaGlsZC0yIGFuZCAjZy4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZm9vJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdm
J30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0ICNj
aGlsZC0yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
Y29udGVudCcsIHsnc2VsZWN0JzogJyNjaGlsZC0yJ30pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnZycsICdjbGFzcyc6ICdm
b28nfSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywgeydj
bGFzcyc6ICdzaG91bGQtbm90LWJlLXNlbGVjdGVkJ30pLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdoJywgJ2NsYXNzJzogJ2Zvbyd9KSkpLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnY2hpbGQtMScsICdjbGFzcyc6
ICdmb28nfSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdub3Qtc2Vs
ZWN0ZWQnLCAnY2xhc3MnOiAnZm9vJ30pLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnY2hpbGQtMicsICdjbGFzcyc6ICdmb28nfSkpKTsKKworLyoKK2RlYnVnKCdUZXN0
IGZvciBtdWx0aXBsZSBzaGFkb3cgcm9vdHMgd2l0aCByZXByb2plY3Rpb25zLicpOwordGVzdENv
bXBvc2VkU2hhZG93VHJlZSgKKyAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYSd9LAorICAg
ICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290KGNyZWF0ZURPTSgnY29udGVudCcpKSwKKyAgICAg
ICAgICAgICAgY3JlYXRlU2hhZG93Um9vdChjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYid9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3dSb290
KGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJyNjaGlsZCd9KSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnc2hhZG93JykpKSwKKyAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2NoaWxkJ30pKSk7CisqLworCiA8
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9yZXNvdXJjZXMvc2hhZG93LWRvbS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9yZXNvdXJjZXMvc2hhZG93LWRvbS5qcwppbmRleCAxZWNmNGVkYWUxOTYxNmQ0Yjc2YjdhOWRl
YTQzN2NmMjA1MjM3NTU3Li5iZTBjNmM5M2FkMDU1ZGRjZmVmMGFmM2RiODNmMDgzZjUyMmMyZTFl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3NoYWRv
dy1kb20uanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zaGFk
b3ctZG9tLmpzCkBAIC00LDYgKzQsMTMgQEAgZnVuY3Rpb24gY3JlYXRlU2hhZG93Um9vdCgpCiAg
ICAgICAgICAgICAnY2hpbGRyZW4nOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVu
dHMpfTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlU2hhZG93Um9vdFdpdGhBdHRyaWJ1dGVzKGF0dHJp
YnV0ZXMsIGNoaWxkcmVuKQoreworICAgIHJldHVybiB7J2lzU2hhZG93Um9vdCc6IHRydWUsCisg
ICAgICAgICAgICAnYXR0cmlidXRlcyc6IGF0dHJpYnV0ZXMsCisgICAgICAgICAgICAnY2hpbGRy
ZW4nOiBjaGlsZHJlbn07Cit9CisKIC8vIFRoaXMgZnVuY3Rpb24gY2FuIHRha2Ugb3B0aW9uYWwg
Y2hpbGQgZWxlbWVudHMsIHdoaWNoIG1pZ2h0IGJlIGEgcmVzdWx0IG9mIGNyZWF0ZVNoYWRvd1Jv
b3QoKSwgYXMgYXJndW1lbnRzWzI6XS4KIC8vIFlvdSBtdXN0IGVuYWJsZSBTSEFET1dfRE9NIGZs
YWcgaWYgeW91IHVzZSB0aGlzIGZ1Y250aW9uIHRvIGhvc3QgbXVsdGlwbGUgU2hhZG93Um9vdHMK
IC8vIHNpbmNlIHdpbmRvdy5pbnRlcm5hbHMgZG9lcyBub3QgaGF2ZSBhIGZ1bmN0aW9uIHdoaWNo
IGNhbiBiZSB1c2VkIHRvIGhvc3QgbXVsdGlwbGUgc2hhZG93IHJvb3RzLgpAQCAtMjYsNiArMzMs
MTIgQEAgZnVuY3Rpb24gY3JlYXRlRE9NKHRhZ05hbWUsIGF0dHJpYnV0ZXMpCiAgICAgICAgICAg
ICAgICAgc2hhZG93Um9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KGVsZW1lbnQpOwog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRocm93ICJDcmVhdGVET00gY2Fubm90
IGJlIHVzZWQgdG8gaG9zdCBtdWx0aXBsZSBTaGFkb3dSb290cyB3aXRob3V0IG5ldyBXZWJLaXRT
aGFkb3dSb290KCkiOworICAgICAgICAgICAgaWYgKGNoaWxkLmF0dHJpYnV0ZXMpIHsKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBhdHRyaWJ1dGUgaW4gY2hpbGQuYXR0cmlidXRlcykgeworICAg
ICAgICAgICAgICAgICAgICAvLyBTaGFkb3cgUm9vdCBkb2VzIG5vdCBoYXZlIHNldEF0dHJpYnV0
ZS4KKyAgICAgICAgICAgICAgICAgICAgc2hhZG93Um9vdFthdHRyaWJ1dGVdID0gY2hpbGQuYXR0
cmlidXRlc1thdHRyaWJ1dGVdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2hpbGQuY2hpbGRyZW4ubGVuZ3RoOyArK2op
CiAgICAgICAgICAgICAgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChjaGlsZC5jaGlsZHJlbltq
XSk7CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1kb20tZXZlbnQtZGlzcGF0Y2hpbmcuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3ctZG9tLWV2ZW50LWRpc3BhdGNoaW5nLmh0bWwKaW5kZXggZGEyMzBj
ZjE2YzFlYTJlNjg4ZGMyNzExNzk0YzM5NzQzMGIwYjRiMy4uZTI5NDcwYTJiNWQ5MmY4ZjgwOWQ2
Y2JhZmMzNGI0N2Q0NGQwODlhNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1kb20tZXZlbnQtZGlzcGF0Y2hpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWRvbS1ldmVudC1kaXNwYXRjaGluZy5odG1sCkBAIC0xODAs
MTIgKzE4MCwxMiBAQCBmdW5jdGlvbiB0ZXN0RXZlbnRzT25OZXN0ZWRTaGFkb3dSb290cygpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93Um9vdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ0onfSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZVNoYWRvd1Jvb3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydpZCc6ICdO
JywgJ3NlbGVjdCc6ICcjSyd9KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lk
JzogJ0snLCAnc2VsZWN0JzogJyNIJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRl
bnQnLCB7J2lkJzogJ04nLCAnc2VsZWN0JzogJyNDJ30pKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgn
Y29udGVudCcsIHsnaWQnOiAnSycsICdzZWxlY3QnOiAnI0MnfSkpLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnTCd9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93Um9vdCgKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ08nLCAnc2VsZWN0JzogJyNNJ30pKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnTScsICdzZWxlY3QnOiAnI0knfSkpKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ08nLCAnc2VsZWN0Jzog
JyNFJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnTScsICdzZWxl
Y3QnOiAnI0UnfSkpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ0gnLCAnc2VsZWN0JzogJyND
J30pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNyZWF0ZURPTSgnY29udGVudCcsIHsnaWQnOiAnSScsICdzZWxlY3QnOiAnI0UnfSkpKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lk
JzogJ0MnfSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3dk
b20tcmVwcm9qZWN0aW9uLTEtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3dkb20tcmVwcm9qZWN0aW9uLTEtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YjI2ZDFiNmM5ZDQ0MWJjOWJkY2RiNGFmZjBkY2NmNGQzYzY0ODVkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvd2RvbS1yZXByb2plY3Rpb24tMS1l
eHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxzdHlsZT4KK2RpdiB7CisgIG1hcmdpbjogMTBweCAxMHB4IDEwcHggMTBweDsKKyAg
Ym9yZGVyOiBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRp
dj4KKyAgPGRpdj4KKyAgICA8ZGl2PmEtMTwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93ZG9tLXJlcHJvamVjdGlvbi0xLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93ZG9tLXJlcHJvamVjdGlvbi0xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMwOGYxM2UwZmE3ZjVj
MTNjM2Y0NTU5NmE3Mzc3ZjkzMWFmOTYzOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3dkb20tcmVwcm9qZWN0aW9uLTEuaHRtbApAQCAtMCwwICsx
LDMyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3NoYWRvdy1kb20uanMiPjwvc2NyaXB0PgorPHN0eWxlPgorZGl2IHsKKyAgbWFyZ2lu
OiAxMHB4IDEwcHggMTBweCAxMHB4OworICBib3JkZXI6IHNvbGlkIGJsYWNrOworfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRleHQoY29udGVudHMpIHsK
KyAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY29udGVudHMpOworfQorCitmdW5j
dGlvbiBzaGFkb3dSb290KCkgeworICAgIHJldHVybiBjcmVhdGVTaGFkb3dSb290V2l0aEF0dHJp
YnV0ZXMoeydhcHBseUF1dGhvclN0eWxlcyc6IHRydWV9LCBBcnJheS5wcm90b3R5cGUuc2xpY2Uu
Y2FsbChhcmd1bWVudHMpKTsKK30KKworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCgKKyAgICBj
cmVhdGVET00oJ2RpdicsIHt9LAorICAgICAgICAgICAgICBzaGFkb3dSb290KAorICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjYS0xJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcjYS0xJ30pKSksCisgICAgICAg
ICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydpZCc6ICdhLTEnfSwgdGV4dCgnYS0xJykpKSk7Cis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZG9tL3NoYWRvdy9zaGFkb3dkb20tcmVwcm9qZWN0aW9uLTItZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3dkb20tcmVwcm9qZWN0aW9uLTItZXhwZWN0ZWQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zNjZmYzI4MTY3Nzg5YzAxN2FkNjQ4OTM2MmE0YmE3ZDc1MzM1Njhj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvd2Rv
bS1yZXByb2plY3Rpb24tMi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KK2RpdiB7CisgIG1hcmdpbjogMTBweCAx
MHB4IDEwcHggMTBweDsKKyAgYm9yZGVyOiBzb2xpZCBibGFjazsKK30KKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPGRpdj4KKyAgPGRpdj4KKyAgICA8ZGl2PmItMTwvZGl2PgorICAgIDxk
aXY+Yi0yPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+CisKKzxkaXY+CisgIDxkaXY+Yy0xPC9kaXY+
CisgIDxkaXY+CisgICAgPGRpdj5jLTI8L2Rpdj4KKyAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdj4K
KyAgPGRpdj4KKyAgICA8ZGl2PmQtY2hpbGQtMTwvZGl2PgorICAgIDxkaXY+CisgICAgICAgPGRp
dj5kLTI8L2Rpdj4KKyAgICAgICA8ZGl2PmQtY2hpbGQtMjwvZGl2PgorICAgICAgIDxkaXY+ZC00
PC9kaXY+CisgICAgICAgPGRpdj5kLTM8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2PmQtNTwv
ZGl2PgorICAgIDxkaXY+ZC0xPC9kaXY+CisgIDwvZGl2PgorPC9kaXY+CisKKzwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3dkb20t
cmVwcm9qZWN0aW9uLTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3dk
b20tcmVwcm9qZWN0aW9uLTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNmU1YzEyYzlkZmU1ODdhMjFiZmJl
MDJiZGFkMTk3ZmI0NGMxZGE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvd2RvbS1yZXByb2plY3Rpb24tMi5odG1sCkBAIC0wLDAgKzEsNzcgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
c2hhZG93LWRvbS5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CitkaXYgeworICBtYXJnaW46IDEwcHgg
MTBweCAxMHB4IDEwcHg7CisgIGJvcmRlcjogc29saWQgYmxhY2s7Cit9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGV4dChjb250ZW50cykgeworICAgIHJl
dHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb250ZW50cyk7Cit9CisKK2Z1bmN0aW9uIHNo
YWRvd1Jvb3QoKSB7CisgICAgcmV0dXJuIGNyZWF0ZVNoYWRvd1Jvb3RXaXRoQXR0cmlidXRlcyh7
J2FwcGx5QXV0aG9yU3R5bGVzJzogdHJ1ZX0sIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFy
Z3VtZW50cykpOworfQorCisvLyBUZXN0IGZvciBhIGNvbnRlbnQgZWxlbWVudCB3aGljaCBpcyBz
ZWxlY3RlZCBieSBhbm90aGVyIGNvbnRlbnQgZWxlbWVudC4KK2RvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoCisgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAgICAgICAgICAgc2hhZG93Um9v
dCgKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2hhZG93Um9vdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2ItY29udGVudCd9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwgdGV4dCgnYi0x
JykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQn
LCB7J3NlbGVjdCc6ICcjYi0yJ30pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVh
dGVET00oJ2NvbnRlbnQnLCB7J2lkJzogJ2ItY29udGVudCcsICdzZWxlY3QnOiAnI2ItMid9LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9
LCB0ZXh0KCdzaG91bGQtbm90LWJlLXVzZWQnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZURPTSgnZGl2Jywge30sIHRleHQoJ3Nob3VsZC1ub3QtYmUtdXNlZCcpKSkpLAor
ICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAnYi0yJ30sIHRleHQoJ2ItMicp
KSkpOworCisvLyBkZWJ1ZygnVGVzdCBmb3IgYSByZXByb2plY3Rpb24uIENvbnRlbnQgZWxlbWVu
dHMgc2hvdWxkIGJlIHVzZWQgaW4gZG9jdW1lbnQgb3JkZXIuJyk7Citkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAgICAgICAgICAgIHNoYWRv
d1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6
ICcjYy0xJ30pLAorICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuY2hpbGQnfSkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnY29udGVudCcsIHsnc2VsZWN0
JzogJy5jaGlsZCd9KSkpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHsnaWQnOiAn
Yy0xJywgJ2NsYXNzJzogJ2NoaWxkJ30sIHRleHQoJ2MtMScpKSwKKyAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdkaXYnLCB7J2lkJzogJ2MtMicsICdjbGFzcyc6ICdjaGlsZCd9LCB0ZXh0KCdjLTIn
KSkpKTsKKworLy8gZGVidWcoJ1Rlc3QgZm9yIGNvbXBsZXggcmUtcHJvamVjdGlvbnMuJyk7Citk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKAorICAgIGNyZWF0ZURPTSgnZGl2Jywge30sCisgICAg
ICAgICAgICAgIHNoYWRvd1Jvb3QoCisgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvd1Jvb3QoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIFNlbGVjdCAjZC1jaGlsZC0xLCBkaXYsIGQtNQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVj
dCc6ICcuZm9vJ30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00o
J2RpdicsIHt9LCB0ZXh0KCdkLTEnKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFNlbGVjdCAjZC1jaGlsZC0xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9N
KCdjb250ZW50JywgeydzZWxlY3QnOiAnI2QtY2hpbGQtMSd9LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVET00oJ2RpdicsIHt9LCB0ZXh0KCdTaG91bGQgbm90
IGJlIHVzZWQnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0
ZURPTSgnY29udGVudCcsIHsnc2VsZWN0JzogJy5mb28nfSwgdGV4dCgnU2hvdWxkIG5vdCBzZWxl
Y3QgYW55IG5vZGVzLiBUaGlzIGlzIGluYWN0aXZlLicpKSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2Zvbyd9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFkb3dSb290KAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwgdGV4dCgnZC0yJykp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VsZWN0ICNk
LWNoaWxkLTIgYW5kICNkLTQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2NvbnRlbnQnLCB7J3NlbGVjdCc6ICcuZm9vJ30pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7fSwgdGV4
dCgnZC0zJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2Vs
ZWN0ICNkLWNoaWxkLTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRE9NKCdjb250ZW50JywgeydzZWxlY3QnOiAnI2QtY2hpbGQtMid9KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2lkJzogJ2QtNCcs
ICdjbGFzcyc6ICdmb28nfSwgdGV4dCgnZC00JykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjcmVhdGVET00oJ2RpdicsIHt9LCB0ZXh0KCdTaG91bGQgbm90IGJlIHNlbGVjdGVkJykp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2JywgeydjbGFzcyc6
ICdmb28nfSwgdGV4dCgnZC01JykpKSksCisgICAgICAgICAgICAgIGNyZWF0ZURPTSgnZGl2Jywg
eydpZCc6ICdkLWNoaWxkLTEnLCAnY2xhc3MnOiAnZm9vJ30sIHRleHQoJ2QtY2hpbGQtMScpKSwK
KyAgICAgICAgICAgICAgY3JlYXRlRE9NKCdkaXYnLCB7J2NsYXNzJzogJ2Zvbyd9LCB0ZXh0KCdz
aG91bGQtbm90LWJlLXNlbGVjdGVkJykpLAorICAgICAgICAgICAgICBjcmVhdGVET00oJ2Rpdics
IHsnaWQnOiAnZC1jaGlsZC0yJywgJ2NsYXNzJzogJ2Zvbyd9LCB0ZXh0KCdkLWNoaWxkLTInKSkp
KTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>