<?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>106142</bug_id>
          
          <creation_ts>2013-01-04 15:40:45 -0800</creation_ts>
          <short_desc>Promote composited-scrolling layers to stacking containers.</short_desc>
          <delta_ts>2013-01-31 00:24:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>107734</dependson>
          <blocked>106820</blocked>
    
    <blocked>107471</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Glenn Hartmann">hartmanng</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>joepeck</cc>
    
    <cc>jussi.kukkonen</cc>
    
    <cc>mvujovic</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tdanderson</cc>
    
    <cc>tonyg</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>800695</commentid>
    <comment_count>0</comment_count>
    <who name="Glenn Hartmann">hartmanng</who>
    <bug_when>2013-01-04 15:40:45 -0800</bug_when>
    <thetext>Promote composited-scrolling layers to stacking contexts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800696</commentid>
    <comment_count>1</comment_count>
      <attachid>181397</attachid>
    <who name="Glenn Hartmann">hartmanng</who>
    <bug_when>2013-01-04 15:41:01 -0800</bug_when>
    <thetext>Created attachment 181397
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800706</commentid>
    <comment_count>2</comment_count>
      <attachid>181397</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-04 15:47:44 -0800</bug_when>
    <thetext>Comment on attachment 181397
Patch

What are you trying to do here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800714</commentid>
    <comment_count>3</comment_count>
      <attachid>181397</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-04 16:13:46 -0800</bug_when>
    <thetext>Comment on attachment 181397
Patch

Attachment 181397 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15686371

New failing tests:
compositing/overflow/automatically-opt-into-composited-scrolling.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800822</commentid>
    <comment_count>4</comment_count>
      <attachid>181397</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-04 19:26:28 -0800</bug_when>
    <thetext>Comment on attachment 181397
Patch

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

New failing tests:
platform/chromium/virtual/softwarecompositing/overflow/automatically-opt-into-composited-scrolling.html
platform/chromium/virtual/gpu/compositedscrolling/overflow/automatically-opt-into-composited-scrolling.html
platform/chromium/virtual/gpu/compositedscrolling/overflow/overflow-scroll.html
platform/chromium/virtual/gpu/compositedscrolling/overflow/overflow-scroll-with-touch-no-overflow.html
compositing/overflow/automatically-opt-into-composited-scrolling.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806006</commentid>
    <comment_count>5</comment_count>
      <attachid>182491</attachid>
    <who name="">vollick</who>
    <bug_when>2013-01-13 14:05:57 -0800</bug_when>
    <thetext>Created attachment 182491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806008</commentid>
    <comment_count>6</comment_count>
    <who name="">vollick</who>
    <bug_when>2013-01-13 14:25:59 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 181397 [details])
&gt; What are you trying to do here?

With the latest patch, there&apos;s a more detailed explanation of the intent of the patch in the ChangeLog. If it&apos;s insufficient or incorrect, please let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806010</commentid>
    <comment_count>7</comment_count>
      <attachid>182491</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-13 14:47:52 -0800</bug_when>
    <thetext>Comment on attachment 182491
Patch

Attachment 182491 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15838221

New failing tests:
compositing/overflow/composited-scrolling-creates-a-stacking-context.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806020</commentid>
    <comment_count>8</comment_count>
      <attachid>182491</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-13 15:52:18 -0800</bug_when>
    <thetext>Comment on attachment 182491
Patch

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

New failing tests:
platform/chromium/virtual/gpu/compositedscrolling/overflow/scrollbars-with-clipped-owner.html
platform/chromium/virtual/gpu/compositedscrolling/overflow/overflow-scroll.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806029</commentid>
    <comment_count>9</comment_count>
      <attachid>182491</attachid>
    <who name="">vollick</who>
    <bug_when>2013-01-13 17:05:02 -0800</bug_when>
    <thetext>Comment on attachment 182491
Patch

platform/chromium/virtual/gpu/compositedscrolling/overflow/scrollbars-with-clipped-owner.html looks like a real failure. Removing r? while I investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806471</commentid>
    <comment_count>10</comment_count>
      <attachid>182491</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-14 11:00:33 -0800</bug_when>
    <thetext>Comment on attachment 182491
Patch

Ugh, so much additional complexity. This would be so much simpler if you could just whack style-&gt;zIndex() when you know that you can safely propagate this overflow element into a stacking context. What&apos;s the downside of doing this based simply on looking at style, not whether it actually overlows now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806590</commentid>
    <comment_count>11</comment_count>
      <attachid>182623</attachid>
    <who name="">vollick</who>
    <bug_when>2013-01-14 13:47:20 -0800</bug_when>
    <thetext>Created attachment 182623
Patch

(In reply to comment #10)
&gt; (From update of attachment 182491 [details])
&gt; Ugh, so much additional complexity. This would be so much simpler if you could just whack style-&gt;zIndex() when you know that you can safely propagate this overflow element into a stacking context. What&apos;s the downside of doing this based simply on looking at style, not whether it actually overlows now?

I was hoping to do this, too, but the problem is that I use the value of isStackingContext when computing m_needsCompositedScrolling. So when computing m_needsCompositedScrolling, rather than asking if a layer is a stacking context I really need to ask &quot;would you be a stacking context irrespective of your composited scrolling status?&quot; If I promote to a stacking context by mutating the style, I&apos;m no longer able to ask this question because the composited-scrolling effect is baked in.

Also in this patch:
 - Added the missing mac test expectation.
 - Updated the chromium TestExpectations for the test that will need rebaselining.
 - Removed the optimization in RenderLayer::updateCompositedLayersAfterScroll. Should be in its own patch anyhow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808686</commentid>
    <comment_count>12</comment_count>
      <attachid>183032</attachid>
    <who name="">vollick</who>
    <bug_when>2013-01-16 13:52:32 -0800</bug_when>
    <thetext>Created attachment 183032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808689</commentid>
    <comment_count>13</comment_count>
      <attachid>183032</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2013-01-16 13:55:31 -0800</bug_when>
    <thetext>Comment on attachment 183032
Patch

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

&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:152
&gt; +    if (renderLayer-&gt;treatAsAStackingContext()) {

nit: having the word &quot;as&quot; in there twice (even though one isn&apos;t really) makes reading this method name really hard to read. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808693</commentid>
    <comment_count>14</comment_count>
      <attachid>183032</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-01-16 13:57:34 -0800</bug_when>
    <thetext>Comment on attachment 183032
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorLayerTreeAgent.cpp:152
&gt;&gt; +    if (renderLayer-&gt;treatAsAStackingContext()) {
&gt; 
&gt; nit: having the word &quot;as&quot; in there twice (even though one isn&apos;t really) makes reading this method name really hard to read. :(

We don&apos;t normally include articles in function and variable names. You can call it treatAsSingleStackingContext if singularity is important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808932</commentid>
    <comment_count>15</comment_count>
      <attachid>183084</attachid>
    <who name="">vollick</who>
    <bug_when>2013-01-16 18:18:39 -0800</bug_when>
    <thetext>Created attachment 183084
Patch

This patch introduces the stackingContainer concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>813521</commentid>
    <comment_count>16</comment_count>
    <who name="">vollick</who>
    <bug_when>2013-01-22 16:13:52 -0800</bug_when>
    <thetext>To hopefully simplify the job for any potential reviewers, here&apos;s a guide to the latest patch.

1) It introduces the idea of a &quot;stacking container.&quot; A stacking container is treated just like a stacking context, but it isn&apos;t one in the strict, CSS sense.

2) In most places where we&apos;d referred to &apos;stacking context&apos;, we really meant &apos;stacking container&apos;. These name changes make up the bulk of the patch.

3) RenderLayers that needCompositedScrolling are now considered stacking containers (the whole point of introducing the stacking container concept was so that it could be extended to include these layers too).

4) The code in RenderLayer that determines the value of needsCompositedScrolling (updateDescendantsAreContiguousInStackingOrder, updateNeedsCompositedScrolling, etc), obviously can&apos;t depend on the value of isStackingContainer since isStackingContainer depends on needsCompositedScrolling, so all that code has been modified to use isStackingContext instead. In particular, the code that builds the z-order lists needed to be generalized so that we could use isStackingContext when building the layer lists for updateDescendantsAreContiguousInStackingOrder, and isStackingContainer when building the &apos;real&apos; z-order lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>814999</commentid>
    <comment_count>17</comment_count>
      <attachid>184388</attachid>
    <who name="">vollick</who>
    <bug_when>2013-01-23 20:18:17 -0800</bug_when>
    <thetext>Created attachment 184388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816828</commentid>
    <comment_count>18</comment_count>
      <attachid>184388</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-01-25 12:11:20 -0800</bug_when>
    <thetext>Comment on attachment 184388
Patch

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:1926
&gt; +        RenderLayer* sc = parent();

no abbreviations! &apos;sc&apos; needs a better name

&gt; Source/WebCore/rendering/RenderLayer.cpp:1933
&gt; +        while (sc &amp;&amp; !sc-&gt;isStackingContext())
&gt; +            sc = sc-&gt;parent();
&gt; +        
&gt; +        if (sc) {
&gt; +            sc-&gt;dirtyZOrderLists();
&gt; +            sc-&gt;dirtyNormalFlowList();
&gt; +        }

why is this different from dirtyStackingContainerZOrderLists() ? if this RenderLayer is in a stacking container that&apos;s not a stacking context&apos;s lists, wouldn&apos;t we have to dirty those?

&gt; Source/WebCore/rendering/RenderLayer.cpp:1935
&gt; +        compositor()-&gt;setCompositingLayersNeedRebuild();
&gt; +        compositor()-&gt;setShouldReevaluateCompositingAfterLayout();

why do you need both of these?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816885</commentid>
    <comment_count>19</comment_count>
      <attachid>184804</attachid>
    <who name="">vollick</who>
    <bug_when>2013-01-25 13:42:43 -0800</bug_when>
    <thetext>Created attachment 184804
Patch

(In reply to comment #18)
  &gt; (From update of attachment 184388 [details])
  &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=184388&amp;action=review
  &gt; 
  &gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1926
  &gt; &gt; +        RenderLayer* sc = parent();
  &gt; 
  &gt; no abbreviations! &apos;sc&apos; needs a better name
  &gt; 
  &gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1933
  &gt; &gt; +        while (sc &amp;&amp; !sc-&gt;isStackingContext())
  &gt; &gt; +            sc = sc-&gt;parent();
  &gt; &gt; +        
  &gt; &gt; +        if (sc) {
    &gt; &gt; +            sc-&gt;dirtyZOrderLists();
    &gt; &gt; +            sc-&gt;dirtyNormalFlowList();
    &gt; &gt; +        }
    &gt; 
    &gt; why is this different from dirtyStackingContainerZOrderLists() ? if this RenderLayer is in a stacking container that&apos;s not a stacking context&apos;s lists, wouldn&apos;t we have to dirty those?
Good point! I&apos;ve switched this to dirtyStackingContainerZOrderLists(). This also fixes the variable naming problem you mentioned.
    &gt; 
    &gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:1935
    &gt; &gt; +        compositor()-&gt;setCompositingLayersNeedRebuild();
    &gt; &gt; +        compositor()-&gt;setShouldReevaluateCompositingAfterLayout();
    &gt; 
    &gt; why do you need both of these?
Unless I&apos;m mistaken, if I just include the first, we will early out in RenderLayerCompositor::updateCompositingLayers if we&apos;re not compositing (it will think that there&apos;s no work to do), and if I include just the second, we won&apos;t rebuild the layer tree if we&apos;re already compositing, and we&apos;ll need to if we&apos;ve dirtied a bunch of layer lists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818002</commentid>
    <comment_count>20</comment_count>
      <attachid>185037</attachid>
    <who name="">vollick</who>
    <bug_when>2013-01-28 12:40:30 -0800</bug_when>
    <thetext>Created attachment 185037
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818034</commentid>
    <comment_count>21</comment_count>
      <attachid>185037</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 13:19:46 -0800</bug_when>
    <thetext>Comment on attachment 185037
Patch for landing

Clearing flags on attachment: 185037

Committed r140999: &lt;http://trac.webkit.org/changeset/140999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818035</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-28 13:19:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818074</commentid>
    <comment_count>23</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-01-28 14:00:50 -0800</bug_when>
    <thetext>I&apos;m seeing a possibly related compile failure on the Mac build bots:

Undefined symbols for architecture x86_64:
  &quot;__ZNK7WebCore11RenderLayer24needsCompositedScrollingEv&quot;, referenced from:
      __ZNK7WebCore11RenderLayer19isStackingContainerEv in WebRenderLayer.o

http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20%28Build%29/builds/7856/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818124</commentid>
    <comment_count>24</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-01-28 14:44:26 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; I&apos;m seeing a possibly related compile failure on the Mac build bots:
&gt; 
&gt; Undefined symbols for architecture x86_64:
&gt;   &quot;__ZNK7WebCore11RenderLayer24needsCompositedScrollingEv&quot;, referenced from:
&gt;       __ZNK7WebCore11RenderLayer19isStackingContainerEv in WebRenderLayer.o
&gt; 
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20%28Build%29/builds/7856/steps/compile-webkit/logs/stdio

Addressed with a build fix: &lt;http://trac.webkit.org/changeset/141012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818144</commentid>
    <comment_count>25</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2013-01-28 14:54:32 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; I&apos;m seeing a possibly related compile failure on the Mac build bots:
&gt; &gt; 
&gt; &gt; Undefined symbols for architecture x86_64:
&gt; &gt;   &quot;__ZNK7WebCore11RenderLayer24needsCompositedScrollingEv&quot;, referenced from:
&gt; &gt;       __ZNK7WebCore11RenderLayer19isStackingContainerEv in WebRenderLayer.o
&gt; &gt; 
&gt; &gt; http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20%28Build%29/builds/7856/steps/compile-webkit/logs/stdio
&gt; 
&gt; Addressed with a build fix: &lt;http://trac.webkit.org/changeset/141012&gt;

Thanks! The build fix worked locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821189</commentid>
    <comment_count>26</comment_count>
    <who name="Jussi Kukkonen (jku)">jussi.kukkonen</who>
    <bug_when>2013-01-31 00:24:39 -0800</bug_when>
    <thetext>Assertion in bug 108257 seems like it might be related to this patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181397</attachid>
            <date>2013-01-04 15:41:01 -0800</date>
            <delta_ts>2013-01-13 14:05:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106142-20130104183807.patch</filename>
            <type>text/plain</type>
            <size>2984</size>
            <attacher name="Glenn Hartmann">hartmanng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4ODA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZjYjJmMGRhNWJmOTMx
NTMwZGY4NDBlNTNjNjUyMmUyMzRhMjQyNS4uMDEzZWRmYTU1OWNmZDQxNGIxZWFkNDNjYzkxOTFj
YjAxNWQzMWM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEzLTAxLTA0ICBHbGVu
biBIYXJ0bWFubiAgPGhhcnRtYW5uZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUHJvbW90ZSBj
b21wb3NpdGVkLXNjcm9sbGluZyBsYXllcnMgdG8gc3RhY2tpbmcgY29udGV4dHMuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9P
UFMhKS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDb21wb3NpdGluZ0xheWVyc0FmdGVy
U2Nyb2xsKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjppc1N0YWNraW5nQ29udGV4dCk6CisKIDIwMTMtMDEtMDQgIFJp
Y2sgQnllcnMgIDxyYnllcnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEV4aXN0ZW5jZSBvZiB3
aW5kb3cuVG91Y2ggY2FuIGJyZWFrIHdlYnNpdGVzIG1vYmlsZSBkZXZpY2UgZGV0ZWN0aW9uCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCAyOTk4Yjk5YTY0NDRk
YzZjNjMwZDYyNWVjNGUxNmY0ZTc0MzM5MDJkLi43YThiNTZjNmY5ZTU2ZDg0MmVhMjdkZDMzNjVi
MjIyZDk4ZGFmMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAK
QEAgLTE4NzcsOCArMTg3NywxMCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBv
c2l0ZWRTY3JvbGxpbmcoKQogI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKG9sZE5lZWRzQ29tcG9z
aXRlZFNjcm9sbGluZyAhPSBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykKKyAgICBpZiAob2xk
TmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nICE9IG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKSB7
CiAgICAgICAgIHVwZGF0ZVNlbGZQYWludGluZ0xheWVyKCk7CisgICAgICAgIGRpcnR5Wk9yZGVy
TGlzdHMoKTsKKyAgICB9CiB9CiAjZW5kaWYKIApAQCAtMjE3Niw3ICsyMTc4LDcgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlclNjcm9sbCgpCiAgICAgICAg
IC8vIE91ciBzdGFja2luZyBjb250ZXh0IGlzIGd1YXJhbnRlZWQgdG8gY29udGFpbiBhbGwgb2Yg
b3VyIGRlc2NlbmRhbnRzIHRoYXQgbWF5IG5lZWQKICAgICAgICAgLy8gcmVwb3NpdGlvbmluZywg
c28gdXBkYXRlIGNvbXBvc2l0aW5nIGxheWVycyBmcm9tIHRoZXJlLgogICAgICAgICBpZiAoUmVu
ZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXN0b3IgPSBzdGFja2luZ0NvbnRleHQoKS0+ZW5jbG9z
aW5nQ29tcG9zaXRpbmdMYXllcigpKSB7Ci0gICAgICAgICAgICBpZiAoY29tcG9zaXRvcigpLT5j
b21wb3NpdGluZ0NvbnN1bHRzT3ZlcmxhcCgpKQorICAgICAgICAgICAgaWYgKGNvbXBvc2l0b3Io
KS0+Y29tcG9zaXRpbmdDb25zdWx0c092ZXJsYXAoKSAmJiAhdXNlc0NvbXBvc2l0ZWRTY3JvbGxp
bmcoKSkKICAgICAgICAgICAgICAgICBjb21wb3NpdG9yKCktPnVwZGF0ZUNvbXBvc2l0aW5nTGF5
ZXJzKENvbXBvc2l0aW5nVXBkYXRlT25TY3JvbGwsIGNvbXBvc2l0aW5nQW5jZXN0b3IpOwogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nQW5jZXN0b3ItPmJhY2tp
bmcoKS0+dXBkYXRlQWZ0ZXJMYXlvdXQoUmVuZGVyTGF5ZXJCYWNraW5nOjpJc1VwZGF0ZVJvb3Qp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCA4Y2E0ZDAwOTRkNDk0
ZjljNjVhY2E0Y2M0ZDYwM2ViYzdhZjY0YjI3Li5jMjJlN2QwNDU4YjEwZjA1YjA5MjA1ODMzMGY0
ODUxNWYzYTBkNGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAt
NzMzLDcgKzczMyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZU5vcm1hbEZsb3dMaXN0
KCk7CiAKLSAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0KGNvbnN0IFJlbmRlclN0eWxlKiBzdHls
ZSkgY29uc3QgeyByZXR1cm4gIXN0eWxlLT5oYXNBdXRvWkluZGV4KCkgfHwgaXNSb290TGF5ZXIo
KTsgfQorICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
KSBjb25zdCB7IHJldHVybiAhc3R5bGUtPmhhc0F1dG9aSW5kZXgoKSB8fCBpc1Jvb3RMYXllcigp
IHx8IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOyB9CiAgICAgYm9vbCBpc0RpcnR5U3RhY2tp
bmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV96T3JkZXJMaXN0c0RpcnR5ICYmIGlzU3RhY2tp
bmdDb250ZXh0KCk7IH0KIAogICAgIHZvaWQgc2V0QW5jZXN0b3JDaGFpbkhhc1NlbGZQYWludGlu
Z0xheWVyRGVzY2VuZGFudCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182491</attachid>
            <date>2013-01-13 14:05:57 -0800</date>
            <delta_ts>2013-01-14 13:47:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106142-20130113170258.patch</filename>
            <type>text/plain</type>
            <size>22301</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MzE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU0NjI4MzE4YTM4Yjkw
MmIwYzVlYzJiMTllZDMyMzljOTZkYjkzNy4uOTE1YmNiYzVkMmM4ZmJlZGRmYWQ5YWNkNWE3NzA5
YWZiYjQ0ODlhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEzLTAxLTEzICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFByb21vdGUgY29tcG9z
aXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0YWNraW5nIGNvbnRleHRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTQyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB3ZSBhdXRvbWF0aWNhbGx5
IG9wdCBpbnRvIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLCB3ZSd2ZSBkZXRlcm1pbmVkCisgICAgICAg
IHRoYXQgaXQncyBzYWZlIHRvIGJlY29tZSBhIHN0YWNraW5nIGNvbnRleHQgKGlmIGl0J3Mgbm90
LCB3ZSBnZXQKKyAgICAgICAgcmVuZGVyaW5nIGlzc3VlcyB3aGVuIHdlIHByb21vdGUpLCBidXQg
cHJldmlvdXNseSwgd2UgZGlkbid0IGFjdHVhbGx5CisgICAgICAgIHByb21vdGUgdGhlIGxheWVy
IHRvIGJlIGEgc3RhY2tpbmcgY29udGV4dC4gVGhpcyBoYWQgYSBudW1iZXIgb2YKKyAgICAgICAg
dW5mb3J0dW5hdGUgc2lkZSBlZmZlY3RzLiBUaGUgbWFpbiBwcm9ibGVtIHdhcyB0aGF0IHdoZW4g
Y29tcHV0aW5nIAorICAgICAgICBvdmVybGFwIGluIHRoZSBSZW5kZXJMYXllckNvbXBvc2l0b3Is
IHRoZSBub3cgY29tcG9zaXRlZCBzY3JvbGxpbmcKKyAgICAgICAgbGF5ZXIncyBkZXNjZW5kYW50
cyB3ZXJlIG5vdCBwcm9jZXNzZWQgYnkgdHJhdmVyc2luZyBpdHMgbGF5ZXIgbGlzdHMsCisgICAg
ICAgIGJ1dCByYXRoZXIgaXRzIHN0YWNraW5nIGNvbnRleHQncy4gU28gd2hhdCB3b3VsZCBoYXBw
ZW4gaXMgdGhhdCB3ZQorICAgICAgICB3b3VsZCBwdXNoIG9udG8gdGhlIG92ZXJsYXAgbWFwIHN0
YWNrIHdoZW4gcHJvY2Vzc2luZyB0aGUgbmVnIHotb3JkZXIKKyAgICAgICAgYW5kIG5vcm1hbCBm
bG93IGRlc2NlbmRhbnRzLCBidXQgd2Ugd291bGQgcG9wIGJlZm9yZSBwcm9jZXNzaW5nIHRoZQor
ICAgICAgICBzdGFja2luZyBjb250ZXh0J3MgcG9zIHotb3JkZXIgbGlzdC4gV2hlbiB0aGlzIHBv
cCBoYXBwZW5zLCB0aGUKKyAgICAgICAgcHJldmlvdXNseSBjb21wdXRlZCBvdmVybGFwIHJlZ2lv
bnMgJ3Rha2UgZWZmZWN0Jy4gVGhpcyBtZWFucyB0aGF0IGlmCisgICAgICAgIGFueSBvZiB0aGUg
bm9ybWFsIGZsb3cgb3IgbmVnIHotb3JkZXIgZGVzY2VuZGFudHMgd2VyZSBjb21wb3NpdGVkLCBh
bnkgCisgICAgICAgIHBvc2l0aXZlIHotb3JkZXIgZGVzY2VuZGFudHMgd291bGQgZ2V0IHByb21v
dGVkIGlmIHRoZXkgb3ZlcmxhcHBlZC4KKyAgICAgICAgSWYgd2UgcHJvbW90ZSB0aGUgY29tcG9z
aXRlZCBzY3JvbGxpbmcgbGF5ZXIgdG8gYSBzdGFja2luZyBjb250ZXh0LCB0aGlzCisgICAgICAg
IHBvcCBubyBsb25nZXIgaGFwcGVucyBhdCBhbiB1bmZvcnR1bmF0ZSB0aW1lLCBhbmQgc28gaXRz
IGRlc2NlbmRhbnRzCisgICAgICAgIGNhbid0IGluY29ycmVjdGx5IGNhdXNlIGVhY2ggb3RoZXIg
dG8gYmUgcHJvbW90ZWQgZHVlIHRvIG92ZXJsYXAuCisKKyAgICAgICAgT25lIHRyaWNreSBwb2lu
dCBoZXJlIGlzIHRoYXQgdGhlIGNvZGUgZm9yIGF1dG9tYXRpY2FsbHkgb3B0aW5nIGludG8KKyAg
ICAgICAgY29tcG9zaXRlZCBzY3JvbGxpbmcgdXNlcyBpc1N0YWNraW5nQ29udGV4dCB0byBkbyBp
dHMgY2FsY3VsYXRpb25zLiBJdAorICAgICAgICBhbHNvIHVzZXMgbGF5ZXIgbGlzdHMgdGhhdCBh
cmUgY29tcHV0ZWQgaW4gd2F5cyB0aGF0IGRlcGVuZCBvbiB0aGUKKyAgICAgICAgdmFsdWUgb2Yg
aXNTdGFja2luZ0NvbnRleHQuIFNvIHRoaXMgZnVuY3Rpb24gbmVlZGVkIHRvIGJlIG1vZGlmaWVk
IHRvCisgICAgICAgIGNvbmRpdGlvbmFsbHkgY29uc2lkZXIgd2hldGhlciBvciBub3QgY29tcG9z
aXRlZCBzY3JvbGxpbmcgc2hvdWxkCisgICAgICAgIGFmZmVjdCB3aGV0aGVyIHRoZSBsYXllciBp
cyBhIHN0YWNraW5nIGNvbnRleHQuCisKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9vdmVy
Zmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC5odG1s
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdP
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNB
cmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjYW5TYWZlbHlFc3RhYmxpc2hBU3RhY2tpbmdDb250ZXh0KToKKyAgICAg
ICAgICBDaGFuZ2VkIHRvIGVuc3VyZSB0aGF0IHZhbHVlcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlv
biBkbyBub3QgdXNlIHRoZQorICAgICAgICAgIGZsYXZvciBvZiBpc1N0YWNraW5nQ29udGV4dCBh
ZmZlY3RlZCBieSBjb21wb3NpdGVkIHNjcm9sbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFNpbmNl
IHRoaXMgdXBkYXRlIGNhbiBhZmZlY3Qgb3VyIHN0YWNraW5nIGNvbnRleHQgc3RhdHVzLCBpdCBk
aXJ0aWVzCisgICAgICAgICAgdGhlIG5lY2Vzc2FyeSBsYXllciBsaXN0cyBhbmQgaW5mb3JtcyB0
aGUgY29tcG9zaXRvciBhYm91dCB0aGUKKyAgICAgICAgICB1cGRhdGVzIHRoYXQgYXJlIG5vdyBu
ZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRp
bmdMYXllcnNBZnRlclNjcm9sbCk6CisgICAgICAgICAgSWYgdGhlIGNvbXBvc2l0ZWQgc2Nyb2xs
aW5nIGxheWVyIGlzIGEgc3RhY2tpbmcgY29udGV4dCwgc2Nyb2xsaW5nCisgICAgICAgICAgY2Fu
bm90IGFsdGVyIHRoZSBjb21wb3NpdGVkIHJlY3QgZXhwb3NlZCB0byBvdmVybGFwIHRlc3Rpbmcs
IHNvIHdlCisgICAgICAgICAgY2FuIHNraXAgb3ZlcmxhcCB0ZXN0aW5nIGluIHRoaXMgY2FzZS4K
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAgIFJl
ZmFjdG9yZWQgdG8gYWxsb3cgei1vcmRlciBsaXN0cyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gY29t
cG9zaXRlZAorICAgICAgICAgIHNjcm9sbGluZyB0byBiZSBjb21wdXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQpOgorICAgICAgICAg
IFdoZW4gdGhlIGxheWVyIGxpc3RzIGFyZSB1cGRhdGVkLCB3ZSBuZWVkIHRvIHVwZGF0ZQorICAg
ICAgICAgIG1faGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQuIFRoaXMgY2FuIG5vdyBh
ZmZlY3Qgb3VyCisgICAgICAgICAgc3RhY2tpbmctY29udGV4dCBzdGF0dXMsIHNvIHdlIG1heSBu
ZWVkIHRvIHJlY29tcHV0ZSB0aGUgbGF5ZXIgbGlzdHMKKyAgICAgICAgICBpZiB0aGlzIGhhcHBl
bnMuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6aXNTdGFja2luZ0NvbnRleHQpOgorICAgICAgICAgIENvbXBvc2l0ZWQg
c2Nyb2xsaW5nIG5vdyBpbXBsaWVzIGEgc3RhY2tpbmcgY29udGV4dC4KKwogMjAxMy0wMS0xMCAg
RGF2aWQgRmF1cmUgIDxmYXVyZUBrZGUub3JnPgogCiAgICAgICAgIFBsdWdpblBhY2thZ2U6OmZy
ZWVMaWJyYXJ5VGltZXJGaXJlZCBhc3NlcnRzIGlmIHBsdWdpbiBnb3QgbG9hZGVkIGFnYWluIG1l
YW53aGlsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZGRm
NWQzNzk1YzY4YWIxYTYwYTkwMWY3MWY0MDU4YzIwZWYxOGY0Yy4uYWQzOWI5MjQ1MDI2ODNlMDUy
ZDk4NDJhYzJlZTc0ODNmZjBmYjhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCkBAIC01OTksMzIgKzU5OSwzNiBAQCBib29sIFJlbmRlckxheWVyOjphY2NlbGVy
YXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgY29uc3QKIC8vICBBbmQg
d2Ugd291bGQgY29uY2x1ZGUgdGhhdCBDIGNvdWxkIGJlIHByb21vdGVkLgogdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCkKIHsK
LSAgICBpZiAoIWlzU3RhY2tpbmdDb250ZXh0KCkgfHwgIWFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSkKKyAgICBpZiAoIWlzU3RhY2tpbmdDb250ZXh0KEln
bm9yZUNvbXBvc2l0ZWRTY3JvbGxpbmcpIHx8ICFhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3Zl
cmZsb3dTY3JvbGxFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghbV9u
b3JtYWxGbG93TGlzdERpcnR5KTsKICAgICBBU1NFUlQoIW1fek9yZGVyTGlzdHNEaXJ0eSk7CiAK
KyAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiBwb3NaT3JkZXJMaXN0OworICAgIE93
blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+IG5lZ1pPcmRlckxpc3Q7CisgICAgcmVidWlsZFpP
cmRlckxpc3RzKElnbm9yZUNvbXBvc2l0ZWRTY3JvbGxpbmcsIHBvc1pPcmRlckxpc3QsIG5lZ1pP
cmRlckxpc3QpOworCiAgICAgLy8gQ3JlYXRlIGEgcmV2ZXJzZSBsb29rdXAuCiAgICAgSGFzaE1h
cDxjb25zdCBSZW5kZXJMYXllciosIGludD4gbG9va3VwOwogCi0gICAgaWYgKG1fbmVnWk9yZGVy
TGlzdCkgeworICAgIGlmIChuZWdaT3JkZXJMaXN0KSB7CiAgICAgICAgIGludCBzdGFja2luZ09y
ZGVySW5kZXggPSAtMTsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbV9uZWdaT3JkZXJMaXN0
LT5zaXplKCk7CisgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUo
KTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAg
ICAgICAgICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0gbV9uZWdaT3JkZXJMaXN0LT5hdChs
aXN0U2l6ZSAtIGkgLSAxKTsKLSAgICAgICAgICAgIGlmICghY3VycmVudExheWVyLT5pc1N0YWNr
aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IG5l
Z1pPcmRlckxpc3QtPmF0KGxpc3RTaXplIC0gaSAtIDEpOworICAgICAgICAgICAgaWYgKCFjdXJy
ZW50TGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KElnbm9yZUNvbXBvc2l0ZWRTY3JvbGxpbmcpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbG9va3VwLnNldChjdXJyZW50
TGF5ZXIsIHN0YWNraW5nT3JkZXJJbmRleC0tKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
IChtX3Bvc1pPcmRlckxpc3QpIHsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbV9wb3NaT3Jk
ZXJMaXN0LT5zaXplKCk7CisgICAgaWYgKHBvc1pPcmRlckxpc3QpIHsKKyAgICAgICAgc2l6ZV90
IGxpc3RTaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICBpbnQgc3RhY2tpbmdP
cmRlckluZGV4ID0gMTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsg
KytpKSB7Ci0gICAgICAgICAgICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0gbV9wb3NaT3Jk
ZXJMaXN0LT5hdChpKTsKLSAgICAgICAgICAgIGlmICghY3VycmVudExheWVyLT5pc1N0YWNraW5n
Q29udGV4dCgpKQorICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IHBvc1pP
cmRlckxpc3QtPmF0KGkpOworICAgICAgICAgICAgaWYgKCFjdXJyZW50TGF5ZXItPmlzU3RhY2tp
bmdDb250ZXh0KElnbm9yZUNvbXBvc2l0ZWRTY3JvbGxpbmcpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgbG9va3VwLnNldChjdXJyZW50TGF5ZXIsIHN0YWNraW5nT3Jk
ZXJJbmRleCsrKTsKICAgICAgICAgfQpAQCAtNjM5LDcgKzY0Myw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpCiAKIHZv
aWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdP
cmRlclJlY3Vyc2l2ZShjb25zdCBIYXNoTWFwPGNvbnN0IFJlbmRlckxheWVyKiwgaW50PiYgbG9v
a3VwLCBpbnQmIG1pbkluZGV4LCBpbnQmIG1heEluZGV4LCBpbnQmIGNvdW50LCBib29sIGZpcnN0
SXRlcmF0aW9uKQogewotICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCgpICYmICFmaXJzdEl0ZXJh
dGlvbikgeworICAgIGlmIChpc1N0YWNraW5nQ29udGV4dChJZ25vcmVDb21wb3NpdGVkU2Nyb2xs
aW5nKSAmJiAhZmlyc3RJdGVyYXRpb24pIHsKICAgICAgICAgaWYgKGxvb2t1cC5jb250YWlucyh0
aGlzKSkgewogICAgICAgICAgICAgbWluSW5kZXggPSBzdGQ6Om1pbihtaW5JbmRleCwgbG9va3Vw
LmdldCh0aGlzKSk7CiAgICAgICAgICAgICBtYXhJbmRleCA9IHN0ZDo6bWF4KG1heEluZGV4LCBs
b29rdXAuZ2V0KHRoaXMpKTsKQEAgLTY2MCw3ICs2NjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJSZWN1cnNpdmUoY29u
c3QgSAogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFpc1N0YWNraW5nQ29udGV4dCgpKSB7
CisgICAgaWYgKCFpc1N0YWNraW5nQ29udGV4dChJZ25vcmVDb21wb3NpdGVkU2Nyb2xsaW5nKSkg
ewogICAgICAgICBib29sIG5ld1ZhbHVlID0gbWF4SW5kZXggLSBtaW5JbmRleCA9PSBjb3VudDsK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIGJvb2wgZGlkVXBkYXRl
ID0gbmV3VmFsdWUgIT0gbV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXI7
CkBAIC05MjcsNyArOTMxLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUGFnaW5hdGlvbigp
CiAKIGJvb2wgUmVuZGVyTGF5ZXI6OmNhblNhZmVseUVzdGFibGlzaEFTdGFja2luZ0NvbnRleHQo
KSBjb25zdAogewotICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFzdGFja2luZ0NvbnRl
eHQoKSkKKyAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQoSWdub3JlQ29tcG9zaXRlZFNjcm9sbGlu
ZykgfHwgIXN0YWNraW5nQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJl
dHVybiBtX2Rlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcjsKQEAgLTE5MTEs
OCArMTkxNSwxOCBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcoKQogI2VuZGlmCiAgICAgfQogCi0gICAgaWYgKG9sZE5lZWRzQ29tcG9zaXRlZFNjcm9s
bGluZyAhPSBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykKKyAgICBpZiAob2xkTmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nICE9IG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKSB7CiAgICAgICAg
IHVwZGF0ZVNlbGZQYWludGluZ0xheWVyKCk7CisgICAgICAgIGlmIChpc1N0YWNraW5nQ29udGV4
dCgpKQorICAgICAgICAgICAgZGlydHlaT3JkZXJMaXN0cygpOworICAgICAgICBSZW5kZXJMYXll
ciogc2MgPSBzdGFja2luZ0NvbnRleHQoKTsKKyAgICAgICAgaWYgKHNjKSB7CisgICAgICAgICAg
ICBzYy0+ZGlydHlaT3JkZXJMaXN0cygpOworICAgICAgICAgICAgc2MtPmRpcnR5Tm9ybWFsRmxv
d0xpc3QoKTsKKyAgICAgICAgfQorICAgICAgICBjb21wb3NpdG9yKCktPnNldENvbXBvc2l0aW5n
TGF5ZXJzTmVlZFJlYnVpbGQoKTsKKyAgICAgICAgY29tcG9zaXRvcigpLT5zZXRTaG91bGRSZWV2
YWx1YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCgpOworICAgIH0KIH0KICNlbmRpZgogCkBAIC0y
MjEwLDcgKzIyMjQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVDb21wb3NpdGluZ0xheWVy
c0FmdGVyU2Nyb2xsKCkKICAgICAgICAgLy8gT3VyIHN0YWNraW5nIGNvbnRleHQgaXMgZ3VhcmFu
dGVlZCB0byBjb250YWluIGFsbCBvZiBvdXIgZGVzY2VuZGFudHMgdGhhdCBtYXkgbmVlZAogICAg
ICAgICAvLyByZXBvc2l0aW9uaW5nLCBzbyB1cGRhdGUgY29tcG9zaXRpbmcgbGF5ZXJzIGZyb20g
dGhlcmUuCiAgICAgICAgIGlmIChSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlc3RvciA9IHN0
YWNraW5nQ29udGV4dCgpLT5lbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyKCkpIHsKLSAgICAgICAg
ICAgIGlmIChjb21wb3NpdG9yKCktPmNvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFwKCkpCisgICAg
ICAgICAgICBpZiAoY29tcG9zaXRvcigpLT5jb21wb3NpdGluZ0NvbnN1bHRzT3ZlcmxhcCgpICYm
ICF1c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpKQogICAgICAgICAgICAgICAgIGNvbXBvc2l0b3Io
KS0+dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVPblNjcm9sbCwgY29t
cG9zaXRpbmdBbmNlc3Rvcik7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgY29t
cG9zaXRpbmdBbmNlc3Rvci0+YmFja2luZygpLT51cGRhdGVBZnRlckxheW91dChSZW5kZXJMYXll
ckJhY2tpbmc6OklzVXBkYXRlUm9vdCk7CkBAIC01MTE1LDcgKzUxMjksMTIgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKIHsKICAgICBBU1NFUlQobV9sYXllckxpc3RN
dXRhdGlvbkFsbG93ZWQpOwogICAgIEFTU0VSVChpc0RpcnR5U3RhY2tpbmdDb250ZXh0KCkpOwor
ICAgIHJlYnVpbGRaT3JkZXJMaXN0cyhDb25zaWRlckNvbXBvc2l0ZWRTY3JvbGxpbmcsIG1fcG9z
Wk9yZGVyTGlzdCwgbV9uZWdaT3JkZXJMaXN0KTsKKyAgICBtX3pPcmRlckxpc3RzRGlydHkgPSBm
YWxzZTsKK30KIAordm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKElzU3RhY2tp
bmdDb250ZXh0QmVoYXZpb3IgYmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+
JiBwb3NaT3JkZXJMaXN0LCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgbmVnWk9yZGVy
TGlzdCkKK3sKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBpbmNs
dWRlSGlkZGVuTGF5ZXJzID0gY29tcG9zaXRvcigpLT5pbkNvbXBvc2l0aW5nTW9kZSgpOwogI2Vs
c2UKQEAgLTUxMjMsMTQgKzUxNDIsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRl
ckxpc3RzKCkKICNlbmRpZgogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGls
ZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgaWYgKCFt
X3JlZmxlY3Rpb24gfHwgcmVmbGVjdGlvbkxheWVyKCkgIT0gY2hpbGQpCi0gICAgICAgICAgICBj
aGlsZC0+Y29sbGVjdExheWVycyhpbmNsdWRlSGlkZGVuTGF5ZXJzLCBtX3Bvc1pPcmRlckxpc3Qs
IG1fbmVnWk9yZGVyTGlzdCk7CisgICAgICAgICAgICBjaGlsZC0+Y29sbGVjdExheWVycyhpbmNs
dWRlSGlkZGVuTGF5ZXJzLCBiZWhhdmlvciwgcG9zWk9yZGVyTGlzdCwgbmVnWk9yZGVyTGlzdCk7
CiAKICAgICAvLyBTb3J0IHRoZSB0d28gbGlzdHMuCi0gICAgaWYgKG1fcG9zWk9yZGVyTGlzdCkK
LSAgICAgICAgc3RkOjpzdGFibGVfc29ydChtX3Bvc1pPcmRlckxpc3QtPmJlZ2luKCksIG1fcG9z
Wk9yZGVyTGlzdC0+ZW5kKCksIGNvbXBhcmVaSW5kZXgpOworICAgIGlmIChwb3NaT3JkZXJMaXN0
KQorICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KHBvc1pPcmRlckxpc3QtPmJlZ2luKCksIHBvc1pP
cmRlckxpc3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKIAotICAgIGlmIChtX25lZ1pPcmRlckxp
c3QpCi0gICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9uZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBt
X25lZ1pPcmRlckxpc3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKKyAgICBpZiAobmVnWk9yZGVy
TGlzdCkKKyAgICAgICAgc3RkOjpzdGFibGVfc29ydChuZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBu
ZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAKICNpZiBFTkFCTEUoRElBTE9H
X0VMRU1FTlQpCiAgICAgLy8gQXBwZW5kIGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGFm
dGVyIG5vcm1hbCBsYXllciBjb2xsZWN0aW9uLCB0byBlbnN1cmUgdGhleSBhcmUgb24gdG9wIHJl
Z2FyZGxlc3Mgb2Ygei1pbmRleGVzLgpAQCAtNTE0MSwxMyArNTE2MCwxMiBAQCB2b2lkIFJlbmRl
ckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoKQogICAgICAgICAgICAgRWxlbWVudCogY2hpbGRF
bGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KGNoaWxk
LT5ub2RlKCkpIDogMDsKICAgICAgICAgICAgIGlmIChjaGlsZEVsZW1lbnQgJiYgY2hpbGRFbGVt
ZW50LT5pc0luVG9wTGF5ZXIoKSkgewogICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBsYXll
ciA9IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChjaGlsZCktPmxheWVyKCk7Ci0gICAgICAgICAg
ICAgICAgbV9wb3NaT3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOworICAgICAgICAgICAgICAgIHBv
c1pPcmRlckxpc3QtPmFwcGVuZChsYXllcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAjZW5kaWYKIAotICAgIG1fek9yZGVyTGlzdHNEaXJ0eSA9IGZhbHNlOwogfQogCiB2b2lk
IFJlbmRlckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCgpCkBAIC01MTY5LDcgKzUxODcsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOb3JtYWxGbG93TGlzdCgpCiAgICAgbV9ub3JtYWxG
bG93TGlzdERpcnR5ID0gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXll
cnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4g
PiYgcG9zQnVmZmVyLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgbmVnQnVmZmVyKQor
dm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMs
IElzU3RhY2tpbmdDb250ZXh0QmVoYXZpb3IgYmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVy
TGF5ZXIqPiA+JiBwb3NCdWZmZXIsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiBuZWdC
dWZmZXIpCiB7CiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQogICAgIGlmIChpc0luVG9wTGF5
ZXIoKSkKQEAgLTUxOTQsMTkgKzUyMTIsMTggQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExh
eWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIE93blB0cjxWZWN0b3I8UmVuZGVyTGEKIAog
ICAgIC8vIFJlY3VyIGludG8gb3VyIGNoaWxkcmVuIHRvIGNvbGxlY3QgbW9yZSBsYXllcnMsIGJ1
dCBvbmx5IGlmIHdlIGRvbid0IGVzdGFibGlzaAogICAgIC8vIGEgc3RhY2tpbmcgY29udGV4dC4K
LSAgICBpZiAoKGluY2x1ZGVIaWRkZW5MYXllcnMgfHwgbV9oYXNWaXNpYmxlRGVzY2VuZGFudCkg
JiYgIWlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICBpZiAoKGluY2x1ZGVIaWRkZW5MYXllcnMg
fHwgbV9oYXNWaXNpYmxlRGVzY2VuZGFudCkgJiYgIWlzU3RhY2tpbmdDb250ZXh0KGJlaGF2aW9y
KSkgewogICAgICAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKICAgICAgICAgICAgIC8vIElnbm9y
ZSByZWZsZWN0aW9ucy4KICAgICAgICAgICAgIGlmICghbV9yZWZsZWN0aW9uIHx8IHJlZmxlY3Rp
b25MYXllcigpICE9IGNoaWxkKQotICAgICAgICAgICAgICAgIGNoaWxkLT5jb2xsZWN0TGF5ZXJz
KGluY2x1ZGVIaWRkZW5MYXllcnMsIHBvc0J1ZmZlciwgbmVnQnVmZmVyKTsKKyAgICAgICAgICAg
ICAgICBjaGlsZC0+Y29sbGVjdExheWVycyhpbmNsdWRlSGlkZGVuTGF5ZXJzLCBiZWhhdmlvciwg
cG9zQnVmZmVyLCBuZWdCdWZmZXIpOwogICAgICAgICB9CiAgICAgfQogfQogCiB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogewotICAgIGJvb2wgc2hvdWxkVXBk
YXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyID0gaXNTdGFja2luZ0Nv
bnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7
Ci0KKyAgICBib29sIHNob3VsZFVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tp
bmdPcmRlciA9IGlzU3RhY2tpbmdDb250ZXh0KElnbm9yZUNvbXBvc2l0ZWRTY3JvbGxpbmcpICYm
IChtX3pPcmRlckxpc3RzRGlydHkgfHwgbV9ub3JtYWxGbG93TGlzdERpcnR5KTsgCiAgICAgdXBk
YXRlWk9yZGVyTGlzdHMoKTsKICAgICB1cGRhdGVOb3JtYWxGbG93TGlzdCgpOwogCkBAIC01MjE1
LDggKzUyMzIsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVk
KCkKICAgICAgICAgcmVmbGVjdGlvbkxheWVyLT51cGRhdGVOb3JtYWxGbG93TGlzdCgpOwogICAg
IH0KIAotICAgIGlmIChzaG91bGRVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNr
aW5nT3JkZXIpCisgICAgaWYgKHNob3VsZFVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0lu
U3RhY2tpbmdPcmRlcikgewogICAgICAgICB1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJ
blN0YWNraW5nT3JkZXIoKTsKKyAgICAgICAgLy8gVGhlIGFib3ZlIGZ1bmN0aW9uIGNhbiBjYXVz
ZSB1cyB0byB1cGRhdGUgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcKKyAgICAgICAgLy8gYW5k
IGRpcnR5IG91ciBsYXllciBsaXN0cy4gUmVmcmVzaCB0aGVtIGlmIG5lY2Vzc2FyeS4KKyAgICAg
ICAgdXBkYXRlWk9yZGVyTGlzdHMoKTsKKyAgICAgICAgdXBkYXRlTm9ybWFsRmxvd0xpc3QoKTsK
KyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJM
aXN0c0lmTmVlZGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXgg
ZGY0OTIwMTg0NGJhYjhlMGFlYjRlZGM2N2E3MDMxNzE4NjNlN2I3Zi4uNGM5MjY1ZWE0ZmMxNmE0
ZWQ4YzVkOWRlZmVlZmIzNDMzZWFkNTkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKQEAgLTQzMCw3ICs0MzAsMTEgQEAgcHVibGljOgogICAgIC8vIEdldCB0aGUgZW5j
bG9zaW5nIHN0YWNraW5nIGNvbnRleHQgZm9yIHRoaXMgbGF5ZXIuICBBIHN0YWNraW5nIGNvbnRl
eHQgaXMgYSBsYXllcgogICAgIC8vIHRoYXQgaGFzIGEgbm9uLWF1dG8gei1pbmRleC4KICAgICBS
ZW5kZXJMYXllciogc3RhY2tpbmdDb250ZXh0KCkgY29uc3Q7Ci0gICAgYm9vbCBpc1N0YWNraW5n
Q29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGlzU3RhY2tpbmdDb250ZXh0KHJlbmRlcmVyKCktPnN0
eWxlKCkpOyB9CisgICAgZW51bSBJc1N0YWNraW5nQ29udGV4dEJlaGF2aW9yIHsgSWdub3JlQ29t
cG9zaXRlZFNjcm9sbGluZywgQ29uc2lkZXJDb21wb3NpdGVkU2Nyb2xsaW5nIH07CisgICAgYm9v
bCBpc1N0YWNraW5nQ29udGV4dChJc1N0YWNraW5nQ29udGV4dEJlaGF2aW9yIGJlaGF2aW9yID0g
Q29uc2lkZXJDb21wb3NpdGVkU2Nyb2xsaW5nKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IGlzU3RhY2tpbmdDb250ZXh0KHJlbmRlcmVyKCktPnN0eWxlKCksIGJlaGF2aW9yKTsKKyAgICB9
CiAKICAgICB2b2lkIGRpcnR5Wk9yZGVyTGlzdHMoKTsKICAgICB2b2lkIGRpcnR5U3RhY2tpbmdD
b250ZXh0Wk9yZGVyTGlzdHMoKTsKQEAgLTczMCwxMSArNzM0LDE3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdm9pZCB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHZvaWQgcmVidWlsZFpPcmRl
ckxpc3RzKCk7CisgICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoSXNTdGFja2luZ0NvbnRleHRC
ZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mLCBPd25QdHI8VmVjdG9yPFJl
bmRlckxheWVyKj4gPiYpOwogICAgIHZvaWQgY2xlYXJaT3JkZXJMaXN0cygpOwogCiAgICAgdm9p
ZCB1cGRhdGVOb3JtYWxGbG93TGlzdCgpOwogCi0gICAgYm9vbCBpc1N0YWNraW5nQ29udGV4dChj
b25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0IHsgcmV0dXJuICFzdHlsZS0+aGFzQXV0b1pJ
bmRleCgpIHx8IGlzUm9vdExheWVyKCk7IH0KKyAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0KGNv
bnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgSXNTdGFja2luZ0NvbnRleHRCZWhhdmlvciBiZWhhdmlv
ciA9IENvbnNpZGVyQ29tcG9zaXRlZFNjcm9sbGluZykgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiAhc3R5bGUtPmhhc0F1dG9aSW5kZXgoKQorICAgICAgICAgICAgfHwgaXNSb290TGF5ZXIo
KQorICAgICAgICAgICAgfHwgKChiZWhhdmlvciA9PSBDb25zaWRlckNvbXBvc2l0ZWRTY3JvbGxp
bmcpICYmIG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpKTsKKyAgICB9CiAgICAgYm9vbCBpc0Rp
cnR5U3RhY2tpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV96T3JkZXJMaXN0c0RpcnR5ICYm
IGlzU3RhY2tpbmdDb250ZXh0KCk7IH0KIAogICAgIHZvaWQgc2V0QW5jZXN0b3JDaGFpbkhhc1Nl
bGZQYWludGluZ0xheWVyRGVzY2VuZGFudCgpOwpAQCAtNzk5LDcgKzgwOSw3IEBAIHByaXZhdGU6
CiAgICAgTGF5b3V0VW5pdCByZW5kZXJCb3hYKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyQm94TG9j
YXRpb24oKS54KCk7IH0KICAgICBMYXlvdXRVbml0IHJlbmRlckJveFkoKSBjb25zdCB7IHJldHVy
biByZW5kZXJCb3hMb2NhdGlvbigpLnkoKTsgfQogCi0gICAgdm9pZCBjb2xsZWN0TGF5ZXJzKGJv
b2wgaW5jbHVkZUhpZGRlbkxheWVycywgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mLCBP
d25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYpOworICAgIHZvaWQgY29sbGVjdExheWVycyhi
b29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIElzU3RhY2tpbmdDb250ZXh0QmVoYXZpb3IsIE93blB0
cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4m
KTsKIAogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdBbmRMYXllckxpc3RzSWZOZWVkZWQoKTsK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDBmMWVkNTNjMGFhY2MxOWFjMDAyZWU5ZTBmOWFjOTUyZGFlOTQ5ODQuLmRkZDQ3
NjUzYTE4MjExMDRjMTEyOTRjZjI2M2M0ZmZkOGMwM2YxM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBA
QAorMjAxMy0wMS0xMyAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBQcm9tb3RlIGNvbXBvc2l0ZWQtc2Nyb2xsaW5nIGxheWVycyB0byBzdGFja2luZyBjb250
ZXh0cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NjE0MgorCisgICAgICAgIFdoZW4gd2UgYXV0b21hdGljYWxseSBvcHQgaW50byBjb21wb3NpdGVk
IHNjcm9sbGluZywgd2UndmUgZGV0ZXJtaW5lZAorICAgICAgICB0aGF0IGl0J3Mgc2FmZSB0byBi
ZWNvbWUgYSBzdGFja2luZyBjb250ZXh0IChpZiBpdCdzIG5vdCwgd2UgZ2V0CisgICAgICAgIHJl
bmRlcmluZyBpc3N1ZXMgd2hlbiB3ZSBwcm9tb3RlKSwgYnV0IHByZXZpb3VzbHksIHdlIGRpZG4n
dCBhY3R1YWxseQorICAgICAgICBwcm9tb3RlIHRoZSBsYXllciB0byBiZSBhIHN0YWNraW5nIGNv
bnRleHQuIFRoaXMgaGFkIGEgbnVtYmVyIG9mCisgICAgICAgIHVuZm9ydHVuYXRlIHNpZGUgZWZm
ZWN0cy4gVGhlIG1haW4gcHJvYmxlbSB3YXMgdGhhdCB3aGVuIGNvbXB1dGluZyAKKyAgICAgICAg
b3ZlcmxhcCBpbiB0aGUgUmVuZGVyTGF5ZXJDb21wb3NpdG9yLCB0aGUgbm93IGNvbXBvc2l0ZWQg
c2Nyb2xsaW5nCisgICAgICAgIGxheWVyJ3MgZGVzY2VuZGFudHMgd2VyZSBub3QgcHJvY2Vzc2Vk
IGJ5IHRyYXZlcnNpbmcgaXRzIGxheWVyIGxpc3RzLAorICAgICAgICBidXQgcmF0aGVyIGl0cyBz
dGFja2luZyBjb250ZXh0J3MuIFNvIHdoYXQgd291bGQgaGFwcGVuIGlzIHRoYXQgd2UKKyAgICAg
ICAgd291bGQgcHVzaCBvbnRvIHRoZSBvdmVybGFwIG1hcCBzdGFjayB3aGVuIHByb2Nlc3Npbmcg
dGhlIG5lZyB6LW9yZGVyCisgICAgICAgIGFuZCBub3JtYWwgZmxvdyBkZXNjZW5kYW50cywgYnV0
IHdlIHdvdWxkIHBvcCBiZWZvcmUgcHJvY2Vzc2luZyB0aGUKKyAgICAgICAgc3RhY2tpbmcgY29u
dGV4dCdzIHBvcyB6LW9yZGVyIGxpc3QuIFdoZW4gdGhpcyBwb3AgaGFwcGVucywgdGhlCisgICAg
ICAgIHByZXZpb3VzbHkgY29tcHV0ZWQgb3ZlcmxhcCByZWdpb25zICd0YWtlIGVmZmVjdCcuIFRo
aXMgbWVhbnMgdGhhdCBpZgorICAgICAgICBhbnkgb2YgdGhlIG5vcm1hbCBmbG93IG9yIG5lZyB6
LW9yZGVyIGRlc2NlbmRhbnRzIHdlcmUgY29tcG9zaXRlZCwgYW55IAorICAgICAgICBwb3NpdGl2
ZSB6LW9yZGVyIGRlc2NlbmRhbnRzIHdvdWxkIGdldCBwcm9tb3RlZCBpZiB0aGV5IG92ZXJsYXBw
ZWQuCisgICAgICAgIElmIHdlIHByb21vdGUgdGhlIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIGxheWVy
IHRvIGEgc3RhY2tpbmcgY29udGV4dCwgdGhpcworICAgICAgICBwb3Agbm8gbG9uZ2VyIGhhcHBl
bnMgYXQgYW4gdW5mb3J0dW5hdGUgdGltZSwgYW5kIHNvIGl0cyBkZXNjZW5kYW50cworICAgICAg
ICBjYW4ndCBpbmNvcnJlY3RseSBjYXVzZSBlYWNoIG90aGVyIHRvIGJlIHByb21vdGVkIGR1ZSB0
byBvdmVybGFwLgorCisgICAgICAgIE9uZSB0cmlja3kgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZSBj
b2RlIGZvciBhdXRvbWF0aWNhbGx5IG9wdGluZyBpbnRvCisgICAgICAgIGNvbXBvc2l0ZWQgc2Ny
b2xsaW5nIHVzZXMgaXNTdGFja2luZ0NvbnRleHQgdG8gZG8gaXRzIGNhbGN1bGF0aW9ucy4gSXQK
KyAgICAgICAgYWxzbyB1c2VzIGxheWVyIGxpc3RzIHRoYXQgYXJlIGNvbXB1dGVkIGluIHdheXMg
dGhhdCBkZXBlbmQgb24gdGhlCisgICAgICAgIHZhbHVlIG9mIGlzU3RhY2tpbmdDb250ZXh0LiBT
byB0aGlzIGZ1bmN0aW9uIG5lZWRlZCB0byBiZSBtb2RpZmllZCB0bworICAgICAgICBjb25kaXRp
b25hbGx5IGNvbnNpZGVyIHdoZXRoZXIgb3Igbm90IGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIHNob3Vs
ZAorICAgICAgICBhZmZlY3Qgd2hldGhlciB0aGUgbGF5ZXIgaXMgYSBzdGFja2luZyBjb250ZXh0
LgorCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmct
Y3JlYXRlcy1hLXN0YWNraW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBjb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3Rh
Y2tpbmctY29udGV4dC5odG1sOiBBZGRlZC4KKwogMjAxMy0wMS0xMCAgQWxleGFuZGVyIFBhdmxv
diAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENTU1BhcnNlciBkb2VzIG5vdCBh
bGxvdyB0aGUgYWJzZW5jZSBvZiB3aGl0ZXNwYWNlIGJldHdlZW4gImFuZCIgYW5kICJleHByZXNz
aW9uIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9z
aXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3Jl
YXRlcy1hLXN0YWNraW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ODM4ZTg0
YjE4MGU5MTA3MGY3YzI2ZDAwNmNhNTU3ZmFiMzI1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVz
LWEtc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorKEdyYXBo
aWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChH
cmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY2hpbGRy
ZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiAyOC4wMCAy
MC4wMCkKKyAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAgICAgKGRyYXdz
Q29udGVudCAxKQorICAgICAgICAgIChjaGlsZHJlbiA0CisgICAgICAgICAgICAoR3JhcGhpY3NM
YXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gMS4wMCAxLjAwKQorICAgICAgICAgICAgICAo
Ym91bmRzIDIwMC4wMCAyMDAuMDApCisgICAgICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAg
ICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAw
IDMwMC4wMCkKKyAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAg
ICAgICAgIChjaGlsZHJlbiAyCisgICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDIuMDAgMjAyLjAwKQorICAgICAgICAgICAg
ICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAgICAgIChib3Vu
ZHMgMjAwLjAwIDE1MC4wMCkKKyAgICAgICAgICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEp
CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIChHcmFw
aGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDE4Ni4wMCkKKyAgICAgICAg
ICAgICAgKGJvdW5kcyAxODUuMDAgMTUuMDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQg
MSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAg
ICAgIChwb3NpdGlvbiAxODYuMDAgMS4wMCkKKyAgICAgICAgICAgICAgKGJvdW5kcyAxNS4wMCAx
ODUuMDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICkKKyAg
ICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxODYuMDAg
MTg2LjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDE1LjAwIDE1LjAwKQorICAgICAgICAgICAg
ICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICApCisgICAgICAgICAgKQorICAgICAgICAp
CisgICAgICApCisgICAgKQorICApCispCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5n
LWNvbnRleHQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0
ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YjdmOGViOWZlY2Y1ODM2MGQwMDc5NDg3ZDQ1ZTIxYjMyMDY2ZDIzMwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5n
LWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWwKQEAgLTAsMCArMSw3NiBAQAorPCFET0NU
WVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIK
KyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8aHRtbCBsYW5n
PSJlbiI+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz4KKyAgPHRpdGxlPkNvbXBvc2l0ZWQgc2Nyb2xs
aW5nIGNyZWF0ZXMgYSBzdGFja2luZyBjb250ZXh0LjwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmNvbnRhaW5lciB7CisgICAgICB3aWR0aDog
MjAwcHg7CisgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAg
ICAgIG1hcmdpbjogMjBweDsKKyAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIH0K
KworICAgIC5jb21wb3NpdGVkIHsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDog
MTUwcHg7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIGJh
Y2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKworICAgIC5ub3QtY29tcG9zaXRlZCB7Cisg
ICAgICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6IDE1MHB4OworICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogYmx1ZTsKKyAgICB9CisKKyAgICAuaW4tZmxvdy1wb3NpdGlvbmVkIHsKKyAgICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgIH0KKworICAg
IC5maXhlZCB7CisgICAgICB6LWluZGV4OiAtMTsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
KyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5h
bHMpCisgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBkb1Rl
c3QoKQorICAgIHsKKyAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworCisgICAgICBpZiAo
d2luZG93LmludGVybmFscykgeworICAgICAgICB2YXIgbGF5ZXJUcmVlID0gd2luZG93LmludGVy
bmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICB2YXIgcHJlID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShsYXllclRyZWUgKyAnXG4nKTsKKyAgICAgICAgcHJlLmFwcGVuZENo
aWxkKHRleHQpOworICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVy
KCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
IDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgPGRpdiBjbGFzcz0iaW4tZmxvdy1wb3NpdGlv
bmVkIj4KKyAgICAgIDxkaXYgY2xhc3M9ImZpeGVkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8
ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJub3QtY29tcG9z
aXRlZCI+PC9kaXY+CisgIDwvZGl2PgorICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9k
eT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182623</attachid>
            <date>2013-01-14 13:47:20 -0800</date>
            <delta_ts>2013-01-16 13:52:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106142-20130114164420.patch</filename>
            <type>text/plain</type>
            <size>23895</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIxNzA4Y2ExNDllYjBj
MWQyNTRjMzdkNmExMWRlNzhkNzZkZmViYi4uNWJjZmI1Y2U1ZTg1M2QwOTVkMTQ0MTk0YWUzMDc2
NTNlMGM5ZmIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAxLTE0ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFByb21vdGUgY29tcG9z
aXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0YWNraW5nIGNvbnRleHRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTQyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB3ZSBhdXRvbWF0aWNhbGx5
IG9wdCBpbnRvIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLCB3ZSd2ZSBkZXRlcm1pbmVkCisgICAgICAg
IHRoYXQgaXQncyBzYWZlIHRvIGJlY29tZSBhIHN0YWNraW5nIGNvbnRleHQgKGlmIGl0J3Mgbm90
LCB3ZSBnZXQKKyAgICAgICAgcmVuZGVyaW5nIGlzc3VlcyB3aGVuIHdlIHByb21vdGUpLCBidXQg
cHJldmlvdXNseSwgd2UgZGlkbid0IGFjdHVhbGx5CisgICAgICAgIHByb21vdGUgdGhlIGxheWVy
IHRvIGJlIGEgc3RhY2tpbmcgY29udGV4dC4gVGhpcyBoYWQgYSBudW1iZXIgb2YKKyAgICAgICAg
dW5mb3J0dW5hdGUgc2lkZSBlZmZlY3RzLiBUaGUgbWFpbiBwcm9ibGVtIHdhcyB0aGF0IHdoZW4g
Y29tcHV0aW5nIAorICAgICAgICBvdmVybGFwIGluIHRoZSBSZW5kZXJMYXllckNvbXBvc2l0b3Is
IHRoZSBub3cgY29tcG9zaXRlZCBzY3JvbGxpbmcKKyAgICAgICAgbGF5ZXIncyBkZXNjZW5kYW50
cyB3ZXJlIG5vdCBwcm9jZXNzZWQgYnkgdHJhdmVyc2luZyBpdHMgbGF5ZXIgbGlzdHMsCisgICAg
ICAgIGJ1dCByYXRoZXIgaXRzIHN0YWNraW5nIGNvbnRleHQncy4gU28gd2hhdCB3b3VsZCBoYXBw
ZW4gaXMgdGhhdCB3ZQorICAgICAgICB3b3VsZCBwdXNoIG9udG8gdGhlIG92ZXJsYXAgbWFwIHN0
YWNrIHdoZW4gcHJvY2Vzc2luZyB0aGUgbmVnIHotb3JkZXIKKyAgICAgICAgYW5kIG5vcm1hbCBm
bG93IGRlc2NlbmRhbnRzLCBidXQgd2Ugd291bGQgcG9wIGJlZm9yZSBwcm9jZXNzaW5nIHRoZQor
ICAgICAgICBzdGFja2luZyBjb250ZXh0J3MgcG9zIHotb3JkZXIgbGlzdC4gV2hlbiB0aGlzIHBv
cCBoYXBwZW5zLCB0aGUKKyAgICAgICAgcHJldmlvdXNseSBjb21wdXRlZCBvdmVybGFwIHJlZ2lv
bnMgJ3Rha2UgZWZmZWN0Jy4gVGhpcyBtZWFucyB0aGF0IGlmCisgICAgICAgIGFueSBvZiB0aGUg
bm9ybWFsIGZsb3cgb3IgbmVnIHotb3JkZXIgZGVzY2VuZGFudHMgd2VyZSBjb21wb3NpdGVkLCBh
bnkgCisgICAgICAgIHBvc2l0aXZlIHotb3JkZXIgZGVzY2VuZGFudHMgd291bGQgZ2V0IHByb21v
dGVkIGlmIHRoZXkgb3ZlcmxhcHBlZC4KKyAgICAgICAgSWYgd2UgcHJvbW90ZSB0aGUgY29tcG9z
aXRlZCBzY3JvbGxpbmcgbGF5ZXIgdG8gYSBzdGFja2luZyBjb250ZXh0LCB0aGlzCisgICAgICAg
IHBvcCBubyBsb25nZXIgaGFwcGVucyBhdCBhbiB1bmZvcnR1bmF0ZSB0aW1lLCBhbmQgc28gaXRz
IGRlc2NlbmRhbnRzCisgICAgICAgIGNhbid0IGluY29ycmVjdGx5IGNhdXNlIGVhY2ggb3RoZXIg
dG8gYmUgcHJvbW90ZWQgZHVlIHRvIG92ZXJsYXAuCisKKyAgICAgICAgT25lIHRyaWNreSBwb2lu
dCBoZXJlIGlzIHRoYXQgdGhlIGNvZGUgZm9yIGF1dG9tYXRpY2FsbHkgb3B0aW5nIGludG8KKyAg
ICAgICAgY29tcG9zaXRlZCBzY3JvbGxpbmcgdXNlcyBpc1N0YWNraW5nQ29udGV4dCB0byBkbyBp
dHMgY2FsY3VsYXRpb25zLiBJdAorICAgICAgICBhbHNvIHVzZXMgbGF5ZXIgbGlzdHMgdGhhdCBh
cmUgY29tcHV0ZWQgaW4gd2F5cyB0aGF0IGRlcGVuZCBvbiB0aGUKKyAgICAgICAgdmFsdWUgb2Yg
aXNTdGFja2luZ0NvbnRleHQuIFNvIHRoaXMgZnVuY3Rpb24gbmVlZGVkIHRvIGJlIG1vZGlmaWVk
IHRvCisgICAgICAgIGNvbmRpdGlvbmFsbHkgY29uc2lkZXIgd2hldGhlciBvciBub3QgY29tcG9z
aXRlZCBzY3JvbGxpbmcgc2hvdWxkCisgICAgICAgIGFmZmVjdCB3aGV0aGVyIHRoZSBsYXllciBp
cyBhIHN0YWNraW5nIGNvbnRleHQuCisKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9vdmVy
Zmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC5odG1s
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdP
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNB
cmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjYW5TYWZlbHlFc3RhYmxpc2hBU3RhY2tpbmdDb250ZXh0KToKKyAgICAg
ICAgICBDaGFuZ2VkIHRvIGVuc3VyZSB0aGF0IHZhbHVlcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlv
biBkbyBub3QgdXNlIHRoZQorICAgICAgICAgIGZsYXZvciBvZiBpc1N0YWNraW5nQ29udGV4dCBh
ZmZlY3RlZCBieSBjb21wb3NpdGVkIHNjcm9sbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFNpbmNl
IHRoaXMgdXBkYXRlIGNhbiBhZmZlY3Qgb3VyIHN0YWNraW5nIGNvbnRleHQgc3RhdHVzLCBpdCBk
aXJ0aWVzCisgICAgICAgICAgdGhlIG5lY2Vzc2FyeSBsYXllciBsaXN0cyBhbmQgaW5mb3JtcyB0
aGUgY29tcG9zaXRvciBhYm91dCB0aGUKKyAgICAgICAgICB1cGRhdGVzIHRoYXQgYXJlIG5vdyBu
ZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxp
c3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAg
ICAgICAgICBSZWZhY3RvcmVkIHRvIGFsbG93IHotb3JkZXIgbGlzdHMgdGhhdCBkbyBub3QgZGVw
ZW5kIG9uIGNvbXBvc2l0ZWQKKyAgICAgICAgICBzY3JvbGxpbmcgdG8gYmUgY29tcHV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKToK
KyAgICAgICAgICBXaGVuIHRoZSBsYXllciBsaXN0cyBhcmUgdXBkYXRlZCwgd2UgbmVlZCB0byB1
cGRhdGUKKyAgICAgICAgICBtX2hhc091dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50LiBUaGlz
IGNhbiBub3cgYWZmZWN0IG91cgorICAgICAgICAgIHN0YWNraW5nLWNvbnRleHQgc3RhdHVzLCBz
byB3ZSBtYXkgbmVlZCB0byByZWNvbXB1dGUgdGhlIGxheWVyIGxpc3RzCisgICAgICAgICAgaWYg
dGhpcyBoYXBwZW5zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgICBD
b21wb3NpdGVkIHNjcm9sbGluZyBub3cgaW1wbGllcyBhIHN0YWNraW5nIGNvbnRleHQuCisgICAg
ICAgIChSZW5kZXJMYXllcik6CisKIDIwMTMtMDEtMTQgIEFudHRpIEtvaXZpc3RvICA8YW50dGlA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIxMzkyMTgpOiBGbGFreSBhc3NlcnRp
b24gaW4gV2ViQ29yZTo6U3RvcmFnZVRhc2s6OlN0b3JhZ2VUYXNrIHJlbGVhc2luZyBtZW1vcnkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVjMjg0MTZmN2Jk
NDg1MWNkZGNiY2Q2MzlhZWJkNDIzMjBjZjA5MjYuLjBjMzU3NmZiMWJiNmM5MzNhMmU3NDE4YmY0
YTM1ODUyNWRjNzg5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cApAQCAtNjAwLDMyICs2MDAsMzYgQEAgYm9vbCBSZW5kZXJMYXllcjo6YWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpIGNvbnN0CiAvLyAgQW5kIHdlIHdvdWxk
IGNvbmNsdWRlIHRoYXQgQyBjb3VsZCBiZSBwcm9tb3RlZC4KIHZvaWQgUmVuZGVyTGF5ZXI6OnVw
ZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpCiB7Ci0gICAgaWYg
KCFpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZs
b3dTY3JvbGxFbmFibGVkKCkpCisgICAgaWYgKCFpc1N0YWNraW5nQ29udGV4dChJZ25vcmVDb21w
b3NpdGVkU2Nyb2xsaW5nKSB8fCAhYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Ny
b2xsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1fbm9ybWFsRmxv
d0xpc3REaXJ0eSk7CiAgICAgQVNTRVJUKCFtX3pPcmRlckxpc3RzRGlydHkpOwogCisgICAgT3du
UHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4gcG9zWk9yZGVyTGlzdDsKKyAgICBPd25QdHI8VmVj
dG9yPFJlbmRlckxheWVyKj4gPiBuZWdaT3JkZXJMaXN0OworICAgIHJlYnVpbGRaT3JkZXJMaXN0
cyhJZ25vcmVDb21wb3NpdGVkU2Nyb2xsaW5nLCBwb3NaT3JkZXJMaXN0LCBuZWdaT3JkZXJMaXN0
KTsKKwogICAgIC8vIENyZWF0ZSBhIHJldmVyc2UgbG9va3VwLgogICAgIEhhc2hNYXA8Y29uc3Qg
UmVuZGVyTGF5ZXIqLCBpbnQ+IGxvb2t1cDsKIAotICAgIGlmIChtX25lZ1pPcmRlckxpc3QpIHsK
KyAgICBpZiAobmVnWk9yZGVyTGlzdCkgewogICAgICAgICBpbnQgc3RhY2tpbmdPcmRlckluZGV4
ID0gLTE7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG1fbmVnWk9yZGVyTGlzdC0+c2l6ZSgp
OworICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAg
UmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IG1fbmVnWk9yZGVyTGlzdC0+YXQobGlzdFNpemUg
LSBpIC0gMSk7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnRMYXllci0+aXNTdGFja2luZ0NvbnRl
eHQoKSkKKyAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJyZW50TGF5ZXIgPSBuZWdaT3JkZXJM
aXN0LT5hdChsaXN0U2l6ZSAtIGkgLSAxKTsKKyAgICAgICAgICAgIGlmICghY3VycmVudExheWVy
LT5pc1N0YWNraW5nQ29udGV4dChJZ25vcmVDb21wb3NpdGVkU2Nyb2xsaW5nKSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGxvb2t1cC5zZXQoY3VycmVudExheWVyLCBz
dGFja2luZ09yZGVySW5kZXgtLSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9wb3Na
T3JkZXJMaXN0KSB7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG1fcG9zWk9yZGVyTGlzdC0+
c2l6ZSgpOworICAgIGlmIChwb3NaT3JkZXJMaXN0KSB7CisgICAgICAgIHNpemVfdCBsaXN0U2l6
ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgaW50IHN0YWNraW5nT3JkZXJJbmRl
eCA9IDE7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewot
ICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IG1fcG9zWk9yZGVyTGlzdC0+
YXQoaSk7Ci0gICAgICAgICAgICBpZiAoIWN1cnJlbnRMYXllci0+aXNTdGFja2luZ0NvbnRleHQo
KSkKKyAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJyZW50TGF5ZXIgPSBwb3NaT3JkZXJMaXN0
LT5hdChpKTsKKyAgICAgICAgICAgIGlmICghY3VycmVudExheWVyLT5pc1N0YWNraW5nQ29udGV4
dChJZ25vcmVDb21wb3NpdGVkU2Nyb2xsaW5nKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIGxvb2t1cC5zZXQoY3VycmVudExheWVyLCBzdGFja2luZ09yZGVySW5kZXgr
Kyk7CiAgICAgICAgIH0KQEAgLTY0MCw3ICs2NDQsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKQogCiB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXJSZWN1
cnNpdmUoY29uc3QgSGFzaE1hcDxjb25zdCBSZW5kZXJMYXllciosIGludD4mIGxvb2t1cCwgaW50
JiBtaW5JbmRleCwgaW50JiBtYXhJbmRleCwgaW50JiBjb3VudCwgYm9vbCBmaXJzdEl0ZXJhdGlv
bikKIHsKLSAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQoKSAmJiAhZmlyc3RJdGVyYXRpb24pIHsK
KyAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQoSWdub3JlQ29tcG9zaXRlZFNjcm9sbGluZykgJiYg
IWZpcnN0SXRlcmF0aW9uKSB7CiAgICAgICAgIGlmIChsb29rdXAuY29udGFpbnModGhpcykpIHsK
ICAgICAgICAgICAgIG1pbkluZGV4ID0gc3RkOjptaW4obWluSW5kZXgsIGxvb2t1cC5nZXQodGhp
cykpOwogICAgICAgICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJbmRleCwgbG9va3VwLmdl
dCh0aGlzKSk7CkBAIC02NjEsNyArNjY1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVz
Y2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKGNvbnN0IEgKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGlmICghaXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlm
ICghaXNTdGFja2luZ0NvbnRleHQoSWdub3JlQ29tcG9zaXRlZFNjcm9sbGluZykpIHsKICAgICAg
ICAgYm9vbCBuZXdWYWx1ZSA9IG1heEluZGV4IC0gbWluSW5kZXggPT0gY291bnQ7CiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICAgICBib29sIGRpZFVwZGF0ZSA9IG5ld1Zh
bHVlICE9IG1fZGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyOwpAQCAtOTI4
LDcgKzkzMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVBhZ2luYXRpb24oKQogCiBib29s
IFJlbmRlckxheWVyOjpjYW5TYWZlbHlFc3RhYmxpc2hBU3RhY2tpbmdDb250ZXh0KCkgY29uc3QK
IHsKLSAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQoKSB8fCAhc3RhY2tpbmdDb250ZXh0KCkpCisg
ICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KElnbm9yZUNvbXBvc2l0ZWRTY3JvbGxpbmcpIHx8ICFz
dGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbV9k
ZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXI7CkBAIC0xOTEyLDggKzE5MTYs
MTggQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkK
ICNlbmRpZgogICAgIH0KIAotICAgIGlmIChvbGROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgIT0g
bV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpCisgICAgaWYgKG9sZE5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZyAhPSBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykgewogICAgICAgICB1cGRhdGVT
ZWxmUGFpbnRpbmdMYXllcigpOworICAgICAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQoKSkKKyAg
ICAgICAgICAgIGRpcnR5Wk9yZGVyTGlzdHMoKTsKKyAgICAgICAgUmVuZGVyTGF5ZXIqIHNjID0g
c3RhY2tpbmdDb250ZXh0KCk7CisgICAgICAgIGlmIChzYykgeworICAgICAgICAgICAgc2MtPmRp
cnR5Wk9yZGVyTGlzdHMoKTsKKyAgICAgICAgICAgIHNjLT5kaXJ0eU5vcm1hbEZsb3dMaXN0KCk7
CisgICAgICAgIH0KKyAgICAgICAgY29tcG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xheWVyc05l
ZWRSZWJ1aWxkKCk7CisgICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0U2hvdWxkUmVldmFsdWF0ZUNv
bXBvc2l0aW5nQWZ0ZXJMYXlvdXQoKTsKKyAgICB9CiB9CiAjZW5kaWYKIApAQCAtNTEyMCw3ICs1
MTM0LDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cygpCiB7CiAgICAg
QVNTRVJUKG1fbGF5ZXJMaXN0TXV0YXRpb25BbGxvd2VkKTsKICAgICBBU1NFUlQoaXNEaXJ0eVN0
YWNraW5nQ29udGV4dCgpKTsKKyAgICByZWJ1aWxkWk9yZGVyTGlzdHMoQ29uc2lkZXJDb21wb3Np
dGVkU2Nyb2xsaW5nLCBtX3Bvc1pPcmRlckxpc3QsIG1fbmVnWk9yZGVyTGlzdCk7CisgICAgbV96
T3JkZXJMaXN0c0RpcnR5ID0gZmFsc2U7Cit9CiAKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRa
T3JkZXJMaXN0cyhJc1N0YWNraW5nQ29udGV4dEJlaGF2aW9yIGJlaGF2aW9yLCBPd25QdHI8VmVj
dG9yPFJlbmRlckxheWVyKj4gPiYgcG9zWk9yZGVyTGlzdCwgT3duUHRyPFZlY3RvcjxSZW5kZXJM
YXllcio+ID4mIG5lZ1pPcmRlckxpc3QpCit7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgIGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycyA9IGNvbXBvc2l0b3IoKS0+aW5Db21w
b3NpdGluZ01vZGUoKTsKICNlbHNlCkBAIC01MTI4LDE0ICs1MTQ3LDE0IEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cygpCiAjZW5kaWYKICAgICBmb3IgKFJlbmRlckxheWVy
KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpCiAgICAgICAgIGlmICghbV9yZWZsZWN0aW9uIHx8IHJlZmxlY3Rpb25MYXllcigpICE9IGNo
aWxkKQotICAgICAgICAgICAgY2hpbGQtPmNvbGxlY3RMYXllcnMoaW5jbHVkZUhpZGRlbkxheWVy
cywgbV9wb3NaT3JkZXJMaXN0LCBtX25lZ1pPcmRlckxpc3QpOworICAgICAgICAgICAgY2hpbGQt
PmNvbGxlY3RMYXllcnMoaW5jbHVkZUhpZGRlbkxheWVycywgYmVoYXZpb3IsIHBvc1pPcmRlckxp
c3QsIG5lZ1pPcmRlckxpc3QpOwogCiAgICAgLy8gU29ydCB0aGUgdHdvIGxpc3RzLgotICAgIGlm
IChtX3Bvc1pPcmRlckxpc3QpCi0gICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9wb3NaT3JkZXJM
aXN0LT5iZWdpbigpLCBtX3Bvc1pPcmRlckxpc3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKKyAg
ICBpZiAocG9zWk9yZGVyTGlzdCkKKyAgICAgICAgc3RkOjpzdGFibGVfc29ydChwb3NaT3JkZXJM
aXN0LT5iZWdpbigpLCBwb3NaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAKLSAg
ICBpZiAobV9uZWdaT3JkZXJMaXN0KQotICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fbmVnWk9y
ZGVyTGlzdC0+YmVnaW4oKSwgbV9uZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7
CisgICAgaWYgKG5lZ1pPcmRlckxpc3QpCisgICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobmVnWk9y
ZGVyTGlzdC0+YmVnaW4oKSwgbmVnWk9yZGVyTGlzdC0+ZW5kKCksIGNvbXBhcmVaSW5kZXgpOwog
CiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQogICAgIC8vIEFwcGVuZCBsYXllcnMgZm9yIHRv
cCBsYXllciBlbGVtZW50cyBhZnRlciBub3JtYWwgbGF5ZXIgY29sbGVjdGlvbiwgdG8gZW5zdXJl
IHRoZXkgYXJlIG9uIHRvcCByZWdhcmRsZXNzIG9mIHotaW5kZXhlcy4KQEAgLTUxNDYsMTMgKzUx
NjUsMTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICAgICAgICAg
ICAgIEVsZW1lbnQqIGNoaWxkRWxlbWVudCA9IGNoaWxkLT5ub2RlKCktPmlzRWxlbWVudE5vZGUo
KSA/IHRvRWxlbWVudChjaGlsZC0+bm9kZSgpKSA6IDA7CiAgICAgICAgICAgICBpZiAoY2hpbGRF
bGVtZW50ICYmIGNoaWxkRWxlbWVudC0+aXNJblRvcExheWVyKCkpIHsKICAgICAgICAgICAgICAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QoY2hpbGQpLT5s
YXllcigpOwotICAgICAgICAgICAgICAgIG1fcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVyKTsK
KyAgICAgICAgICAgICAgICBwb3NaT3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3pPcmRlckxpc3RzRGlydHkg
PSBmYWxzZTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQpA
QCAtNTE3NCw3ICs1MTkyLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xp
c3QoKQogICAgIG1fbm9ybWFsRmxvd0xpc3REaXJ0eSA9IGZhbHNlOwogfQogCi12b2lkIFJlbmRl
ckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgT3duUHRyPFZl
Y3RvcjxSZW5kZXJMYXllcio+ID4mIHBvc0J1ZmZlciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXll
cio+ID4mIG5lZ0J1ZmZlcikKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBp
bmNsdWRlSGlkZGVuTGF5ZXJzLCBJc1N0YWNraW5nQ29udGV4dEJlaGF2aW9yIGJlaGF2aW9yLCBP
d25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgcG9zQnVmZmVyLCBPd25QdHI8VmVjdG9yPFJl
bmRlckxheWVyKj4gPiYgbmVnQnVmZmVyKQogewogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkK
ICAgICBpZiAoaXNJblRvcExheWVyKCkpCkBAIC01MTk5LDE5ICs1MjE3LDE4IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBPd25QdHI8
VmVjdG9yPFJlbmRlckxhCiAKICAgICAvLyBSZWN1ciBpbnRvIG91ciBjaGlsZHJlbiB0byBjb2xs
ZWN0IG1vcmUgbGF5ZXJzLCBidXQgb25seSBpZiB3ZSBkb24ndCBlc3RhYmxpc2gKICAgICAvLyBh
IHN0YWNraW5nIGNvbnRleHQuCi0gICAgaWYgKChpbmNsdWRlSGlkZGVuTGF5ZXJzIHx8IG1faGFz
VmlzaWJsZURlc2NlbmRhbnQpICYmICFpc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgaWYgKChp
bmNsdWRlSGlkZGVuTGF5ZXJzIHx8IG1faGFzVmlzaWJsZURlc2NlbmRhbnQpICYmICFpc1N0YWNr
aW5nQ29udGV4dChiZWhhdmlvcikpIHsKICAgICAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQg
PSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAg
ICAgICAgICAgICAvLyBJZ25vcmUgcmVmbGVjdGlvbnMuCiAgICAgICAgICAgICBpZiAoIW1fcmVm
bGVjdGlvbiB8fCByZWZsZWN0aW9uTGF5ZXIoKSAhPSBjaGlsZCkKLSAgICAgICAgICAgICAgICBj
aGlsZC0+Y29sbGVjdExheWVycyhpbmNsdWRlSGlkZGVuTGF5ZXJzLCBwb3NCdWZmZXIsIG5lZ0J1
ZmZlcik7CisgICAgICAgICAgICAgICAgY2hpbGQtPmNvbGxlY3RMYXllcnMoaW5jbHVkZUhpZGRl
bkxheWVycywgYmVoYXZpb3IsIHBvc0J1ZmZlciwgbmVnQnVmZmVyKTsKICAgICAgICAgfQogICAg
IH0KIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCkKIHsK
LSAgICBib29sIHNob3VsZFVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdP
cmRlciA9IGlzU3RhY2tpbmdDb250ZXh0KCkgJiYgKG1fek9yZGVyTGlzdHNEaXJ0eSB8fCBtX25v
cm1hbEZsb3dMaXN0RGlydHkpOwotCisgICAgYm9vbCBzaG91bGRVcGRhdGVEZXNjZW5kYW50c0Fy
ZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIgPSBpc1N0YWNraW5nQ29udGV4dChJZ25vcmVDb21w
b3NpdGVkU2Nyb2xsaW5nKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xp
c3REaXJ0eSk7IAogICAgIHVwZGF0ZVpPcmRlckxpc3RzKCk7CiAgICAgdXBkYXRlTm9ybWFsRmxv
d0xpc3QoKTsKIApAQCAtNTIyMCw4ICs1MjM3LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZUxheWVyTGlzdHNJZk5lZWRlZCgpCiAgICAgICAgIHJlZmxlY3Rpb25MYXllci0+dXBkYXRlTm9y
bWFsRmxvd0xpc3QoKTsKICAgICB9CiAKLSAgICBpZiAoc2hvdWxkVXBkYXRlRGVzY2VuZGFudHNB
cmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKQorICAgIGlmIChzaG91bGRVcGRhdGVEZXNjZW5k
YW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIpIHsKICAgICAgICAgdXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CisgICAgICAgIC8vIFRoZSBhYm92
ZSBmdW5jdGlvbiBjYW4gY2F1c2UgdXMgdG8gdXBkYXRlIG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nCisgICAgICAgIC8vIGFuZCBkaXJ0eSBvdXIgbGF5ZXIgbGlzdHMuIFJlZnJlc2ggdGhlbSBp
ZiBuZWNlc3NhcnkuCisgICAgICAgIHVwZGF0ZVpPcmRlckxpc3RzKCk7CisgICAgICAgIHVwZGF0
ZU5vcm1hbEZsb3dMaXN0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVD
b21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5oCmluZGV4IGI2YmM2MDgxN2M2ZjNhMzcyNTZlZjZiZWIyNjNkY2I0MjJiNDZk
OTIuLjZiMjJiNmUxZjhjMDRjMjMxZTMxZTc0MjUyZGExNzk0ZGRmOGNhOWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC00MzAsNyArNDMwLDExIEBAIHB1YmxpYzoK
ICAgICAvLyBHZXQgdGhlIGVuY2xvc2luZyBzdGFja2luZyBjb250ZXh0IGZvciB0aGlzIGxheWVy
LiAgQSBzdGFja2luZyBjb250ZXh0IGlzIGEgbGF5ZXIKICAgICAvLyB0aGF0IGhhcyBhIG5vbi1h
dXRvIHotaW5kZXguCiAgICAgUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGV4dCgpIGNvbnN0Owot
ICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBpc1N0YWNraW5nQ29u
dGV4dChyZW5kZXJlcigpLT5zdHlsZSgpKTsgfQorICAgIGVudW0gSXNTdGFja2luZ0NvbnRleHRC
ZWhhdmlvciB7IElnbm9yZUNvbXBvc2l0ZWRTY3JvbGxpbmcsIENvbnNpZGVyQ29tcG9zaXRlZFNj
cm9sbGluZyB9OworICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQoSXNTdGFja2luZ0NvbnRleHRC
ZWhhdmlvciBiZWhhdmlvciA9IENvbnNpZGVyQ29tcG9zaXRlZFNjcm9sbGluZykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBpc1N0YWNraW5nQ29udGV4dChyZW5kZXJlcigpLT5zdHlsZSgp
LCBiZWhhdmlvcik7CisgICAgfQogCiAgICAgdm9pZCBkaXJ0eVpPcmRlckxpc3RzKCk7CiAgICAg
dm9pZCBkaXJ0eVN0YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7CkBAIC03NTIsMTEgKzc1Niwx
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlWk9yZGVyTGlzdHMoKTsKICAg
ICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cygpOworICAgIHZvaWQgcmVidWlsZFpPcmRlckxpc3Rz
KElzU3RhY2tpbmdDb250ZXh0QmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+
JiwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mKTsKICAgICB2b2lkIGNsZWFyWk9yZGVy
TGlzdHMoKTsKIAogICAgIHZvaWQgdXBkYXRlTm9ybWFsRmxvd0xpc3QoKTsKIAotICAgIGJvb2wg
aXNTdGFja2luZ0NvbnRleHQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKSBjb25zdCB7IHJldHVy
biAhc3R5bGUtPmhhc0F1dG9aSW5kZXgoKSB8fCBpc1Jvb3RMYXllcigpOyB9CisgICAgYm9vbCBp
c1N0YWNraW5nQ29udGV4dChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIElzU3RhY2tpbmdDb250
ZXh0QmVoYXZpb3IgYmVoYXZpb3IgPSBDb25zaWRlckNvbXBvc2l0ZWRTY3JvbGxpbmcpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gIXN0eWxlLT5oYXNBdXRvWkluZGV4KCkKKyAgICAgICAg
ICAgIHx8IGlzUm9vdExheWVyKCkKKyAgICAgICAgICAgIHx8ICgoYmVoYXZpb3IgPT0gQ29uc2lk
ZXJDb21wb3NpdGVkU2Nyb2xsaW5nKSAmJiBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSk7Cisg
ICAgfQogICAgIGJvb2wgaXNEaXJ0eVN0YWNraW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1f
ek9yZGVyTGlzdHNEaXJ0eSAmJiBpc1N0YWNraW5nQ29udGV4dCgpOyB9CiAKICAgICB2b2lkIHNl
dEFuY2VzdG9yQ2hhaW5IYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnQoKTsKQEAgLTgyMSw3
ICs4MzEsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgcmVuZGVyQm94WCgpIGNvbnN0IHsg
cmV0dXJuIHJlbmRlckJveExvY2F0aW9uKCkueCgpOyB9CiAgICAgTGF5b3V0VW5pdCByZW5kZXJC
b3hZKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyQm94TG9jYXRpb24oKS55KCk7IH0KIAotICAgIHZv
aWQgY29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIE93blB0cjxWZWN0b3I8
UmVuZGVyTGF5ZXIqPiA+JiwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mKTsKKyAgICB2
b2lkIGNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBJc1N0YWNraW5nQ29u
dGV4dEJlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYsIE93blB0cjxWZWN0
b3I8UmVuZGVyTGF5ZXIqPiA+Jik7CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5
ZXJMaXN0c0lmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzNTZlNjA4MjgzMzVjOThiMTMxYjI3MGMyZTUw
YTExMWQ0OTZiNGFhLi5hMWIyNDhiMGQ5ZDliY2Y1YWJhMjMwOTY3ODU5ZmI5YWU2ZDA1OWUwIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTMtMDEtMTQgIElhbiBWb2xsaWNrICA8dm9sbGlja0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUHJvbW90ZSBjb21wb3NpdGVkLXNjcm9sbGluZyBsYXll
cnMgdG8gc3RhY2tpbmcgY29udGV4dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDYxNDIKKworICAgICAgICBXaGVuIHdlIGF1dG9tYXRpY2FsbHkg
b3B0IGludG8gY29tcG9zaXRlZCBzY3JvbGxpbmcsIHdlJ3ZlIGRldGVybWluZWQKKyAgICAgICAg
dGhhdCBpdCdzIHNhZmUgdG8gYmVjb21lIGEgc3RhY2tpbmcgY29udGV4dCAoaWYgaXQncyBub3Qs
IHdlIGdldAorICAgICAgICByZW5kZXJpbmcgaXNzdWVzIHdoZW4gd2UgcHJvbW90ZSksIGJ1dCBw
cmV2aW91c2x5LCB3ZSBkaWRuJ3QgYWN0dWFsbHkKKyAgICAgICAgcHJvbW90ZSB0aGUgbGF5ZXIg
dG8gYmUgYSBzdGFja2luZyBjb250ZXh0LiBUaGlzIGhhZCBhIG51bWJlciBvZgorICAgICAgICB1
bmZvcnR1bmF0ZSBzaWRlIGVmZmVjdHMuIFRoZSBtYWluIHByb2JsZW0gd2FzIHRoYXQgd2hlbiBj
b21wdXRpbmcgCisgICAgICAgIG92ZXJsYXAgaW4gdGhlIFJlbmRlckxheWVyQ29tcG9zaXRvciwg
dGhlIG5vdyBjb21wb3NpdGVkIHNjcm9sbGluZworICAgICAgICBsYXllcidzIGRlc2NlbmRhbnRz
IHdlcmUgbm90IHByb2Nlc3NlZCBieSB0cmF2ZXJzaW5nIGl0cyBsYXllciBsaXN0cywKKyAgICAg
ICAgYnV0IHJhdGhlciBpdHMgc3RhY2tpbmcgY29udGV4dCdzLiBTbyB3aGF0IHdvdWxkIGhhcHBl
biBpcyB0aGF0IHdlCisgICAgICAgIHdvdWxkIHB1c2ggb250byB0aGUgb3ZlcmxhcCBtYXAgc3Rh
Y2sgd2hlbiBwcm9jZXNzaW5nIHRoZSBuZWcgei1vcmRlcgorICAgICAgICBhbmQgbm9ybWFsIGZs
b3cgZGVzY2VuZGFudHMsIGJ1dCB3ZSB3b3VsZCBwb3AgYmVmb3JlIHByb2Nlc3NpbmcgdGhlCisg
ICAgICAgIHN0YWNraW5nIGNvbnRleHQncyBwb3Mgei1vcmRlciBsaXN0LiBXaGVuIHRoaXMgcG9w
IGhhcHBlbnMsIHRoZQorICAgICAgICBwcmV2aW91c2x5IGNvbXB1dGVkIG92ZXJsYXAgcmVnaW9u
cyAndGFrZSBlZmZlY3QnLiBUaGlzIG1lYW5zIHRoYXQgaWYKKyAgICAgICAgYW55IG9mIHRoZSBu
b3JtYWwgZmxvdyBvciBuZWcgei1vcmRlciBkZXNjZW5kYW50cyB3ZXJlIGNvbXBvc2l0ZWQsIGFu
eSAKKyAgICAgICAgcG9zaXRpdmUgei1vcmRlciBkZXNjZW5kYW50cyB3b3VsZCBnZXQgcHJvbW90
ZWQgaWYgdGhleSBvdmVybGFwcGVkLgorICAgICAgICBJZiB3ZSBwcm9tb3RlIHRoZSBjb21wb3Np
dGVkIHNjcm9sbGluZyBsYXllciB0byBhIHN0YWNraW5nIGNvbnRleHQsIHRoaXMKKyAgICAgICAg
cG9wIG5vIGxvbmdlciBoYXBwZW5zIGF0IGFuIHVuZm9ydHVuYXRlIHRpbWUsIGFuZCBzbyBpdHMg
ZGVzY2VuZGFudHMKKyAgICAgICAgY2FuJ3QgaW5jb3JyZWN0bHkgY2F1c2UgZWFjaCBvdGhlciB0
byBiZSBwcm9tb3RlZCBkdWUgdG8gb3ZlcmxhcC4KKworICAgICAgICBPbmUgdHJpY2t5IHBvaW50
IGhlcmUgaXMgdGhhdCB0aGUgY29kZSBmb3IgYXV0b21hdGljYWxseSBvcHRpbmcgaW50bworICAg
ICAgICBjb21wb3NpdGVkIHNjcm9sbGluZyB1c2VzIGlzU3RhY2tpbmdDb250ZXh0IHRvIGRvIGl0
cyBjYWxjdWxhdGlvbnMuIEl0CisgICAgICAgIGFsc28gdXNlcyBsYXllciBsaXN0cyB0aGF0IGFy
ZSBjb21wdXRlZCBpbiB3YXlzIHRoYXQgZGVwZW5kIG9uIHRoZQorICAgICAgICB2YWx1ZSBvZiBp
c1N0YWNraW5nQ29udGV4dC4gU28gdGhpcyBmdW5jdGlvbiBuZWVkZWQgdG8gYmUgbW9kaWZpZWQg
dG8KKyAgICAgICAgY29uZGl0aW9uYWxseSBjb25zaWRlciB3aGV0aGVyIG9yIG5vdCBjb21wb3Np
dGVkIHNjcm9sbGluZyBzaG91bGQKKyAgICAgICAgYWZmZWN0IHdoZXRoZXIgdGhlIGxheWVyIGlz
IGEgc3RhY2tpbmcgY29udGV4dC4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2Nv
bXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3Jv
bGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRleHQuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0
YWNraW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMy0wMS0xNCAgTGV2aSBX
ZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBnYXJk
ZW5pbmcuIFJlbW92aW5nIGVudHJ5IGZvciBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stc2Vx
dWVuY2VudW0uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZs
b3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRleHQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3Jv
bGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5ODM4ZTg0YjE4MGU5MTA3MGY3YzI2ZDAwNmNhNTU3ZmFiMzI1YTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGlu
Zy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBA
QAorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4g
MQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAg
ICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlv
biAyOC4wMCAyMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAg
ICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgIChjaGlsZHJlbiA0CisgICAgICAgICAgICAo
R3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gMS4wMCAxLjAwKQorICAgICAg
ICAgICAgICAoYm91bmRzIDIwMC4wMCAyMDAuMDApCisgICAgICAgICAgICAgIChjaGlsZHJlbiAx
CisgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgICAgIChib3Vu
ZHMgMjAwLjAwIDMwMC4wMCkKKyAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAg
ICAgICAgICAgICAgICAgIChjaGlsZHJlbiAyCisgICAgICAgICAgICAgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDIuMDAgMjAyLjAwKQorICAg
ICAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAg
ICAgIChib3VuZHMgMjAwLjAwIDE1MC4wMCkKKyAgICAgICAgICAgICAgICAgICAgICAoZHJhd3ND
b250ZW50IDEpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDE4Ni4wMCkK
KyAgICAgICAgICAgICAgKGJvdW5kcyAxODUuMDAgMTUuMDApCisgICAgICAgICAgICAgIChkcmF3
c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgICAgIChwb3NpdGlvbiAxODYuMDAgMS4wMCkKKyAgICAgICAgICAgICAgKGJvdW5k
cyAxNS4wMCAxODUuMDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlv
biAxODYuMDAgMTg2LjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDE1LjAwIDE1LjAwKQorICAg
ICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICApCisgICAgICAgICAgKQor
ICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1h
LXN0YWNraW5nLWNvbnRleHQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93
L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjdmOGViOWZlY2Y1ODM2MGQwMDc5NDg3ZDQ1ZTIxYjMyMDY2ZDIzMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQt
c2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWwKQEAgLTAsMCArMSw3NiBA
QAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlv
bmFsLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8
aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz4KKyAgPHRpdGxlPkNvbXBvc2l0
ZWQgc2Nyb2xsaW5nIGNyZWF0ZXMgYSBzdGFja2luZyBjb250ZXh0LjwvdGl0bGU+CisgIDxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmNvbnRhaW5lciB7CisgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgb3ZlcmZsb3c6IHNj
cm9sbDsKKyAgICAgIG1hcmdpbjogMjBweDsKKyAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OworICAgIH0KKworICAgIC5jb21wb3NpdGVkIHsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAg
IGhlaWdodDogMTUwcHg7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsK
KyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKworICAgIC5ub3QtY29tcG9z
aXRlZCB7CisgICAgICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6IDE1MHB4OworICAgICAg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB9CisKKyAgICAuaW4tZmxvdy1wb3NpdGlvbmVk
IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGRpc3BsYXk6IGJsb2NrOworICAg
IH0KKworICAgIC5maXhlZCB7CisgICAgICB6LWluZGV4OiAtMTsKKyAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5j
dGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworCisg
ICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB2YXIgbGF5ZXJUcmVlID0gd2lu
ZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICB2YXIgcHJl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYXllclRyZWUgKyAnXG4nKTsKKyAgICAgICAgcHJl
LmFwcGVuZENoaWxkKHRleHQpOworICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgPGRpdiBjbGFzcz0iaW4tZmxv
dy1wb3NpdGlvbmVkIj4KKyAgICAgIDxkaXYgY2xhc3M9ImZpeGVkIj48L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJu
b3QtY29tcG9zaXRlZCI+PC9kaXY+CisgIDwvZGl2PgorICA8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYzk3MTQzNTk4Mzg4MjcxZWE1NjA3MzBmNjhlODk3NTMw
MDUxMTM5Mi4uODA2N2IwNGYwNzNjOTY2MTUxNThiMTQxMjBkZjZkYmEwNjk1ZTJmZCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNjMz
LDYgKzM2MzMsOSBAQCB3ZWJraXQub3JnL2IvOTI5NjggaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9y
dC1jYWNoZS1vbnByb2dyZXNzLmh0bWwKICMgU2Nyb2xsaW5nIGNvbnRlbnQgZHJhd3MgYmVuZWF0
aCBzY3JvbGxiYXJzIGluIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIG1vZGUuCiB3ZWJraXQub3JnL2Iv
MTAzMTU2IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcv
c2Nyb2xsYmFycy9jdXN0b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKKyMgUmVxdWlyZXMgYW4gdXBkYXRlZCBiYXNlbGluZSBhZnRl
ciAxMDYxNDIuCit3ZWJraXQub3JnL2IvMTA2ODIwIHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwv
Z3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctc2Nyb2xsLmh0bWwgWyBG
YWlsdXJlIF0KKwogIyBGYWlscyBkdWUgdG8gQnVnIDg1ODU2Lgogd2Via2l0Lm9yZy9iLzg1ODU2
IFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9ibG9jay9mbG9hdC8wMjguaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg1ODU2IFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9i
bG9jay9mbG9hdC8wMjYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Ny
b2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGlu
Zy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRh
MmY5YjliYWQ0YjRiY2Y3YzNiNDUzZjU4ZmJiNDViOGY2MmYxNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVk
LXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzOCBAQAorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAo
Y2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAu
MDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAg
IChwb3NpdGlvbiAyOC4wMCAyMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDAp
CisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgIChjaGlsZHJlbiAxCisgICAg
ICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gMS4wMCAxLjAw
KQorICAgICAgICAgICAgICAoYm91bmRzIDIwMC4wMCAyMDAuMDApCisgICAgICAgICAgICAgIChj
aGlsZHJlbiAxCisgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAg
ICAgIChib3VuZHMgMjAwLjAwIDMwMC4wMCkKKyAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRl
bnQgMSkKKyAgICAgICAgICAgICAgICAgIChjaGlsZHJlbiAyCisgICAgICAgICAgICAgICAgICAg
IChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDIuMDAgMjAy
LjAwKQorICAgICAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAg
ICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDE1MC4wMCkKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkK
KyAgKQorKQorCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183032</attachid>
            <date>2013-01-16 13:52:32 -0800</date>
            <delta_ts>2013-01-16 18:18:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106142-20130116164933.patch</filename>
            <type>text/plain</type>
            <size>39855</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU5YTU0MjQ1MDBhN2Rm
OGQ5OTgyNGM0NjE5NGYzOWEzYjVjZjk2OS4uZWI1ZjRiMDI5YjEyODVjNTMxZjc4MGNmZDU1YzVi
N2IyZDZlMmQ0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEzLTAxLTE2ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFByb21vdGUgY29tcG9z
aXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0YWNraW5nIGNvbnRleHRzLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2MTQyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB3ZSBhdXRvbWF0aWNhbGx5
IG9wdCBpbnRvIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLCB3ZSd2ZSBkZXRlcm1pbmVkCisgICAgICAg
IHRoYXQgaXQncyBzYWZlIHRvIGJlY29tZSBhIHN0YWNraW5nIGNvbnRleHQgKGlmIGl0J3Mgbm90
LCB3ZSBnZXQKKyAgICAgICAgcmVuZGVyaW5nIGlzc3VlcyB3aGVuIHdlIHByb21vdGUpLCBidXQg
cHJldmlvdXNseSwgd2UgZGlkbid0IGFjdHVhbGx5CisgICAgICAgIHByb21vdGUgdGhlIGxheWVy
IHRvIGJlIGEgc3RhY2tpbmcgY29udGV4dC4gVGhpcyBoYWQgYSBudW1iZXIgb2YKKyAgICAgICAg
dW5mb3J0dW5hdGUgc2lkZSBlZmZlY3RzLiBUaGUgbWFpbiBwcm9ibGVtIHdhcyB0aGF0IHdoZW4g
Y29tcHV0aW5nIAorICAgICAgICBvdmVybGFwIGluIHRoZSBSZW5kZXJMYXllckNvbXBvc2l0b3Is
IHRoZSBub3cgY29tcG9zaXRlZCBzY3JvbGxpbmcKKyAgICAgICAgbGF5ZXIncyBkZXNjZW5kYW50
cyB3ZXJlIG5vdCBwcm9jZXNzZWQgYnkgdHJhdmVyc2luZyBpdHMgbGF5ZXIgbGlzdHMsCisgICAg
ICAgIGJ1dCByYXRoZXIgaXRzIHN0YWNraW5nIGNvbnRleHQncy4gU28gd2hhdCB3b3VsZCBoYXBw
ZW4gaXMgdGhhdCB3ZQorICAgICAgICB3b3VsZCBwdXNoIG9udG8gdGhlIG92ZXJsYXAgbWFwIHN0
YWNrIHdoZW4gcHJvY2Vzc2luZyB0aGUgbmVnIHotb3JkZXIKKyAgICAgICAgYW5kIG5vcm1hbCBm
bG93IGRlc2NlbmRhbnRzLCBidXQgd2Ugd291bGQgcG9wIGJlZm9yZSBwcm9jZXNzaW5nIHRoZQor
ICAgICAgICBzdGFja2luZyBjb250ZXh0J3MgcG9zIHotb3JkZXIgbGlzdC4gV2hlbiB0aGlzIHBv
cCBoYXBwZW5zLCB0aGUKKyAgICAgICAgcHJldmlvdXNseSBjb21wdXRlZCBvdmVybGFwIHJlZ2lv
bnMgJ3Rha2UgZWZmZWN0Jy4gVGhpcyBtZWFucyB0aGF0IGlmCisgICAgICAgIGFueSBvZiB0aGUg
bm9ybWFsIGZsb3cgb3IgbmVnIHotb3JkZXIgZGVzY2VuZGFudHMgd2VyZSBjb21wb3NpdGVkLCBh
bnkgCisgICAgICAgIHBvc2l0aXZlIHotb3JkZXIgZGVzY2VuZGFudHMgd291bGQgZ2V0IHByb21v
dGVkIGlmIHRoZXkgb3ZlcmxhcHBlZC4KKyAgICAgICAgSWYgd2UgcHJvbW90ZSB0aGUgY29tcG9z
aXRlZCBzY3JvbGxpbmcgbGF5ZXIgdG8gYSBzdGFja2luZyBjb250ZXh0LCB0aGlzCisgICAgICAg
IHBvcCBubyBsb25nZXIgaGFwcGVucyBhdCBhbiB1bmZvcnR1bmF0ZSB0aW1lLCBhbmQgc28gaXRz
IGRlc2NlbmRhbnRzCisgICAgICAgIGNhbid0IGluY29ycmVjdGx5IGNhdXNlIGVhY2ggb3RoZXIg
dG8gYmUgcHJvbW90ZWQgZHVlIHRvIG92ZXJsYXAuCisKKyAgICAgICAgT25lIHRyaWNreSBwb2lu
dCBoZXJlIGlzIHRoYXQgdGhlIGNvZGUgZm9yIGF1dG9tYXRpY2FsbHkgb3B0aW5nIGludG8KKyAg
ICAgICAgY29tcG9zaXRlZCBzY3JvbGxpbmcgdXNlcyBpc1N0YWNraW5nQ29udGV4dCB0byBkbyBp
dHMgY2FsY3VsYXRpb25zLiBJdAorICAgICAgICBhbHNvIHVzZXMgbGF5ZXIgbGlzdHMgdGhhdCBh
cmUgY29tcHV0ZWQgaW4gd2F5cyB0aGF0IGRlcGVuZCBvbiB0aGUKKyAgICAgICAgdmFsdWUgb2Yg
aXNTdGFja2luZ0NvbnRleHQuIFNvIHRoaXMgZnVuY3Rpb24gbmVlZGVkIHRvIGJlIG1vZGlmaWVk
IHRvCisgICAgICAgIGNvbmRpdGlvbmFsbHkgY29uc2lkZXIgd2hldGhlciBvciBub3QgY29tcG9z
aXRlZCBzY3JvbGxpbmcgc2hvdWxkCisgICAgICAgIGFmZmVjdCB3aGV0aGVyIHRoZSBsYXllciBp
cyBhIHN0YWNraW5nIGNvbnRleHQuCisKKworICAgICAgICBUZXN0OiBjb21wb3NpdGluZy9vdmVy
Zmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC5odG1s
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yTGF5
ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6OnVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1
b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpjYW5TYWZlbHlFc3RhYmxpc2hBU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgICBDaGFu
Z2VkIHRvIGVuc3VyZSB0aGF0IHZhbHVlcyB1c2VkIGluIHRoZSBjYWxjdWxhdGlvbiBkbyBub3Qg
dXNlIHRoZQorICAgICAgICAgIGZsYXZvciBvZiBpc1N0YWNraW5nQ29udGV4dCBhZmZlY3RlZCBi
eSBjb21wb3NpdGVkIHNjcm9sbGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpz
dGFja2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZU5l
ZWRzQ29tcG9zaXRlZFNjcm9sbGluZyk6CisgICAgICAgICAgU2luY2UgdGhpcyB1cGRhdGUgY2Fu
IGFmZmVjdCBvdXIgc3RhY2tpbmcgY29udGV4dCBzdGF0dXMsIGl0IGRpcnRpZXMKKyAgICAgICAg
ICB0aGUgbmVjZXNzYXJ5IGxheWVyIGxpc3RzIGFuZCBpbmZvcm1zIHRoZSBjb21wb3NpdG9yIGFi
b3V0IHRoZQorICAgICAgICAgIHVwZGF0ZXMgdGhhdCBhcmUgbm93IG5lY2Vzc2FyeS4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZGlydHlaT3JkZXJMaXN0cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKToKKyAgICAgICAgICBSZWZhY3RvcmVkIHRvIGFs
bG93IHotb3JkZXIgbGlzdHMgdGhhdCBkbyBub3QgZGVwZW5kIG9uIGNvbXBvc2l0ZWQKKyAgICAg
ICAgICBzY3JvbGxpbmcgdG8gYmUgY29tcHV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKToKKyAgICAgICAgICBXaGVuIHRoZSBsYXll
ciBsaXN0cyBhcmUgdXBkYXRlZCwgd2UgbmVlZCB0byB1cGRhdGUKKyAgICAgICAgICBtX2hhc091
dE9mRmxvd1Bvc2l0aW9uZWREZXNjZW5kYW50LiBUaGlzIGNhbiBub3cgYWZmZWN0IG91cgorICAg
ICAgICAgIHN0YWNraW5nLWNvbnRleHQgc3RhdHVzLCBzbyB3ZSBtYXkgbmVlZCB0byByZWNvbXB1
dGUgdGhlIGxheWVyIGxpc3RzCisgICAgICAgICAgaWYgdGhpcyBoYXBwZW5zLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVN0YWNraW5nQ29udGV4dHNBZnRlclN0eWxlQ2hh
bmdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjppc0NTU1N0YWNraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6dHJlYXRBc0FTdGFja2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnBvc1pPcmRlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXI6Om5lZ1pPcmRlckxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omlz
RGlydHlTdGFja2luZ0NvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNs
ZWFyWk9yZGVyTGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVpP
cmRlckxpc3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXll
ckdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6Y29tcG9z
aXRpbmdPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aGFz
VmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudExheWVycyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OmVuY2xvc2luZ05vblN0YWNraW5nQ2xpcHBpbmdMYXllcik6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vy
c2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVD
b21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdEZXNj
ZW5kYW50R2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudCk6CisgICAgICAgICAgVGhlIGFi
b3ZlIGNoYW5nZXMgYXJlIGR1ZSB0byB0aGUgcmVuYW1pbmcgb2YgaXNTdGFja2luZ0NvbnRleHQg
dG8KKyAgICAgICAgICB0cmVhdEFzQVN0YWNraW5nQ29udGV4dC4KKwogMjAxMy0wMS0xNiAgR3J6
ZWdvcnogQ3phamtvd3NraSAgPGcuY3phamtvd3NraUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkIEVGTCBidWlsZCBmaXggYWZ0ZXIgcjEzOTg3Ny4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBkYmNh
NDJkYzYwZDI4ZTkzNmQ4NTJmOGRlN2U3NTkzY2U2MDRiZDA3Li41ZmY4Y2I3OTBmMGM2NjQ2YzZk
ZDMzNTM4YjY0MWQ0OTZlMDUxNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMt
MDEtMTYgIElhbiBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUHJv
bW90ZSBjb21wb3NpdGVkLXNjcm9sbGluZyBsYXllcnMgdG8gc3RhY2tpbmcgY29udGV4dHMuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OnVwZGF0ZU9mZnNldEZyb21WaWV3cG9ydEZvclNlbGYpOgor
ICAgICAgICAgIFJlbmRlckxheWVyOjppc1N0YWNraW5nQ29udGV4dCBoYXMgYmVlbiByZW5hbWVk
CisgICAgICAgICAgdHJlYXRlQXNTdGFja2luZ0NvbnRleHQuCisKIDIwMTMtMDEtMTUgIEFuZGVy
cyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBNZXJnZSBMYXllclRy
ZWVIb3N0Q0EgYW5kIExheWVyVHJlZUhvc3RNYWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGY1NTgzYzhhMzVhZjkw
OWFmNzc0NDEzNDhhMGYwYWMzY2NjNmU2ZGIuLjY2ODRhZjBlNTNjMDIwYmEwOWIxZTcyZWY1MjYy
ZjExZmZkYTdkZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFBhc3NSZWZQdHI8VHlw
ZUJ1aWxkZXI6OkxheWVyVHJlZTo6TGF5ZXI+IEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpidWls
ZE9iamVjdEZvCiAgICAgaWYgKHJlbmRlckxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkKICAgICAg
ICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKHJlbmRlckxheWVy
LT5yZWZsZWN0aW9uTGF5ZXIoKSkpOwogCi0gICAgaWYgKHJlbmRlckxheWVyLT5pc1N0YWNraW5n
Q29udGV4dCgpKSB7CisgICAgaWYgKHJlbmRlckxheWVyLT50cmVhdEFzQVN0YWNraW5nQ29udGV4
dCgpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9
IHJlbmRlckxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGlzdFNpemU7ICsraSkKQEAgLTE2Myw3ICsxNjMsNyBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpMYXllclRyZWU6OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVp
bGRPYmplY3RGbwogICAgICAgICAgICAgY2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVj
dEZvckxheWVyKG5vcm1hbEZsb3dMaXN0LT5hdChpKSkpOwogICAgIH0KICAgICAKLSAgICBpZiAo
cmVuZGVyTGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICBpZiAocmVuZGVyTGF5ZXIt
PnRyZWF0QXNBU3RhY2tpbmdDb250ZXh0KCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJM
YXllcio+KiBwb3NaT3JkZXJMaXN0ID0gcmVuZGVyTGF5ZXItPnBvc1pPcmRlckxpc3QoKSkgewog
ICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZmQyZmM3MzJkYmViMDk2YzMxYjdl
Yjc3OGVkZGNkMzFjOWZhZTlkYy4uNjRhYTEzNjgzMTQ4MTRlZDgzMDI0MjUwOTAwYjVmMmZkZTUw
NzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xOTcs
NyArMTk3LDcgQEAgUmVuZGVyTGF5ZXI6OlJlbmRlckxheWVyKFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QqIHJlbmRlcmVyKQogCiAgICAgLy8gTm9uLXN0YWNraW5nIGNvbnRleHRzIHNob3VsZCBoYXZl
IGVtcHR5IHotb3JkZXIgbGlzdHMuIEFzIHRoaXMgaXMgYWxyZWFkeSB0aGUgY2FzZSwKICAgICAv
LyB0aGVyZSBpcyBubyBuZWVkIHRvIGRpcnR5IC8gcmVjb21wdXRlIHRoZXNlIGxpc3RzLgotICAg
IG1fek9yZGVyTGlzdHNEaXJ0eSA9IGlzU3RhY2tpbmdDb250ZXh0KCk7CisgICAgbV96T3JkZXJM
aXN0c0RpcnR5ID0gdHJlYXRBc0FTdGFja2luZ0NvbnRleHQoKTsKIAogICAgIFNjcm9sbGFibGVB
cmVhOjpzZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShmYWxzZSk7CiAKQEAgLTYw
MCwzMiArNjAwLDM3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdG
b3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSBjb25zdAogLy8gIEFuZCB3ZSB3b3VsZCBjb25jbHVk
ZSB0aGF0IEMgY291bGQgYmUgcHJvbW90ZWQuCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNj
ZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKQogewotICAgIGlmICghaXNTdGFj
a2luZ0NvbnRleHQoKSB8fCAhYWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xs
RW5hYmxlZCgpKQorICAgIGlmICghaXNDU1NTdGFja2luZ0NvbnRleHQoKSB8fCAhYWNjZWxlcmF0
ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBBU1NFUlQoIW1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CiAgICAgQVNTRVJUKCFtX3pP
cmRlckxpc3RzRGlydHkpOwogCisgICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4gcG9z
Wk9yZGVyTGlzdDsKKyAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiBuZWdaT3JkZXJM
aXN0OworICAgIGJvb2wgb25seVJlc3BlY3RDU1NTdGFja2luZ0NvbnRleHRzID0gdHJ1ZTsKKyAg
ICByZWJ1aWxkWk9yZGVyTGlzdHMob25seVJlc3BlY3RDU1NTdGFja2luZ0NvbnRleHRzLCBwb3Na
T3JkZXJMaXN0LCBuZWdaT3JkZXJMaXN0KTsKKwogICAgIC8vIENyZWF0ZSBhIHJldmVyc2UgbG9v
a3VwLgogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBpbnQ+IGxvb2t1cDsKIAotICAg
IGlmIChtX25lZ1pPcmRlckxpc3QpIHsKKyAgICBpZiAobmVnWk9yZGVyTGlzdCkgewogICAgICAg
ICBpbnQgc3RhY2tpbmdPcmRlckluZGV4ID0gLTE7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9
IG1fbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWda
T3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNp
emU7ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IG1fbmVn
Wk9yZGVyTGlzdC0+YXQobGlzdFNpemUgLSBpIC0gMSk7Ci0gICAgICAgICAgICBpZiAoIWN1cnJl
bnRMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAgICAgIFJlbmRlckxheWVyKiBj
dXJyZW50TGF5ZXIgPSBuZWdaT3JkZXJMaXN0LT5hdChsaXN0U2l6ZSAtIGkgLSAxKTsKKyAgICAg
ICAgICAgIGlmICghY3VycmVudExheWVyLT5pc0NTU1N0YWNraW5nQ29udGV4dCgpKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbG9va3VwLnNldChjdXJyZW50TGF5ZXIs
IHN0YWNraW5nT3JkZXJJbmRleC0tKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX3Bv
c1pPcmRlckxpc3QpIHsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbV9wb3NaT3JkZXJMaXN0
LT5zaXplKCk7CisgICAgaWYgKHBvc1pPcmRlckxpc3QpIHsKKyAgICAgICAgc2l6ZV90IGxpc3RT
aXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICBpbnQgc3RhY2tpbmdPcmRlcklu
ZGV4ID0gMTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7
Ci0gICAgICAgICAgICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0gbV9wb3NaT3JkZXJMaXN0
LT5hdChpKTsKLSAgICAgICAgICAgIGlmICghY3VycmVudExheWVyLT5pc1N0YWNraW5nQ29udGV4
dCgpKQorICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IHBvc1pPcmRlckxp
c3QtPmF0KGkpOworICAgICAgICAgICAgaWYgKCFjdXJyZW50TGF5ZXItPmlzQ1NTU3RhY2tpbmdD
b250ZXh0KCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBsb29rdXAu
c2V0KGN1cnJlbnRMYXllciwgc3RhY2tpbmdPcmRlckluZGV4KyspOwogICAgICAgICB9CkBAIC02
NDAsNyArNjQ1LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250
aWd1b3VzSW5TdGFja2luZ09yZGVyKCkKIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJzaXZlKGNvbnN0IEhhc2hNYXA8
Y29uc3QgUmVuZGVyTGF5ZXIqLCBpbnQ+JiBsb29rdXAsIGludCYgbWluSW5kZXgsIGludCYgbWF4
SW5kZXgsIGludCYgY291bnQsIGJvb2wgZmlyc3RJdGVyYXRpb24pCiB7Ci0gICAgaWYgKGlzU3Rh
Y2tpbmdDb250ZXh0KCkgJiYgIWZpcnN0SXRlcmF0aW9uKSB7CisgICAgaWYgKGlzQ1NTU3RhY2tp
bmdDb250ZXh0KCkgJiYgIWZpcnN0SXRlcmF0aW9uKSB7CiAgICAgICAgIGlmIChsb29rdXAuY29u
dGFpbnModGhpcykpIHsKICAgICAgICAgICAgIG1pbkluZGV4ID0gc3RkOjptaW4obWluSW5kZXgs
IGxvb2t1cC5nZXQodGhpcykpOwogICAgICAgICAgICAgbWF4SW5kZXggPSBzdGQ6Om1heChtYXhJ
bmRleCwgbG9va3VwLmdldCh0aGlzKSk7CkBAIC02NjEsNyArNjY2LDcgQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyUmVjdXJz
aXZlKGNvbnN0IEgKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghaXNTdGFja2luZ0NvbnRl
eHQoKSkgeworICAgIGlmICghaXNDU1NTdGFja2luZ0NvbnRleHQoKSkgewogICAgICAgICBib29s
IG5ld1ZhbHVlID0gbWF4SW5kZXggLSBtaW5JbmRleCA9PSBjb3VudDsKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIGJvb2wgZGlkVXBkYXRlID0gbmV3VmFsdWUgIT0g
bV9kZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXI7CkBAIC05MjgsNyArOTMz
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlUGFnaW5hdGlvbigpCiAKIGJvb2wgUmVuZGVy
TGF5ZXI6OmNhblNhZmVseUVzdGFibGlzaEFTdGFja2luZ0NvbnRleHQoKSBjb25zdAogewotICAg
IGlmIChpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFzdGFja2luZ0NvbnRleHQoKSkKKyAgICBpZiAo
aXNDU1NTdGFja2luZ0NvbnRleHQoKSB8fCAhc3RhY2tpbmdDb250ZXh0KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgcmV0dXJuIG1fZGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFj
a2luZ09yZGVyOwpAQCAtMTI0MSwxMCArMTI0NiwxMCBAQCBGbG9hdFBvaW50IFJlbmRlckxheWVy
OjpwZXJzcGVjdGl2ZU9yaWdpbigpIGNvbnN0CiBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OnN0
YWNraW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcGFyZW50
KCk7Ci0gICAgd2hpbGUgKGxheWVyICYmICFsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkKKyAg
ICB3aGlsZSAobGF5ZXIgJiYgIWxheWVyLT50cmVhdEFzQVN0YWNraW5nQ29udGV4dCgpKQogICAg
ICAgICBsYXllciA9IGxheWVyLT5wYXJlbnQoKTsKIAotICAgIEFTU0VSVCghbGF5ZXIgfHwgbGF5
ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpOworICAgIEFTU0VSVCghbGF5ZXIgfHwgbGF5ZXItPnRy
ZWF0QXNBU3RhY2tpbmdDb250ZXh0KCkpOwogICAgIHJldHVybiBsYXllcjsKIH0KIApAQCAtMTkx
Myw4ICsxOTE4LDE4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZygpCiAjZW5kaWYKICAgICB9CiAKLSAgICBpZiAob2xkTmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nICE9IG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKQorICAgIGlmIChvbGROZWVkc0Nv
bXBvc2l0ZWRTY3JvbGxpbmcgIT0gbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpIHsKICAgICAg
ICAgdXBkYXRlU2VsZlBhaW50aW5nTGF5ZXIoKTsKKyAgICAgICAgaWYgKHRyZWF0QXNBU3RhY2tp
bmdDb250ZXh0KCkpCisgICAgICAgICAgICBkaXJ0eVpPcmRlckxpc3RzKCk7CisgICAgICAgIFJl
bmRlckxheWVyKiBzYyA9IHN0YWNraW5nQ29udGV4dCgpOworICAgICAgICBpZiAoc2MpIHsKKyAg
ICAgICAgICAgIHNjLT5kaXJ0eVpPcmRlckxpc3RzKCk7CisgICAgICAgICAgICBzYy0+ZGlydHlO
b3JtYWxGbG93TGlzdCgpOworICAgICAgICB9CisgICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0Q29t
cG9zaXRpbmdMYXllcnNOZWVkUmVidWlsZCgpOworICAgICAgICBjb21wb3NpdG9yKCktPnNldFNo
b3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0KCk7CisgICAgfQogfQogI2VuZGlm
CiAKQEAgLTQ4OTUsNyArNDkxMCw3IEBAIEludFJlY3QgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUxh
eWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25zCiAgICAgICAg
IH0KICAgICB9CiAgICAgCi0gICAgQVNTRVJUKGlzU3RhY2tpbmdDb250ZXh0KCkgfHwgKCFwb3Na
T3JkZXJMaXN0KCkgfHwgIXBvc1pPcmRlckxpc3QoKS0+c2l6ZSgpKSk7CisgICAgQVNTRVJUKHRy
ZWF0QXNBU3RhY2tpbmdDb250ZXh0KCkgfHwgKCFwb3NaT3JkZXJMaXN0KCkgfHwgIXBvc1pPcmRl
ckxpc3QoKS0+c2l6ZSgpKSk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgTGF5ZXJMaXN0
TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXllcio+
KHRoaXMpKTsKQEAgLTUwNzYsNyArNTA5MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBjb21wYXJl
WkluZGV4KFJlbmRlckxheWVyKiBmaXJzdCwgUmVuZGVyTGF5ZXIqIHNlY29uZCkKIHZvaWQgUmVu
ZGVyTGF5ZXI6OmRpcnR5Wk9yZGVyTGlzdHMoKQogewogICAgIEFTU0VSVChtX2xheWVyTGlzdE11
dGF0aW9uQWxsb3dlZCk7Ci0gICAgQVNTRVJUKGlzU3RhY2tpbmdDb250ZXh0KCkpOworICAgIEFT
U0VSVCh0cmVhdEFzQVN0YWNraW5nQ29udGV4dCgpKTsKIAogICAgIGlmIChtX3Bvc1pPcmRlckxp
c3QpCiAgICAgICAgIG1fcG9zWk9yZGVyTGlzdC0+Y2xlYXIoKTsKQEAgLTUxMjEsNyArNTEzNiwx
MyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoKQogewogICAgIEFTU0VS
VChtX2xheWVyTGlzdE11dGF0aW9uQWxsb3dlZCk7CiAgICAgQVNTRVJUKGlzRGlydHlTdGFja2lu
Z0NvbnRleHQoKSk7CisgICAgYm9vbCBvbmx5UmVzcGVjdENTU1N0YWNraW5nQ29udGV4dHMgPSBm
YWxzZTsKKyAgICByZWJ1aWxkWk9yZGVyTGlzdHMob25seVJlc3BlY3RDU1NTdGFja2luZ0NvbnRl
eHRzLCBtX3Bvc1pPcmRlckxpc3QsIG1fbmVnWk9yZGVyTGlzdCk7CisgICAgbV96T3JkZXJMaXN0
c0RpcnR5ID0gZmFsc2U7Cit9CiAKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0
cyhib29sIG9ubHlSZXNwZWN0Q1NTU3RhY2tpbmdDb250ZXh0cywgT3duUHRyPFZlY3RvcjxSZW5k
ZXJMYXllcio+ID4mIHBvc1pPcmRlckxpc3QsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+
JiBuZWdaT3JkZXJMaXN0KQorewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAg
ICBib29sIGluY2x1ZGVIaWRkZW5MYXllcnMgPSBjb21wb3NpdG9yKCktPmluQ29tcG9zaXRpbmdN
b2RlKCk7CiAjZWxzZQpAQCAtNTEyOSwxNCArNTE1MCwxNCBAQCB2b2lkIFJlbmRlckxheWVyOjpy
ZWJ1aWxkWk9yZGVyTGlzdHMoKQogI2VuZGlmCiAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQg
PSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAg
ICAgICBpZiAoIW1fcmVmbGVjdGlvbiB8fCByZWZsZWN0aW9uTGF5ZXIoKSAhPSBjaGlsZCkKLSAg
ICAgICAgICAgIGNoaWxkLT5jb2xsZWN0TGF5ZXJzKGluY2x1ZGVIaWRkZW5MYXllcnMsIG1fcG9z
Wk9yZGVyTGlzdCwgbV9uZWdaT3JkZXJMaXN0KTsKKyAgICAgICAgICAgIGNoaWxkLT5jb2xsZWN0
TGF5ZXJzKGluY2x1ZGVIaWRkZW5MYXllcnMsIG9ubHlSZXNwZWN0Q1NTU3RhY2tpbmdDb250ZXh0
cywgcG9zWk9yZGVyTGlzdCwgbmVnWk9yZGVyTGlzdCk7CiAKICAgICAvLyBTb3J0IHRoZSB0d28g
bGlzdHMuCi0gICAgaWYgKG1fcG9zWk9yZGVyTGlzdCkKLSAgICAgICAgc3RkOjpzdGFibGVfc29y
dChtX3Bvc1pPcmRlckxpc3QtPmJlZ2luKCksIG1fcG9zWk9yZGVyTGlzdC0+ZW5kKCksIGNvbXBh
cmVaSW5kZXgpOworICAgIGlmIChwb3NaT3JkZXJMaXN0KQorICAgICAgICBzdGQ6OnN0YWJsZV9z
b3J0KHBvc1pPcmRlckxpc3QtPmJlZ2luKCksIHBvc1pPcmRlckxpc3QtPmVuZCgpLCBjb21wYXJl
WkluZGV4KTsKIAotICAgIGlmIChtX25lZ1pPcmRlckxpc3QpCi0gICAgICAgIHN0ZDo6c3RhYmxl
X3NvcnQobV9uZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBtX25lZ1pPcmRlckxpc3QtPmVuZCgpLCBj
b21wYXJlWkluZGV4KTsKKyAgICBpZiAobmVnWk9yZGVyTGlzdCkKKyAgICAgICAgc3RkOjpzdGFi
bGVfc29ydChuZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBuZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29t
cGFyZVpJbmRleCk7CiAKICNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCiAgICAgLy8gQXBwZW5k
IGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGFmdGVyIG5vcm1hbCBsYXllciBjb2xsZWN0
aW9uLCB0byBlbnN1cmUgdGhleSBhcmUgb24gdG9wIHJlZ2FyZGxlc3Mgb2Ygei1pbmRleGVzLgpA
QCAtNTE0NywxMyArNTE2OCwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlz
dHMoKQogICAgICAgICAgICAgRWxlbWVudCogY2hpbGRFbGVtZW50ID0gY2hpbGQtPm5vZGUoKS0+
aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KGNoaWxkLT5ub2RlKCkpIDogMDsKICAgICAgICAg
ICAgIGlmIChjaGlsZEVsZW1lbnQgJiYgY2hpbGRFbGVtZW50LT5pc0luVG9wTGF5ZXIoKSkgewog
ICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdChjaGlsZCktPmxheWVyKCk7Ci0gICAgICAgICAgICAgICAgbV9wb3NaT3JkZXJMaXN0LT5h
cHBlbmQobGF5ZXIpOworICAgICAgICAgICAgICAgIHBvc1pPcmRlckxpc3QtPmFwcGVuZChsYXll
cik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKIAotICAgIG1fek9y
ZGVyTGlzdHNEaXJ0eSA9IGZhbHNlOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVOb3Jt
YWxGbG93TGlzdCgpCkBAIC01MTc1LDcgKzUxOTUsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVOb3JtYWxGbG93TGlzdCgpCiAgICAgbV9ub3JtYWxGbG93TGlzdERpcnR5ID0gZmFsc2U7CiB9
CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5
ZXJzLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgcG9zQnVmZmVyLCBPd25QdHI8VmVj
dG9yPFJlbmRlckxheWVyKj4gPiYgbmVnQnVmZmVyKQordm9pZCBSZW5kZXJMYXllcjo6Y29sbGVj
dExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIGJvb2wgb25seVJlc3BlY3RDU1NTdGFj
a2luZ0NvbnRleHRzLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgcG9zQnVmZmVyLCBP
d25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgbmVnQnVmZmVyKQogewogI2lmIEVOQUJMRShE
SUFMT0dfRUxFTUVOVCkKICAgICBpZiAoaXNJblRvcExheWVyKCkpCkBAIC01MTg0LDggKzUyMDQs
OSBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxh
eWVycywgT3duUHRyPFZlY3RvcjxSZW5kZXJMYQogCiAgICAgdXBkYXRlRGVzY2VuZGFudERlcGVu
ZGVudEZsYWdzKCk7CiAKKyAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0ID0gb25seVJlc3BlY3RD
U1NTdGFja2luZ0NvbnRleHRzID8gaXNDU1NTdGFja2luZ0NvbnRleHQoKSA6IHRyZWF0QXNBU3Rh
Y2tpbmdDb250ZXh0KCk7CiAgICAgLy8gT3ZlcmZsb3cgbGF5ZXJzIGFyZSBqdXN0IHBhaW50ZWQg
YnkgdGhlaXIgZW5jbG9zaW5nIGxheWVycywgc28gdGhleSBkb24ndCBnZXQgcHV0IGluIHpvcmRl
ciBsaXN0cy4KLSAgICBib29sIGluY2x1ZGVIaWRkZW5MYXllciA9IGluY2x1ZGVIaWRkZW5MYXll
cnMgfHwgKG1faGFzVmlzaWJsZUNvbnRlbnQgfHwgKG1faGFzVmlzaWJsZURlc2NlbmRhbnQgJiYg
aXNTdGFja2luZ0NvbnRleHQoKSkpOworICAgIGJvb2wgaW5jbHVkZUhpZGRlbkxheWVyID0gaW5j
bHVkZUhpZGRlbkxheWVycyB8fCAobV9oYXNWaXNpYmxlQ29udGVudCB8fCAobV9oYXNWaXNpYmxl
RGVzY2VuZGFudCAmJiBpc1N0YWNraW5nQ29udGV4dCkpOwogICAgIGlmIChpbmNsdWRlSGlkZGVu
TGF5ZXIgJiYgIWlzTm9ybWFsRmxvd09ubHkoKSAmJiAhcmVuZGVyZXIoKS0+aXNSZW5kZXJGbG93
VGhyZWFkKCkpIHsKICAgICAgICAgLy8gRGV0ZXJtaW5lIHdoaWNoIGJ1ZmZlciB0aGUgY2hpbGQg
c2hvdWxkIGJlIGluLgogICAgICAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgYnVm
ZmVyID0gKHpJbmRleCgpID49IDApID8gcG9zQnVmZmVyIDogbmVnQnVmZmVyOwpAQCAtNTIwMCwx
OSArNTIyMSwxOCBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVk
ZUhpZGRlbkxheWVycywgT3duUHRyPFZlY3RvcjxSZW5kZXJMYQogCiAgICAgLy8gUmVjdXIgaW50
byBvdXIgY2hpbGRyZW4gdG8gY29sbGVjdCBtb3JlIGxheWVycywgYnV0IG9ubHkgaWYgd2UgZG9u
J3QgZXN0YWJsaXNoCiAgICAgLy8gYSBzdGFja2luZyBjb250ZXh0LgotICAgIGlmICgoaW5jbHVk
ZUhpZGRlbkxheWVycyB8fCBtX2hhc1Zpc2libGVEZXNjZW5kYW50KSAmJiAhaXNTdGFja2luZ0Nv
bnRleHQoKSkgeworICAgIGlmICgoaW5jbHVkZUhpZGRlbkxheWVycyB8fCBtX2hhc1Zpc2libGVE
ZXNjZW5kYW50KSAmJiAhaXNTdGFja2luZ0NvbnRleHQpIHsKICAgICAgICAgZm9yIChSZW5kZXJM
YXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKSB7CiAgICAgICAgICAgICAvLyBJZ25vcmUgcmVmbGVjdGlvbnMuCiAgICAgICAgICAg
ICBpZiAoIW1fcmVmbGVjdGlvbiB8fCByZWZsZWN0aW9uTGF5ZXIoKSAhPSBjaGlsZCkKLSAgICAg
ICAgICAgICAgICBjaGlsZC0+Y29sbGVjdExheWVycyhpbmNsdWRlSGlkZGVuTGF5ZXJzLCBwb3NC
dWZmZXIsIG5lZ0J1ZmZlcik7CisgICAgICAgICAgICAgICAgY2hpbGQtPmNvbGxlY3RMYXllcnMo
aW5jbHVkZUhpZGRlbkxheWVycywgb25seVJlc3BlY3RDU1NTdGFja2luZ0NvbnRleHRzLCBwb3NC
dWZmZXIsIG5lZ0J1ZmZlcik7CiAgICAgICAgIH0KICAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpCiB7Ci0gICAgYm9vbCBzaG91bGRVcGRhdGVE
ZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIgPSBpc1N0YWNraW5nQ29udGV4
dCgpICYmIChtX3pPcmRlckxpc3RzRGlydHkgfHwgbV9ub3JtYWxGbG93TGlzdERpcnR5KTsKLQor
ICAgIGJvb2wgc2hvdWxkVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09y
ZGVyID0gaXNDU1NTdGFja2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1f
bm9ybWFsRmxvd0xpc3REaXJ0eSk7IAogICAgIHVwZGF0ZVpPcmRlckxpc3RzKCk7CiAgICAgdXBk
YXRlTm9ybWFsRmxvd0xpc3QoKTsKIApAQCAtNTIyMSw4ICs1MjQxLDEzIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpCiAgICAgICAgIHJlZmxlY3Rpb25MYXll
ci0+dXBkYXRlTm9ybWFsRmxvd0xpc3QoKTsKICAgICB9CiAKLSAgICBpZiAoc2hvdWxkVXBkYXRl
RGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKQorICAgIGlmIChzaG91bGRV
cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIpIHsKICAgICAgICAg
dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKCk7CisgICAgICAg
IC8vIFRoZSBhYm92ZSBmdW5jdGlvbiBjYW4gY2F1c2UgdXMgdG8gdXBkYXRlIG1fbmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nCisgICAgICAgIC8vIGFuZCBkaXJ0eSBvdXIgbGF5ZXIgbGlzdHMuIFJl
ZnJlc2ggdGhlbSBpZiBuZWNlc3NhcnkuCisgICAgICAgIHVwZGF0ZVpPcmRlckxpc3RzKCk7Cisg
ICAgICAgIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CisgICAgfQogfQogCiB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCgpCkBAIC01MzQ4LDcg
KzUzNzMsNyBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTdGFja2luZ0NvbnRleHRzQWZ0ZXJT
dHlsZUNoYW5nZShjb25zdCBSZW5kZXJTdHlsZSogb2xkUwogICAgICAgICByZXR1cm47CiAKICAg
ICBib29sIHdhc1N0YWNraW5nQ29udGV4dCA9IGlzU3RhY2tpbmdDb250ZXh0KG9sZFN0eWxlKTsK
LSAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0ID0gdGhpcy0+aXNTdGFja2luZ0NvbnRleHQoKTsK
KyAgICBib29sIGlzU3RhY2tpbmdDb250ZXh0ID0gdGhpcy0+dHJlYXRBc0FTdGFja2luZ0NvbnRl
eHQoKTsKICAgICBpZiAoaXNTdGFja2luZ0NvbnRleHQgIT0gd2FzU3RhY2tpbmdDb250ZXh0KSB7
CiAgICAgICAgIGRpcnR5U3RhY2tpbmdDb250ZXh0Wk9yZGVyTGlzdHMoKTsKICAgICAgICAgaWYg
KGlzU3RhY2tpbmdDb250ZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApp
bmRleCA3ZTBkMjcxZDNjZTRiYWI4OTU3NDhmMzE1NTg1ZDRjNmRiMzVhOWVkLi42Y2I5NjdjYzEy
Nzg3NTk4YzA0ZGI4ZTUwYmM1NTdiNWFjNWMxNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuaApAQCAtNDMwLDcgKzQzMCw4IEBAIHB1YmxpYzoKICAgICAvLyBHZXQgdGhl
IGVuY2xvc2luZyBzdGFja2luZyBjb250ZXh0IGZvciB0aGlzIGxheWVyLiAgQSBzdGFja2luZyBj
b250ZXh0IGlzIGEgbGF5ZXIKICAgICAvLyB0aGF0IGhhcyBhIG5vbi1hdXRvIHotaW5kZXguCiAg
ICAgUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGV4dCgpIGNvbnN0OwotICAgIGJvb2wgaXNTdGFj
a2luZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBpc1N0YWNraW5nQ29udGV4dChyZW5kZXJlcigp
LT5zdHlsZSgpKTsgfQorICAgIGJvb2wgaXNDU1NTdGFja2luZ0NvbnRleHQoKSBjb25zdCB7IHJl
dHVybiBpc1N0YWNraW5nQ29udGV4dChyZW5kZXJlcigpLT5zdHlsZSgpKTsgfQorICAgIGJvb2wg
dHJlYXRBc0FTdGFja2luZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBpc0NTU1N0YWNraW5nQ29u
dGV4dCgpIHx8IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOyB9CiAKICAgICB2b2lkIGRpcnR5
Wk9yZGVyTGlzdHMoKTsKICAgICB2b2lkIGRpcnR5U3RhY2tpbmdDb250ZXh0Wk9yZGVyTGlzdHMo
KTsKQEAgLTQzOCw3ICs0MzksNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFJlbmRlckxheWVyKj4q
IHBvc1pPcmRlckxpc3QoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJUKCFtX3pPcmRlckxp
c3RzRGlydHkpOwotICAgICAgICBBU1NFUlQoaXNTdGFja2luZ0NvbnRleHQoKSB8fCAhbV9wb3Na
T3JkZXJMaXN0KTsKKyAgICAgICAgQVNTRVJUKHRyZWF0QXNBU3RhY2tpbmdDb250ZXh0KCkgfHwg
IW1fcG9zWk9yZGVyTGlzdCk7CiAgICAgICAgIHJldHVybiBtX3Bvc1pPcmRlckxpc3QuZ2V0KCk7
CiAgICAgfQogCkBAIC00NDcsNyArNDQ4LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxSZW5kZXJM
YXllcio+KiBuZWdaT3JkZXJMaXN0KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVCghbV96
T3JkZXJMaXN0c0RpcnR5KTsKLSAgICAgICAgQVNTRVJUKGlzU3RhY2tpbmdDb250ZXh0KCkgfHwg
IW1fbmVnWk9yZGVyTGlzdCk7CisgICAgICAgIEFTU0VSVCh0cmVhdEFzQVN0YWNraW5nQ29udGV4
dCgpIHx8ICFtX25lZ1pPcmRlckxpc3QpOwogICAgICAgICByZXR1cm4gbV9uZWdaT3JkZXJMaXN0
LmdldCgpOwogICAgIH0KIApAQCAtNzUzLDEyICs3NTQsMTMgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICB2b2lkIHVwZGF0ZVpPcmRlckxpc3RzKCk7CiAgICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlz
dHMoKTsKKyAgICB2b2lkIHJlYnVpbGRaT3JkZXJMaXN0cyhib29sIG9ubHlSZXNwZWN0Q1NTU3Rh
Y2tpbmdDb250ZXh0cywgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mLCBPd25QdHI8VmVj
dG9yPFJlbmRlckxheWVyKj4gPiYpOwogICAgIHZvaWQgY2xlYXJaT3JkZXJMaXN0cygpOwogCiAg
ICAgdm9pZCB1cGRhdGVOb3JtYWxGbG93TGlzdCgpOwogCiAgICAgYm9vbCBpc1N0YWNraW5nQ29u
dGV4dChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0IHsgcmV0dXJuICFzdHlsZS0+aGFz
QXV0b1pJbmRleCgpIHx8IGlzUm9vdExheWVyKCk7IH0KLSAgICBib29sIGlzRGlydHlTdGFja2lu
Z0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX3pPcmRlckxpc3RzRGlydHkgJiYgaXNTdGFja2lu
Z0NvbnRleHQoKTsgfQorICAgIGJvb2wgaXNEaXJ0eVN0YWNraW5nQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fek9yZGVyTGlzdHNEaXJ0eSAmJiB0cmVhdEFzQVN0YWNraW5nQ29udGV4dCgpOyB9
CiAKICAgICB2b2lkIHNldEFuY2VzdG9yQ2hhaW5IYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRh
bnQoKTsKICAgICB2b2lkIGRpcnR5QW5jZXN0b3JDaGFpbkhhc1NlbGZQYWludGluZ0xheWVyRGVz
Y2VuZGFudFN0YXR1cygpOwpAQCAtODIyLDcgKzgyNCw3IEBAIHByaXZhdGU6CiAgICAgTGF5b3V0
VW5pdCByZW5kZXJCb3hYKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyQm94TG9jYXRpb24oKS54KCk7
IH0KICAgICBMYXlvdXRVbml0IHJlbmRlckJveFkoKSBjb25zdCB7IHJldHVybiByZW5kZXJCb3hM
b2NhdGlvbigpLnkoKTsgfQogCi0gICAgdm9pZCBjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhp
ZGRlbkxheWVycywgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mLCBPd25QdHI8VmVjdG9y
PFJlbmRlckxheWVyKj4gPiYpOworICAgIHZvaWQgY29sbGVjdExheWVycyhib29sIGluY2x1ZGVI
aWRkZW5MYXllcnMsIGJvb2wgb25seVJlc3BlY3RDU1NTdGFja2luZ0NvbnRleHRzLCBPd25QdHI8
VmVjdG9yPFJlbmRlckxheWVyKj4gPiYsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+Jik7
CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAK
QEAgLTExNTEsNyArMTE1Myw3IEBAIHByaXZhdGU6CiAKIGlubGluZSB2b2lkIFJlbmRlckxheWVy
OjpjbGVhclpPcmRlckxpc3RzKCkKIHsKLSAgICBBU1NFUlQoIWlzU3RhY2tpbmdDb250ZXh0KCkp
OworICAgIEFTU0VSVCghdHJlYXRBc0FTdGFja2luZ0NvbnRleHQoKSk7CiAKICAgICBtX3Bvc1pP
cmRlckxpc3QuY2xlYXIoKTsKICAgICBtX25lZ1pPcmRlckxpc3QuY2xlYXIoKTsKQEAgLTExNjIs
NyArMTE2NCw3IEBAIGlubGluZSB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVaT3JkZXJMaXN0cygp
CiAgICAgaWYgKCFtX3pPcmRlckxpc3RzRGlydHkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
ICghaXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlmICghdHJlYXRBc0FTdGFja2luZ0NvbnRl
eHQoKSkgewogICAgICAgICBjbGVhclpPcmRlckxpc3RzKCk7CiAgICAgICAgIG1fek9yZGVyTGlz
dHNEaXJ0eSA9IGZhbHNlOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDUxNzIxNDBiM2IwN2YxOTdlZTFl
NWE5ZWE4OTRmNTdlZTNjNjIyNmUuLmRkNjEzMDYzZWQyM2IyZDIxZTg4NWMxNzZiN2M4YTJmOWZm
OWE4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwCkBAIC01NjUsNyArNTY1LDcgQEAgc3RhdGljIEludFJlY3QgY2xpcEJveChSZW5kZXJC
b3gqIHJlbmRlcmVyKQogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5
ZXJHZW9tZXRyeSgpCiB7CiAgICAgLy8gSWYgd2UgaGF2ZW4ndCBidWlsdCB6LW9yZGVyIGxpc3Rz
IHlldCwgd2FpdCB1bnRpbCBsYXRlci4KLSAgICBpZiAobV9vd25pbmdMYXllci0+aXNTdGFja2lu
Z0NvbnRleHQoKSAmJiBtX293bmluZ0xheWVyLT5tX3pPcmRlckxpc3RzRGlydHkpCisgICAgaWYg
KG1fb3duaW5nTGF5ZXItPnRyZWF0QXNBU3RhY2tpbmdDb250ZXh0KCkgJiYgbV9vd25pbmdMYXll
ci0+bV96T3JkZXJMaXN0c0RpcnR5KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTZXQgdHJh
bnNmb3JtIHByb3BlcnR5LCBpZiBpdCBpcyBub3QgYW5pbWF0aW5nLiBXZSBoYXZlIHRvIGRvIHRo
aXMgaGVyZSBiZWNhdXNlIHRoZSB0cmFuc2Zvcm0KQEAgLTEyNDQsNyArMTI0NCw3IEBAIGZsb2F0
IFJlbmRlckxheWVyQmFja2luZzo6Y29tcG9zaXRpbmdPcGFjaXR5KGZsb2F0IHJlbmRlcmVyT3Bh
Y2l0eSkgY29uc3QKICAgICBmb3IgKFJlbmRlckxheWVyKiBjdXJyID0gbV9vd25pbmdMYXllci0+
cGFyZW50KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgewogICAgICAgICAvLyBXZSBv
bmx5IGNhcmUgYWJvdXQgcGFyZW50cyB0aGF0IGFyZSBzdGFja2luZyBjb250ZXh0cy4KICAgICAg
ICAgLy8gUmVjYWxsIHRoYXQgb3BhY2l0eSBjcmVhdGVzIHN0YWNraW5nIGNvbnRleHQuCi0gICAg
ICAgIGlmICghY3Vyci0+aXNTdGFja2luZ0NvbnRleHQoKSkKKyAgICAgICAgaWYgKCFjdXJyLT50
cmVhdEFzQVN0YWNraW5nQ29udGV4dCgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IAogICAgICAgICAvLyBJZiB3ZSBmb3VuZCBhIGNvbXBvc2l0aW5nIGxheWVyLCB3ZSB3YW50IHRv
IGNvbXB1dGUgb3BhY2l0eQpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgYm9vbCBSZW5kZXJMYXllckJh
Y2tpbmc6Omhhc1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRMYXllcnMoKSBjb25zdAog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1fb3duaW5nTGF5ZXItPmlzU3RhY2tpbmdDb250
ZXh0KCkpIHsKKyAgICBpZiAobV9vd25pbmdMYXllci0+dHJlYXRBc0FTdGFja2luZ0NvbnRleHQo
KSkgewogICAgICAgICBpZiAoIW1fb3duaW5nTGF5ZXItPmhhc1Zpc2libGVEZXNjZW5kYW50KCkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggMDM4OTE3ZjZkMmM4NTRmOTZj
Y2MxODFmZDQ3NjBhNzExNGE0MGVhOS4uZTYwNDU3MzdmMjg3ZGE4NDg5MWRlZDFhNDkxZGQ5YTdj
YTFhZTBhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5jcHAKQEAgLTcyOSw3ICs3MjksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6bGF5ZXJXaWxsQmVSZW1vdmVkKFJlbmRlckxheWVyKiBwYXJlbnQsIFJlbmRlckxheWVy
KgogUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZW5jbG9zaW5nTm9uU3RhY2tp
bmdDbGlwcGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3QKIHsKICAgICBm
b3IgKFJlbmRlckxheWVyKiBjdXJyID0gbGF5ZXItPnBhcmVudCgpOyBjdXJyICE9IDA7IGN1cnIg
PSBjdXJyLT5wYXJlbnQoKSkgewotICAgICAgICBpZiAoY3Vyci0+aXNTdGFja2luZ0NvbnRleHQo
KSkKKyAgICAgICAgaWYgKGN1cnItPnRyZWF0QXNBU3RhY2tpbmdDb250ZXh0KCkpCiAgICAgICAg
ICAgICByZXR1cm4gMDsKIAogICAgICAgICBpZiAoY3Vyci0+cmVuZGVyZXIoKS0+aGFzQ2xpcE9y
T3ZlcmZsb3dDbGlwKCkpCkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBS
ZW4KICAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7
CiAjZW5kaWYKIAotICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlm
IChsYXllci0+dHJlYXRBc0FTdGFja2luZ0NvbnRleHQoKSkgewogICAgICAgICBpZiAoVmVjdG9y
PFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBsYXllci0+bmVnWk9yZGVyTGlzdCgpKSB7
CiAgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKQEAgLTc5
NCw3ICs3OTQsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFwTWFw
UmVjdXJzaXZlKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbgogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgaWYgKGxheWVyLT50
cmVhdEFzQVN0YWNraW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAgICAg
ICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewpAQCAtODc5LDcgKzg3OSw3
IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJl
bWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAKICAgICBib29sIGFueURlc2NlbmRhbnRIYXMz
RFRyYW5zZm9ybSA9IGZhbHNlOwogCi0gICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgp
KSB7CisgICAgaWYgKGxheWVyLT50cmVhdEFzQVN0YWNraW5nQ29udGV4dCgpKSB7CiAgICAgICAg
IGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLT5uZWdaT3Jk
ZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3Qt
PnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsr
aSkgewpAQCAtOTExLDcgKzkxMSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21w
dXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICBp
ZiAobGF5ZXItPnRyZWF0QXNBU3RhY2tpbmdDb250ZXh0KCkpIHsKICAgICAgICAgaWYgKFZlY3Rv
cjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXItPnBvc1pPcmRlckxpc3QoKSkg
ewogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CkBAIC0x
MDkwLDcgKzEwOTAsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBv
c2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxheWVyKiBsYXllciwgVmVjdAogICAgIExheWVyTGlzdE11
dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKICNlbmRpZgogCi0gICAgaWYg
KGxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgaWYgKGxheWVyLT50cmVhdEFzQVN0
YWNraW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVn
Wk9yZGVyTGlzdCA9IGxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVf
dCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewpAQCAtMTExMiw3ICsxMTEyLDcgQEAgdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5k
ZXJMYXllciogbGF5ZXIsIFZlY3QKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBpZiAobGF5
ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICBpZiAobGF5ZXItPnRyZWF0QXNBU3RhY2tp
bmdDb250ZXh0KCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3Jk
ZXJMaXN0ID0gbGF5ZXItPnBvc1pPcmRlckxpc3QoKSkgewogICAgICAgICAgICAgc2l6ZV90IGxp
c3RTaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CkBAIC0xMzA3LDcgKzEzMDcsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoUmVuZGVyTGF5ZXIq
IGxheWVyLCBpbnQgZGVwdAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25D
aGVja2VyKGxheWVyKTsKICNlbmRpZgogCi0gICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGV4
dCgpKSB7CisgICAgaWYgKGxheWVyLT50cmVhdEFzQVN0YWNraW5nQ29udGV4dCgpKSB7CiAgICAg
ICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLT5uZWda
T3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxp
c3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVMYXllclRyZWVHZW9tZXRyeShSZW5kZXJMYXllciogbGF5ZXIsIGludCBkZXB0CiAgICAg
ICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeShub3JtYWxGbG93TGlzdC0+YXQoaSksIGRl
cHRoICsgMSk7CiAgICAgfQogICAgIAotICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQo
KSkgeworICAgIGlmIChsYXllci0+dHJlYXRBc0FTdGFja2luZ0NvbnRleHQoKSkgewogICAgICAg
ICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci0+cG9zWk9y
ZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0
LT5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyAr
K2kpCkBAIC0xMzU4LDcgKzEzNTgsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoUmVuZGVyTGF5ZXIqIGNvbQogICAgIExh
eWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxheWVyKTsKICNlbmRpZgog
ICAgIAotICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlmIChsYXll
ci0+dHJlYXRBc0FTdGFja2luZ0NvbnRleHQoKSkgewogICAgICAgICBpZiAoVmVjdG9yPFJlbmRl
ckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBsYXllci0+bmVnWk9yZGVyTGlzdCgpKSB7CiAgICAg
ICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpCkBAIC0xMzcyLDcgKzEz
NzIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdEZXNj
ZW5kYW50R2VvbWV0cnkoUmVuZGVyTGF5ZXIqIGNvbQogICAgICAgICAgICAgdXBkYXRlQ29tcG9z
aXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29tcG9zaXRpbmdBbmNlc3Rvciwgbm9ybWFsRmxvd0xp
c3QtPmF0KGkpLCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KTsKICAgICB9CiAgICAgCi0gICAgaWYg
KGxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgaWYgKGxheWVyLT50cmVhdEFzQVN0
YWNraW5nQ29udGV4dCgpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9z
Wk9yZGVyTGlzdCA9IGxheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVf
dCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKQEAgLTIwMDYsNyArMjAwNiw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVu
ZGVyT2JqZWN0KiByZW5kZXJlCiAgICAgCiAgICAgRVBvc2l0aW9uIHBvc2l0aW9uID0gcmVuZGVy
ZXItPnN0eWxlKCktPnBvc2l0aW9uKCk7CiAgICAgYm9vbCBpc0ZpeGVkID0gcmVuZGVyZXItPmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBvc2l0aW9uID09IEZpeGVkUG9zaXRpb247Ci0gICAg
aWYgKGlzRml4ZWQgJiYgIWxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKQorICAgIGlmIChpc0Zp
eGVkICYmICFsYXllci0+dHJlYXRBc0FTdGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIAogICAgIGJvb2wgaXNTdGlja3kgPSByZW5kZXJlci0+aXNJbkZsb3dQb3Np
dGlvbmVkKCkgJiYgcG9zaXRpb24gPT0gU3RpY2t5UG9zaXRpb247CkBAIC0yNTg4LDcgKzI1ODgs
NyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJIYXMzRENvbnRlbnQoY29uc3Qg
UmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3Ig
bXV0YXRpb25DaGVja2VyKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPihsYXllcikpOwogI2VuZGlm
CiAKLSAgICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICBpZiAobGF5ZXIt
PnRyZWF0QXNBU3RhY2tpbmdDb250ZXh0KCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJM
YXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgewogICAgICAg
ICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZExheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAppbmRl
eCA4ZmJiNTdmMjExZmYyY2M0YjkyMDcyMzMwZGUzZjg3ODc5ZTE3OTNkLi5jMWMwYmM3ODQwOWQ1
NTA5MTZmMDVhMzJkNDY2ZjZmZjNhNDMxNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJl
ZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQ4NCw3ICs0ODQs
NyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVPZmZzZXRGcm9tVmlld3BvcnRGb3JTZWxmKFJlbmRlckxh
eWVyKiByZW5kZXJMYXllcikKICAgICBpZiAoIXJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5jb250
YWluZXIoKS0+aXNSZW5kZXJWaWV3KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcmVu
ZGVyTGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgaWYgKCFyZW5kZXJMYXllci0+dHJl
YXRBc0FTdGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIoYmFja2luZy0+Z3JhcGhpY3NMYXllcigpKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5Y2U5Y2JmOGNiMTNhNzAwYjBj
MDYxY2RiNTBkN2JmODc3Yzk2NmQzLi5lMmE1N2MzZDZhOWUzNDcyYjFjOWRhNmUwZjMwN2FkMTg2
N2YxMWY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTMtMDEtMTYgIElhbiBWb2xsaWNrICA8
dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUHJvbW90ZSBjb21wb3NpdGVkLXNjcm9s
bGluZyBsYXllcnMgdG8gc3RhY2tpbmcgY29udGV4dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDIKKworICAgICAgICBXaGVuIHdlIGF1dG9t
YXRpY2FsbHkgb3B0IGludG8gY29tcG9zaXRlZCBzY3JvbGxpbmcsIHdlJ3ZlIGRldGVybWluZWQK
KyAgICAgICAgdGhhdCBpdCdzIHNhZmUgdG8gYmVjb21lIGEgc3RhY2tpbmcgY29udGV4dCAoaWYg
aXQncyBub3QsIHdlIGdldAorICAgICAgICByZW5kZXJpbmcgaXNzdWVzIHdoZW4gd2UgcHJvbW90
ZSksIGJ1dCBwcmV2aW91c2x5LCB3ZSBkaWRuJ3QgYWN0dWFsbHkKKyAgICAgICAgcHJvbW90ZSB0
aGUgbGF5ZXIgdG8gYmUgYSBzdGFja2luZyBjb250ZXh0LiBUaGlzIGhhZCBhIG51bWJlciBvZgor
ICAgICAgICB1bmZvcnR1bmF0ZSBzaWRlIGVmZmVjdHMuIFRoZSBtYWluIHByb2JsZW0gd2FzIHRo
YXQgd2hlbiBjb21wdXRpbmcgCisgICAgICAgIG92ZXJsYXAgaW4gdGhlIFJlbmRlckxheWVyQ29t
cG9zaXRvciwgdGhlIG5vdyBjb21wb3NpdGVkIHNjcm9sbGluZworICAgICAgICBsYXllcidzIGRl
c2NlbmRhbnRzIHdlcmUgbm90IHByb2Nlc3NlZCBieSB0cmF2ZXJzaW5nIGl0cyBsYXllciBsaXN0
cywKKyAgICAgICAgYnV0IHJhdGhlciBpdHMgc3RhY2tpbmcgY29udGV4dCdzLiBTbyB3aGF0IHdv
dWxkIGhhcHBlbiBpcyB0aGF0IHdlCisgICAgICAgIHdvdWxkIHB1c2ggb250byB0aGUgb3Zlcmxh
cCBtYXAgc3RhY2sgd2hlbiBwcm9jZXNzaW5nIHRoZSBuZWcgei1vcmRlcgorICAgICAgICBhbmQg
bm9ybWFsIGZsb3cgZGVzY2VuZGFudHMsIGJ1dCB3ZSB3b3VsZCBwb3AgYmVmb3JlIHByb2Nlc3Np
bmcgdGhlCisgICAgICAgIHN0YWNraW5nIGNvbnRleHQncyBwb3Mgei1vcmRlciBsaXN0LiBXaGVu
IHRoaXMgcG9wIGhhcHBlbnMsIHRoZQorICAgICAgICBwcmV2aW91c2x5IGNvbXB1dGVkIG92ZXJs
YXAgcmVnaW9ucyAndGFrZSBlZmZlY3QnLiBUaGlzIG1lYW5zIHRoYXQgaWYKKyAgICAgICAgYW55
IG9mIHRoZSBub3JtYWwgZmxvdyBvciBuZWcgei1vcmRlciBkZXNjZW5kYW50cyB3ZXJlIGNvbXBv
c2l0ZWQsIGFueSAKKyAgICAgICAgcG9zaXRpdmUgei1vcmRlciBkZXNjZW5kYW50cyB3b3VsZCBn
ZXQgcHJvbW90ZWQgaWYgdGhleSBvdmVybGFwcGVkLgorICAgICAgICBJZiB3ZSBwcm9tb3RlIHRo
ZSBjb21wb3NpdGVkIHNjcm9sbGluZyBsYXllciB0byBhIHN0YWNraW5nIGNvbnRleHQsIHRoaXMK
KyAgICAgICAgcG9wIG5vIGxvbmdlciBoYXBwZW5zIGF0IGFuIHVuZm9ydHVuYXRlIHRpbWUsIGFu
ZCBzbyBpdHMgZGVzY2VuZGFudHMKKyAgICAgICAgY2FuJ3QgaW5jb3JyZWN0bHkgY2F1c2UgZWFj
aCBvdGhlciB0byBiZSBwcm9tb3RlZCBkdWUgdG8gb3ZlcmxhcC4KKworICAgICAgICBPbmUgdHJp
Y2t5IHBvaW50IGhlcmUgaXMgdGhhdCB0aGUgY29kZSBmb3IgYXV0b21hdGljYWxseSBvcHRpbmcg
aW50bworICAgICAgICBjb21wb3NpdGVkIHNjcm9sbGluZyB1c2VzIGlzU3RhY2tpbmdDb250ZXh0
IHRvIGRvIGl0cyBjYWxjdWxhdGlvbnMuIEl0CisgICAgICAgIGFsc28gdXNlcyBsYXllciBsaXN0
cyB0aGF0IGFyZSBjb21wdXRlZCBpbiB3YXlzIHRoYXQgZGVwZW5kIG9uIHRoZQorICAgICAgICB2
YWx1ZSBvZiBpc1N0YWNraW5nQ29udGV4dC4gU28gSSBoYXZlIHJlbmFtZWQgdGhpcyBmdW5jdGlv
bgorICAgICAgICB0cmVhdEFzQVN0YWNraW5nQ29udGV4dCBhbmQgYWRkZWQgaXNDU1NTdGFja2lu
Z0NvbnRleHQgd2hpY2ggYmVoYXZlcworICAgICAgICBzYW1lIHdheSB0aGUgb2xkIGlzU3RhY2tp
bmdDb250ZXh0IHdvcmtlZC4gaXNDU1NTdGFja2luZ0NvbnRleHQgaXMKKyAgICAgICAgdXNlZCB3
aGVuIGRldGVybWluaW5nIHdoZXRoZXIgb3Igbm90IHRvIGF1dG9tYXRpY2FsbHkgb3B0IGludG8K
KyAgICAgICAgY29tcG9zaXRlZCBzY3JvbGxpbmcuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9v
dmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBv
c2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICog
cGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNy
ZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTMtMDEt
MTYgIEFuZHJleSBMdXNobmlrb3YgIDxsdXNobmlrb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBoZWxwZXIgSW5zcGVjdG9yVGVzdCBtZXRob2QgdG8gZHVt
cCBlZGl0b3IgSFRNTApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZs
b3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRleHQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3Jv
bGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjU5ODM4ZTg0YjE4MGU5MTA3MGY3YzI2ZDAwNmNhNTU3ZmFiMzI1YTYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGlu
Zy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBA
QAorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4g
MQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAg
ICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlv
biAyOC4wMCAyMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAg
ICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgIChjaGlsZHJlbiA0CisgICAgICAgICAgICAo
R3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gMS4wMCAxLjAwKQorICAgICAg
ICAgICAgICAoYm91bmRzIDIwMC4wMCAyMDAuMDApCisgICAgICAgICAgICAgIChjaGlsZHJlbiAx
CisgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgICAgIChib3Vu
ZHMgMjAwLjAwIDMwMC4wMCkKKyAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAg
ICAgICAgICAgICAgICAgIChjaGlsZHJlbiAyCisgICAgICAgICAgICAgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDIuMDAgMjAyLjAwKQorICAg
ICAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAg
ICAgIChib3VuZHMgMjAwLjAwIDE1MC4wMCkKKyAgICAgICAgICAgICAgICAgICAgICAoZHJhd3ND
b250ZW50IDEpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDE4Ni4wMCkK
KyAgICAgICAgICAgICAgKGJvdW5kcyAxODUuMDAgMTUuMDApCisgICAgICAgICAgICAgIChkcmF3
c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgICAgIChwb3NpdGlvbiAxODYuMDAgMS4wMCkKKyAgICAgICAgICAgICAgKGJvdW5k
cyAxNS4wMCAxODUuMDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAg
ICAgICkKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlv
biAxODYuMDAgMTg2LjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDE1LjAwIDE1LjAwKQorICAg
ICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICApCisgICAgICAgICAgKQor
ICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1h
LXN0YWNraW5nLWNvbnRleHQuaHRtbCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93
L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjdmOGViOWZlY2Y1ODM2MGQwMDc5NDg3ZDQ1ZTIxYjMyMDY2ZDIzMwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQt
c2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWwKQEAgLTAsMCArMSw3NiBA
QAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlv
bmFsLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8
aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBl
IiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiLz4KKyAgPHRpdGxlPkNvbXBvc2l0
ZWQgc2Nyb2xsaW5nIGNyZWF0ZXMgYSBzdGFja2luZyBjb250ZXh0LjwvdGl0bGU+CisgIDxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmNvbnRhaW5lciB7CisgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgb3ZlcmZsb3c6IHNj
cm9sbDsKKyAgICAgIG1hcmdpbjogMjBweDsKKyAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OworICAgIH0KKworICAgIC5jb21wb3NpdGVkIHsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAg
IGhlaWdodDogMTUwcHg7CisgICAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsK
KyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKworICAgIC5ub3QtY29tcG9z
aXRlZCB7CisgICAgICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6IDE1MHB4OworICAgICAg
YmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB9CisKKyAgICAuaW4tZmxvdy1wb3NpdGlvbmVk
IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGRpc3BsYXk6IGJsb2NrOworICAg
IH0KKworICAgIC5maXhlZCB7CisgICAgICB6LWluZGV4OiAtMTsKKyAgICAgIHBvc2l0aW9uOiBh
YnNvbHV0ZTsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMzAwcHg7CisgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHR5
cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgaWYgKHdpbmRv
dy5pbnRlcm5hbHMpCisgICAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5j
dGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworCisg
ICAgICBpZiAod2luZG93LmludGVybmFscykgeworICAgICAgICB2YXIgbGF5ZXJUcmVlID0gd2lu
ZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICB2YXIgcHJl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgdmFyIHRleHQg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYXllclRyZWUgKyAnXG4nKTsKKyAgICAgICAgcHJl
LmFwcGVuZENoaWxkKHRleHQpOworICAgICAgfQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgICAgPGRpdiBjbGFzcz0iaW4tZmxv
dy1wb3NpdGlvbmVkIj4KKyAgICAgIDxkaXYgY2xhc3M9ImZpeGVkIj48L2Rpdj4KKyAgICA8L2Rp
dj4KKyAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVkIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJu
b3QtY29tcG9zaXRlZCI+PC9kaXY+CisgIDwvZGl2PgorICA8cHJlIGlkPSJjb25zb2xlIj48L3By
ZT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTViZDM0YmE4MmUzMmRlNWY4NTI0MDQ3NDFlM2Y1OGY4
MzllYWU2NS4uMTIzYjdkNzhmZGQ1ZDI0YzNlMjFlODc1NjE4MTUzYzQ1OWJiN2QxOSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNjI3
LDYgKzM2MjcsOSBAQCB3ZWJraXQub3JnL2IvOTI5NjggaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9y
dC1jYWNoZS1vbnByb2dyZXNzLmh0bWwKICMgU2Nyb2xsaW5nIGNvbnRlbnQgZHJhd3MgYmVuZWF0
aCBzY3JvbGxiYXJzIGluIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIG1vZGUuCiB3ZWJraXQub3JnL2Iv
MTAzMTU2IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcv
c2Nyb2xsYmFycy9jdXN0b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCiAKKyMgUmVxdWlyZXMgYW4gdXBkYXRlZCBiYXNlbGluZSBhZnRl
ciAxMDYxNDIuCit3ZWJraXQub3JnL2IvMTA2ODIwIHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwv
Z3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvb3ZlcmZsb3cvb3ZlcmZsb3ctc2Nyb2xsLmh0bWwgWyBG
YWlsdXJlIF0KKwogIyBGYWlscyBkdWUgdG8gQnVnIDg1ODU2Lgogd2Via2l0Lm9yZy9iLzg1ODU2
IFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9ibG9jay9mbG9hdC8wMjguaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg1ODU2IFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9i
bG9jay9mbG9hdC8wMjYuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Ny
b2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGlu
Zy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRh
MmY5YjliYWQ0YjRiY2Y3YzNiNDUzZjU4ZmJiNDViOGY2MmYxNAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVk
LXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzOCBAQAorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAo
Y2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAu
MDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAg
IChwb3NpdGlvbiAyOC4wMCAyMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDAp
CisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgIChjaGlsZHJlbiAxCisgICAg
ICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRpb24gMS4wMCAxLjAw
KQorICAgICAgICAgICAgICAoYm91bmRzIDIwMC4wMCAyMDAuMDApCisgICAgICAgICAgICAgIChj
aGlsZHJlbiAxCisgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAg
ICAgIChib3VuZHMgMjAwLjAwIDMwMC4wMCkKKyAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRl
bnQgMSkKKyAgICAgICAgICAgICAgICAgIChjaGlsZHJlbiAyCisgICAgICAgICAgICAgICAgICAg
IChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDIuMDAgMjAy
LjAwKQorICAgICAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAg
ICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAg
ICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDE1MC4wMCkKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKQorICAgICAgICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkK
KyAgKQorKQorCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183084</attachid>
            <date>2013-01-16 18:18:39 -0800</date>
            <delta_ts>2013-01-23 20:18:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106142-20130116211540.patch</filename>
            <type>text/plain</type>
            <size>54705</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5ODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU5YTU0MjQ1MDBhN2Rm
OGQ5OTgyNGM0NjE5NGYzOWEzYjVjZjk2OS4uZmM5Mjk2OTg0MTliZDBmMGEyOWJhNmJjMjMyYTQy
NTFjMTg4MmE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxMy0wMS0xNiAgSWFu
IFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4KKworICAgICAgICBQcm9tb3RlIGNvbXBv
c2l0ZWQtc2Nyb2xsaW5nIGxheWVycyB0byBzdGFja2luZyBjb250ZXh0cy4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE0MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gd2UgYXV0b21hdGljYWxs
eSBvcHQgaW50byBjb21wb3NpdGVkIHNjcm9sbGluZywgd2UndmUgZGV0ZXJtaW5lZAorICAgICAg
ICB0aGF0IGl0J3Mgc2FmZSB0byBiZWNvbWUgYSBzdGFja2luZyBjb250ZXh0IChpZiBpdCdzIG5v
dCwgd2UgZ2V0CisgICAgICAgIHJlbmRlcmluZyBpc3N1ZXMgd2hlbiB3ZSBwcm9tb3RlKSwgYnV0
IHByZXZpb3VzbHksIHdlIGRpZG4ndCBhY3R1YWxseQorICAgICAgICBwcm9tb3RlIHRoZSBsYXll
ciB0byBiZSBhIHN0YWNraW5nIGNvbnRleHQuIFRoaXMgaGFkIGEgbnVtYmVyIG9mCisgICAgICAg
IHVuZm9ydHVuYXRlIHNpZGUgZWZmZWN0cy4gVGhlIG1haW4gcHJvYmxlbSB3YXMgdGhhdCB3aGVu
IGNvbXB1dGluZyAKKyAgICAgICAgb3ZlcmxhcCBpbiB0aGUgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LCB0aGUgbm93IGNvbXBvc2l0ZWQgc2Nyb2xsaW5nCisgICAgICAgIGxheWVyJ3MgZGVzY2VuZGFu
dHMgd2VyZSBub3QgcHJvY2Vzc2VkIGJ5IHRyYXZlcnNpbmcgaXRzIGxheWVyIGxpc3RzLAorICAg
ICAgICBidXQgcmF0aGVyIGl0cyBzdGFja2luZyBjb250ZXh0J3MuIFNvIHdoYXQgd291bGQgaGFw
cGVuIGlzIHRoYXQgd2UKKyAgICAgICAgd291bGQgcHVzaCBvbnRvIHRoZSBvdmVybGFwIG1hcCBz
dGFjayB3aGVuIHByb2Nlc3NpbmcgdGhlIG5lZyB6LW9yZGVyCisgICAgICAgIGFuZCBub3JtYWwg
ZmxvdyBkZXNjZW5kYW50cywgYnV0IHdlIHdvdWxkIHBvcCBiZWZvcmUgcHJvY2Vzc2luZyB0aGUK
KyAgICAgICAgc3RhY2tpbmcgY29udGV4dCdzIHBvcyB6LW9yZGVyIGxpc3QuIFdoZW4gdGhpcyBw
b3AgaGFwcGVucywgdGhlCisgICAgICAgIHByZXZpb3VzbHkgY29tcHV0ZWQgb3ZlcmxhcCByZWdp
b25zICd0YWtlIGVmZmVjdCcuIFRoaXMgbWVhbnMgdGhhdCBpZgorICAgICAgICBhbnkgb2YgdGhl
IG5vcm1hbCBmbG93IG9yIG5lZyB6LW9yZGVyIGRlc2NlbmRhbnRzIHdlcmUgY29tcG9zaXRlZCwg
YW55IAorICAgICAgICBwb3NpdGl2ZSB6LW9yZGVyIGRlc2NlbmRhbnRzIHdvdWxkIGdldCBwcm9t
b3RlZCBpZiB0aGV5IG92ZXJsYXBwZWQuCisgICAgICAgIElmIHdlIHByb21vdGUgdGhlIGNvbXBv
c2l0ZWQgc2Nyb2xsaW5nIGxheWVyIHRvIGEgc3RhY2tpbmcgY29udGV4dCwgdGhpcworICAgICAg
ICBwb3Agbm8gbG9uZ2VyIGhhcHBlbnMgYXQgYW4gdW5mb3J0dW5hdGUgdGltZSwgYW5kIHNvIGl0
cyBkZXNjZW5kYW50cworICAgICAgICBjYW4ndCBpbmNvcnJlY3RseSBjYXVzZSBlYWNoIG90aGVy
IHRvIGJlIHByb21vdGVkIGR1ZSB0byBvdmVybGFwLgorCisgICAgICAgIE9uZSB0cmlja3kgcG9p
bnQgaGVyZSBpcyB0aGF0IHRoZSBjb2RlIGZvciBhdXRvbWF0aWNhbGx5IG9wdGluZyBpbnRvCisg
ICAgICAgIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIHVzZXMgaXNTdGFja2luZ0NvbnRleHQgdG8gZG8g
aXRzIGNhbGN1bGF0aW9ucy4gSXQKKyAgICAgICAgYWxzbyB1c2VzIGxheWVyIGxpc3RzIHRoYXQg
YXJlIGNvbXB1dGVkIGluIHdheXMgdGhhdCBkZXBlbmQgb24gdGhlCisgICAgICAgIHZhbHVlIG9m
IGlzU3RhY2tpbmdDb250ZXh0LgorCisgICAgICAgIFRvIGhvcGVmdWxseSBjbGFyaWZ5IHRoaXMg
c2l0dWF0aW9uLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGNvbmNlcHQKKyAgICAgICAgb2Yg
YSBzdGFja2luZyBjb250YWluZXIuIEEgc3RhY2tpbmcgY29udGFpbmVyIGNhbiBoYXZlIHotb3Jk
ZXIgbGlzdHMsCisgICAgICAgIGJ1dCBpcyBub3QgbmVjZXNzYXJpbHkgYSBzdGFja2luZyBjb250
ZXh0LiBDb21wb3NpdGVkIHNjcm9sbGluZyBsYXllcnMKKyAgICAgICAgd2lsbCBiZSBzdGFja2lu
ZyBjb250YWluZXJzLiBNb3N0IHBsYWNlcyB3aGVyZSB3ZSdkIHByZXZpb3VzbHkgdXNlZAorICAg
ICAgICBzdGFja2luZyBjb250ZXh0LCB3ZSBjYW4gc3dpdGNoIHRvIHN0YWNraW5nIGNvbnRhaW5l
ci4gV2hlbiBkZWNpZGluZworICAgICAgICBpZiB3ZSB3aWxsIGF1dG9tYXRpY2FsbHkgb3B0IGlu
dG8gY29tcG9zaXRlZCBzY3JvbGxpbmcsIHdlIHdpbGwgdXNlCisgICAgICAgIHN0YWNraW5nIGNv
bnRleHQgc3RhdHVzLgorCisgICAgICAgIFRlc3Q6IGNvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBv
c2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWwKKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGb3JMYXllcik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpSZW5kZXJMYXllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5n
T3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVBhZ2luYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNhbkJlU3RhY2tpbmdDb250YWluZXIp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldEhhc1Zpc2libGVDb250ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpkaXJ0eTNEVHJhbnNmb3JtZWREZXNjZW5k
YW50U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzdGFja2luZ0NvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpjb21wb3NpdGluZ0NvbnRhaW5lcik6CisgICAgICAg
IChXZWJDb3JlOjpleHBhbmRDbGlwUmVjdEZvckRlc2NlbmRhbnRzQW5kUmVmbGVjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6YWRkQ2hpbGQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFNpbmNlIHRo
aXMgdXBkYXRlIGNhbiBhZmZlY3Qgb3VyIHN0YWNraW5nIGNvbnRhaW5lciBzdGF0dXMsIGl0IGRp
cnRpZXMKKyAgICAgICAgICB0aGUgbmVjZXNzYXJ5IGxheWVyIGxpc3RzIGFuZCBpbmZvcm1zIHRo
ZSBjb21wb3NpdG9yIGFib3V0IHRoZQorICAgICAgICAgIHVwZGF0ZXMgdGhhdCBhcmUgbm93IG5l
Y2Vzc2FyeS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVDb21wb3NpdGlu
Z0xheWVyc0FmdGVyU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYWlu
dFBhZ2luYXRlZENoaWxkTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhp
dFRlc3RQYWdpbmF0ZWRDaGlsZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpjYWxjdWxhdGVMYXllckJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6
ZGlydHlaT3JkZXJMaXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6ZGlydHlT
dGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6
OmNvbGxlY3RMYXllcnMpOgorICAgICAgICAgIFJlZmFjdG9yZWQgdG8gYWxsb3cgei1vcmRlciBs
aXN0cyB0aGF0IGRvIG5vdCBkZXBlbmQgb24gY29tcG9zaXRlZAorICAgICAgICAgIHNjcm9sbGlu
ZyB0byBiZSBjb21wdXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVM
YXllckxpc3RzSWZOZWVkZWQpOgorICAgICAgICAgIFdoZW4gdGhlIGxheWVyIGxpc3RzIGFyZSB1
cGRhdGVkLCB3ZSBuZWVkIHRvIHVwZGF0ZQorICAgICAgICAgIG1faGFzT3V0T2ZGbG93UG9zaXRp
b25lZERlc2NlbmRhbnQuIFRoaXMgY2FuIG5vdyBhZmZlY3Qgb3VyCisgICAgICAgICAgc3RhY2tp
bmcgY29udGFpbmVyIHN0YXR1cywgc28gd2UgbWF5IG5lZWQgdG8gcmVjb21wdXRlIHRoZSBsYXll
ciBsaXN0cworICAgICAgICAgIGlmIHRoaXMgaGFwcGVucy4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU3RhY2tpbmdDb250ZXh0QWZ0ZXJTdHls
ZUNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjppc1N0YWNraW5nQ29udGFpbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwb3NaT3JkZXJMaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpuZWdaT3JkZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjppc0RpcnR5U3RhY2tpbmdDb250YWluZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmNsZWFyWk9yZGVyTGlzdHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OnVwZGF0ZVpPcmRlckxpc3RzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6
dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyQmFja2luZzo6Y29tcG9zaXRpbmdPcGFjaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyQmFja2luZzo6aGFzVmlzaWJsZU5vbkNvbXBvc2l0aW5nRGVzY2VuZGFudExheWVycyk6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuY2xvc2luZ05vblN0YWNraW5nQ2xp
cHBpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFk
ZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyVHJl
ZUdlb21ldHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudCk6
CisgICAgICAgICAgVGhlIGFib3ZlIGNoYW5nZXMgYXJlIGR1ZSB0byB0aGUgc3dpdGNoaW5nIGZy
b20gaXNTdGFja2luZ0NvbnRleHQgdG8KKyAgICAgICAgICBpc1N0YWNraW5nQ29udGFpbmVyLgor
ICAgICAgICAoV2ViQ29yZTo6aXNSb290bW9zdEZpeGVkT3JTdGlja3lMYXllcik6CisKIDIwMTMt
MDEtMTYgIEdyemVnb3J6IEN6YWprb3dza2kgIDxnLmN6YWprb3dza2lAc2Ftc3VuZy5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4IGFmdGVyIHIxMzk4NzcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
aW5kZXggZGJjYTQyZGM2MGQyOGU5MzZkODUyZjhkZTdlNzU5M2NlNjA0YmQwNy4uNWI2MzBiNGFk
M2I2OGNjZGYwZjE3NWRjMWUwODhkMzdhMWI2N2MxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDEzLTAxLTE2ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFByb21vdGUgY29tcG9zaXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0YWNraW5nIGNv
bnRleHRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA2MTQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVy
VHJlZUhvc3QuY3BwOgorICAgICAgICAoV2ViS2l0Ojp1cGRhdGVPZmZzZXRGcm9tVmlld3BvcnRG
b3JTZWxmKToKKyAgICAgICAgICBVc2UgaXNTdGFja2luZ0NvbnRhaW5lciByYXRoZXIgdGhhbiBp
c1N0YWNraW5nQ29udGV4dAorCiAyMDEzLTAxLTE1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVyZ2UgTGF5ZXJUcmVlSG9zdENBIGFuZCBMYXllclRy
ZWVIb3N0TWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmNwcAppbmRleCBmNTU4M2M4YTM1YWY5MDlhZjc3NDQxMzQ4YTBmMGFjM2Nj
YzZlNmRiLi5jNzdkMTE4ZGU2ZTAyOGMzNmIxYzQwZWRiOGE1ODA2ZDAxZWE5YmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5j
cHAKQEAgLTE0OSw3ICsxNDksNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6
OkxheWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGbwogICAgIGlmIChy
ZW5kZXJMYXllci0+cmVmbGVjdGlvbkxheWVyKCkpCiAgICAgICAgIGNoaWxkcmVuQXJyYXktPmFk
ZEl0ZW0oYnVpbGRPYmplY3RGb3JMYXllcihyZW5kZXJMYXllci0+cmVmbGVjdGlvbkxheWVyKCkp
KTsKIAotICAgIGlmIChyZW5kZXJMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlm
IChyZW5kZXJMYXllci0+aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IHJlbmRlckxheWVyLT5uZWdaT3JkZXJM
aXN0KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNp
emUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkK
QEAgLTE2Myw3ICsxNjMsNyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpMYXllclRyZWU6Okxh
eWVyPiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6YnVpbGRPYmplY3RGbwogICAgICAgICAgICAg
Y2hpbGRyZW5BcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZvckxheWVyKG5vcm1hbEZsb3dMaXN0
LT5hdChpKSkpOwogICAgIH0KICAgICAKLSAgICBpZiAocmVuZGVyTGF5ZXItPmlzU3RhY2tpbmdD
b250ZXh0KCkpIHsKKyAgICBpZiAocmVuZGVyTGF5ZXItPmlzU3RhY2tpbmdDb250YWluZXIoKSkg
ewogICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSByZW5k
ZXJMYXllci0+cG9zWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBzaXplX3QgbGlzdFNpemUg
PSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxpc3RTaXplOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAppbmRleCBmZDJmYzczMmRiZWIwOTZjMzFiN2ViNzc4ZWRkY2QzMWM5ZmFlOWRjLi4xNDdhYTNm
ZDhiMTk0NzE3NzhiOWRlMTNhYjkzNGQyOWExYWMyMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE5NSw5ICsxOTUsOSBAQCBSZW5kZXJMYXllcjo6UmVu
ZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVuZGVyZXIpCiAgICAgbV9pc05vcm1h
bEZsb3dPbmx5ID0gc2hvdWxkQmVOb3JtYWxGbG93T25seSgpOwogICAgIG1faXNTZWxmUGFpbnRp
bmdMYXllciA9IHNob3VsZEJlU2VsZlBhaW50aW5nTGF5ZXIoKTsKIAotICAgIC8vIE5vbi1zdGFj
a2luZyBjb250ZXh0cyBzaG91bGQgaGF2ZSBlbXB0eSB6LW9yZGVyIGxpc3RzLiBBcyB0aGlzIGlz
IGFscmVhZHkgdGhlIGNhc2UsCisgICAgLy8gTm9uLXN0YWNraW5nIGNvbnRhaW5lcnMgc2hvdWxk
IGhhdmUgZW1wdHkgei1vcmRlciBsaXN0cy4gQXMgdGhpcyBpcyBhbHJlYWR5IHRoZSBjYXNlLAog
ICAgIC8vIHRoZXJlIGlzIG5vIG5lZWQgdG8gZGlydHkgLyByZWNvbXB1dGUgdGhlc2UgbGlzdHMu
Ci0gICAgbV96T3JkZXJMaXN0c0RpcnR5ID0gaXNTdGFja2luZ0NvbnRleHQoKTsKKyAgICBtX3pP
cmRlckxpc3RzRGlydHkgPSBpc1N0YWNraW5nQ29udGFpbmVyKCk7CiAKICAgICBTY3JvbGxhYmxl
QXJlYTo6c2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOwogCkBAIC01
MjEsMTAgKzUyMSwxMCBAQCBib29sIFJlbmRlckxheWVyOjphY2NlbGVyYXRlZENvbXBvc2l0aW5n
Rm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgY29uc3QKICAgICAgICAgJiYgcmVuZGVyZXIoKS0+
ZnJhbWUoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3Zl
cmZsb3dTY3JvbGxFbmFibGVkKCk7CiB9CiAKLS8vIElmIHdlIGFyZSBhIHN0YWNraW5nIGNvbnRl
eHQsIHRoZW4gdGhpcyBmdW5jdGlvbiB3aWxsIGRldGVybWluZSBpZiBvdXIKKy8vIElmIHdlIGFy
ZSBhIHN0YWNraW5nIGNvbnRhaW5lciwgdGhlbiB0aGlzIGZ1bmN0aW9uIHdpbGwgZGV0ZXJtaW5l
IGlmIG91cgogLy8gZGVzY2VuZGFudHMgZm9yIGEgY29udGlndW91cyBibG9jayBpbiBzdGFja2lu
ZyBvcmRlci4gVGhpcyBpcyByZXF1aXJlZCBpbgotLy8gb3JkZXIgZm9yIGFuIGVsZW1lbnQgdG8g
YmUgc2FmZWx5IHByb21vdGVkIHRvIGEgc3RhY2tpbmcgY29udGV4dC4gSXQgaXMgc2FmZQotLy8g
dG8gYmVjb21lIGEgc3RhY2tpbmcgY29udGV4dCBpZiB0aGlzIGNoYW5nZSB3b3VsZCBub3QgYWx0
ZXIgdGhlIHN0YWNraW5nCisvLyBvcmRlciBmb3IgYW4gZWxlbWVudCB0byBiZSBzYWZlbHkgcHJv
bW90ZWQgdG8gYSBzdGFja2luZyBjb250YWluZXIuIEl0IGlzIHNhZmUKKy8vIHRvIGJlY29tZSBh
IHN0YWNraW5nIGNvbnRhaW5lciBpZiB0aGlzIGNoYW5nZSB3b3VsZCBub3QgYWx0ZXIgdGhlIHN0
YWNraW5nCiAvLyBvcmRlciBvZiBsYXllcnMgb24gdGhlIHBhZ2UuIFRoYXQgY2FuIG9ubHkgaGFw
cGVuIGlmIGEgbm9uLWRlc2NlbmRhbnQgYXBwZWFyCiAvLyBiZXR3ZWVuIHVzIGFuZCBvdXIgZGVz
Y2VuZGFudHMgaW4gc3RhY2tpbmcgb3JkZXIuIEhlcmUncyBhbiBleGFtcGxlOgogLy8KQEAgLTUz
Nyw4ICs1MzcsOCBAQCBib29sIFJlbmRlckxheWVyOjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9y
T3ZlcmZsb3dTY3JvbGxFbmFibGVkKCkgY29uc3QKIC8vICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA1CiAvLwogLy8gSSd2ZSBsYWJlbGVkIG91ciBub3JtYWwgZmxvdyBkZXNjZW5k
YW50cyBBLCBCLCBDLCBhbmQgRCwgb3VyIHN0YWNraW5nCi0vLyBjb250ZXh0IGRlc2NlbmRhbnRz
IHdpdGggdGhlaXIgeiBpbmRpY2VzLCBhbmQgdXMgd2l0aCAndGhpcycgKHdlJ3JlIGEKLS8vIHN0
YWNraW5nIGNvbnRleHQgYW5kIG91ciB6SW5kZXggZG9lc24ndCBtYXR0ZXIgaGVyZSkuIFRoZXNl
IG5vZGVzIGFwcGVhciBpbgorLy8gY29udGFpbmVyIGRlc2NlbmRhbnRzIHdpdGggdGhlaXIgeiBp
bmRpY2VzLCBhbmQgdXMgd2l0aCAndGhpcycgKHdlJ3JlIGEKKy8vIHN0YWNraW5nIGNvbnRhaW5l
ciBhbmQgb3VyIHpJbmRleCBkb2Vzbid0IG1hdHRlciBoZXJlKS4gVGhlc2Ugbm9kZXMgYXBwZWFy
IGluCiAvLyB0aHJlZSBsaXN0czogcG9zWk9yZGVyLCBuZWdaT3JkZXIsIGFuZCBub3JtYWwgZmxv
dyAoa2VlcCBpbiBtaW5kIHRoYXQgbm9ybWFsCiAvLyBmbG93IGxheWVycyBkb24ndCBvdmVybGFw
KS4gU28gaWYgd2UgYXJyYW5nZSB0aGVzZSBsaXN0cyBpbiBvcmRlciB3ZSBnZXQgb3VyCiAvLyBz
dGFja2luZyBvcmRlcjoKQEAgLTU1NCwxMCArNTU0LDEwIEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbEVuYWJsZWQoKSBjb25zdAogLy8K
IC8vIE5vdGUgdGhhdCB0aGUgbm9ybWFsIGZsb3cgZGVzY2VuZGFudHMgY2FuIHNoYXJlIGFuIGlu
ZGV4IGJlY2F1c2UgdGhleSBkb24ndAogLy8gc3RhY2svb3ZlcmxhcC4gTm93IG91ciBwcm9ibGVt
IGJlY29tZXMgdmVyeSBzaW1wbGU6IGEgbGF5ZXIgY2FuIHNhZmVseSBiZWNvbWUKLS8vIGEgc3Rh
Y2tpbmcgY29udGV4dCBpZiB0aGUgc3RhY2tpbmctb3JkZXIgaW5kaWNlcyBvZiBpdCBhbmQgaXRz
IGRlc2NlbmRhbnRzCisvLyBhIHN0YWNraW5nIGNvbnRhaW5lciBpZiB0aGUgc3RhY2tpbmctb3Jk
ZXIgaW5kaWNlcyBvZiBpdCBhbmQgaXRzIGRlc2NlbmRhbnRzCiAvLyBhcHBlYXIgaW4gYSBjb250
aWd1b3VzIGJsb2NrIGluIHRoZSBsaXN0IG9mIHN0YWNraW5nIGluZGljZXMuIFRoaXMgcHJvYmxl
bQogLy8gY2FuIGJlIHNvbHZlZCB2ZXJ5IGVmZmljaWVudGx5IGJ5IGNhbGN1bGF0aW5nIHRoZSBt
aW4vbWF4IHN0YWNraW5nIGluZGljZXMgaW4KLS8vIHRoZSBzdWJ0cmVlLCBhbmQgdGhlIG51bWJl
ciBzdGFja2luZyBjb250ZXh0IGRlc2NlbmRhbnRzLiBPbmNlIHdlIGhhdmUgdGhpcworLy8gdGhl
IHN1YnRyZWUsIGFuZCB0aGUgbnVtYmVyIHN0YWNraW5nIGNvbnRhaW5lciBkZXNjZW5kYW50cy4g
T25jZSB3ZSBoYXZlIHRoaXMKIC8vIGluZm9ybWF0aW9uLCB3ZSBrbm93IHRoYXQgdGhlIHN1YnRy
ZWUncyBpbmRpY2VzIGZvcm0gYSBjb250aWd1b3VzIGJsb2NrIGlmOgogLy8KIC8vICAgICAgICAg
ICBtYXhTdGFja0luZGV4IC0gbWluU3RhY2tJbmRleCA9PSBudW1TQ0Rlc2NlbmRhbnRzCkBAIC01
NzIsNyArNTcyLDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zv
ck92ZXJmbG93U2Nyb2xsRW5hYmxlZCgpIGNvbnN0CiAvLyAgPT09PiAgICAgICAgICAgICAgICAg
ICAgICAxIC0gKC0xKSA9PSAyCiAvLyAgPT09PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MiA9PSAyCiAvLwotLy8gIFNpbmNlIHRoaXMgaXMgdHJ1ZSwgQSBjYW4gc2FmZWx5IGJlY29tZSBh
IHN0YWNraW5nIGNvbnRleHQuCisvLyAgU2luY2UgdGhpcyBpcyB0cnVlLCBBIGNhbiBzYWZlbHkg
YmVjb21lIGEgc3RhY2tpbmcgY29udGFpbmVyLgogLy8gIE5vdywgZm9yIG5vZGUgQyB3ZSBoYXZl
OgogLy8KIC8vICAgbWF4U3RhY2tJbmRleCA9IDQKQEAgLTU4NCw3ICs1ODQsNyBAQCBib29sIFJl
bmRlckxheWVyOjphY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFibGVk
KCkgY29uc3QKIC8vICA9PT0+ICAgICAgICAgICAgICAgICAgICAgICAgIDQgLSAwID09IDIKIC8v
ICA9PT0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ID09IDIKIC8vCi0vLyBTaW5jZSB0
aGlzIGlzIGZhbHNlLCBDIGNhbm5vdCBiZSBzYWZlbHkgcHJvbW90ZWQgdG8gYSBzdGFja2luZyBj
b250ZXh0LiBUaGlzCisvLyBTaW5jZSB0aGlzIGlzIGZhbHNlLCBDIGNhbm5vdCBiZSBzYWZlbHkg
cHJvbW90ZWQgdG8gYSBzdGFja2luZyBjb250YWluZXIuIFRoaXMKIC8vIGhhcHBlbmVkIGJlY2F1
c2Ugb2YgdGhlIGVsZW1lbnRzIHdpdGggei1pbmRleCA1IGFuZCAwLiBOb3cgaWYgNSBoYWQgYmVl
biBhCiAvLyBjaGlsZCBvZiBDIHJhdGhlciB0aGFuIEQsIGFuZCBBIGhhZCBubyBjaGlsZCB3aXRo
IFogaW5kZXggMCwgd2Ugd291bGQgaGF2ZSBoYWQ6CiAvLwpAQCAtNjA2LDI1ICs2MDYsMjkgQEAg
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyKCkKICAgICBBU1NFUlQoIW1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CiAgICAgQVNTRVJU
KCFtX3pPcmRlckxpc3RzRGlydHkpOwogCisgICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+
ID4gcG9zWk9yZGVyTGlzdDsKKyAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiBuZWda
T3JkZXJMaXN0OworICAgIHJlYnVpbGRaT3JkZXJMaXN0cyhTdG9wQXRTdGFja2luZ0NvbnRleHRz
LCBwb3NaT3JkZXJMaXN0LCBuZWdaT3JkZXJMaXN0KTsKKwogICAgIC8vIENyZWF0ZSBhIHJldmVy
c2UgbG9va3VwLgogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBpbnQ+IGxvb2t1cDsK
IAotICAgIGlmIChtX25lZ1pPcmRlckxpc3QpIHsKKyAgICBpZiAobmVnWk9yZGVyTGlzdCkgewog
ICAgICAgICBpbnQgc3RhY2tpbmdPcmRlckluZGV4ID0gLTE7Ci0gICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG1fbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgICAgICBzaXplX3QgbGlzdFNpemUg
PSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9
IG1fbmVnWk9yZGVyTGlzdC0+YXQobGlzdFNpemUgLSBpIC0gMSk7CisgICAgICAgICAgICBSZW5k
ZXJMYXllciogY3VycmVudExheWVyID0gbmVnWk9yZGVyTGlzdC0+YXQobGlzdFNpemUgLSBpIC0g
MSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGxvb2t1cC5zZXQoY3VycmVu
dExheWVyLCBzdGFja2luZ09yZGVySW5kZXgtLSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAobV9wb3NaT3JkZXJMaXN0KSB7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG1fcG9zWk9y
ZGVyTGlzdC0+c2l6ZSgpOworICAgIGlmIChwb3NaT3JkZXJMaXN0KSB7CisgICAgICAgIHNpemVf
dCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgaW50IHN0YWNraW5n
T3JkZXJJbmRleCA9IDE7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IG1fcG9zWk9y
ZGVyTGlzdC0+YXQoaSk7CisgICAgICAgICAgICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0g
cG9zWk9yZGVyTGlzdC0+YXQoaSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRMYXllci0+aXNT
dGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGxvb2t1cC5zZXQoY3VycmVudExheWVyLCBzdGFja2luZ09yZGVySW5kZXgrKyk7CkBAIC05MTQs
MjEgKzkxOCwyMSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVQYWdpbmF0aW9uKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIElmIHdlJ3JlIG5vdCBub3JtYWwgZmxvdywgdGhl
biB3ZSBuZWVkIHRvIGxvb2sgZm9yIGEgbXVsdGktY29sdW1uIG9iamVjdCBiZXR3ZWVuIHVzIGFu
ZCBvdXIgc3RhY2tpbmcgY29udGV4dC4KLSAgICBSZW5kZXJMYXllciogYW5jZXN0b3JTdGFja2lu
Z0NvbnRleHQgPSBzdGFja2luZ0NvbnRleHQoKTsKKyAgICAvLyBJZiB3ZSdyZSBub3Qgbm9ybWFs
IGZsb3csIHRoZW4gd2UgbmVlZCB0byBsb29rIGZvciBhIG11bHRpLWNvbHVtbiBvYmplY3QgYmV0
d2VlbiB1cyBhbmQgb3VyIHN0YWNraW5nIGNvbnRhaW5lci4KKyAgICBSZW5kZXJMYXllciogYW5j
ZXN0b3JTdGFja2luZ0NvbnRhaW5lciA9IHN0YWNraW5nQ29udGFpbmVyKCk7CiAgICAgZm9yIChS
ZW5kZXJMYXllciogY3VyciA9IHBhcmVudCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkp
IHsKICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmhhc0NvbHVtbnMoKSkgewogICAgICAg
ICAgICAgbV9pc1BhZ2luYXRlZCA9IGNoZWNrQ29udGFpbmluZ0Jsb2NrQ2hhaW5Gb3JQYWdpbmF0
aW9uKHJlbmRlcmVyKCksIGN1cnItPnJlbmRlckJveCgpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQotICAgICAgICBpZiAoY3VyciA9PSBhbmNlc3RvclN0YWNraW5nQ29udGV4dCkK
KyAgICAgICAgaWYgKGN1cnIgPT0gYW5jZXN0b3JTdGFja2luZ0NvbnRhaW5lcikKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXI6OmNhblNhZmVseUVzdGFi
bGlzaEFTdGFja2luZ0NvbnRleHQoKSBjb25zdAorYm9vbCBSZW5kZXJMYXllcjo6Y2FuQmVTdGFj
a2luZ0NvbnRhaW5lcigpIGNvbnN0CiB7Ci0gICAgaWYgKGlzU3RhY2tpbmdDb250ZXh0KCkgfHwg
IXN0YWNraW5nQ29udGV4dCgpKQorICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCgpIHx8ICFzdGFj
a2luZ0NvbnRhaW5lcigpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBtX2Rl
c2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcjsKQEAgLTk0Niw5ICs5NTAsOSBA
QCB2b2lkIFJlbmRlckxheWVyOjpzZXRIYXNWaXNpYmxlQ29udGVudCgpCiAgICAgY29tcHV0ZVJl
cGFpbnRSZWN0cyhyZW5kZXJlcigpLT5jb250YWluZXJGb3JSZXBhaW50KCkpOwogICAgIGlmICgh
aXNOb3JtYWxGbG93T25seSgpKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGNvbGxlY3QgaW52aXNp
YmxlIGxheWVycyBpbiB6LW9yZGVyIGxpc3RzIGlmIHdlIGFyZSBub3QgaW4gY29tcG9zaXRpbmcg
bW9kZS4KLSAgICAgICAgLy8gQXMgd2UgYmVjYW1lIHZpc2libGUsIHdlIG5lZWQgdG8gZGlydHkg
b3VyIHN0YWNraW5nIGNvbnRleHRzIGFuY2VzdG9ycyB0byBiZSBwcm9wZXJseQorICAgICAgICAv
LyBBcyB3ZSBiZWNhbWUgdmlzaWJsZSwgd2UgbmVlZCB0byBkaXJ0eSBvdXIgc3RhY2tpbmcgY29u
dGFpbmVycyBhbmNlc3RvcnMgdG8gYmUgcHJvcGVybHkKICAgICAgICAgLy8gY29sbGVjdGVkLiBG
SVhNRTogV2hlbiBjb21wb3NpdGluZywgd2UgY291bGQgc2tpcCB0aGlzIGRpcnR5aW5nIHBoYXNl
LgotICAgICAgICBmb3IgKFJlbmRlckxheWVyKiBzYyA9IHN0YWNraW5nQ29udGV4dCgpOyBzYzsg
c2MgPSBzYy0+c3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICAgICAgZm9yIChSZW5kZXJMYXllciog
c2MgPSBzdGFja2luZ0NvbnRhaW5lcigpOyBzYzsgc2MgPSBzYy0+c3RhY2tpbmdDb250YWluZXIo
KSkgewogICAgICAgICAgICAgc2MtPmRpcnR5Wk9yZGVyTGlzdHMoKTsKICAgICAgICAgICAgIGlm
IChzYy0+aGFzVmlzaWJsZUNvbnRlbnQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEw
NjcsMTUgKzEwNzEsMTUgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudERlcGVu
ZGVudEZsYWdzKEhhc2hTZXQ8Y29uc3QgUmVuZGVyT2JqZWN0Kj4qIG8KIAogdm9pZCBSZW5kZXJM
YXllcjo6ZGlydHkzRFRyYW5zZm9ybWVkRGVzY2VuZGFudFN0YXR1cygpCiB7Ci0gICAgUmVuZGVy
TGF5ZXIqIGN1cnIgPSBzdGFja2luZ0NvbnRleHQoKTsKKyAgICBSZW5kZXJMYXllciogY3VyciA9
IHN0YWNraW5nQ29udGFpbmVyKCk7CiAgICAgaWYgKGN1cnIpCiAgICAgICAgIGN1cnItPm1fM0RU
cmFuc2Zvcm1lZERlc2NlbmRhbnRTdGF0dXNEaXJ0eSA9IHRydWU7CiAgICAgICAgIAogICAgIC8v
IFRoaXMgcHJvcGFnYXRlcyB1cCB0aHJvdWdoIHByZXNlcnZlLTNkIGhpZXJhcmNoaWVzIHRvIHRo
ZSBlbmNsb3NpbmcgZmxhdHRlbmluZyBsYXllci4KLSAgICAvLyBOb3RlIHRoYXQgcHJlc2VydmVz
M0QoKSBjcmVhdGVzIHN0YWNraW5nIGNvbnRleHQsIHNvIHdlIGNhbiBqdXN0IHJ1biB1cCB0aGUg
c3RhY2tpbmcgY29udGV4dHMuCisgICAgLy8gTm90ZSB0aGF0IHByZXNlcnZlczNEKCkgY3JlYXRl
cyBzdGFja2luZyBjb250ZXh0LCBzbyB3ZSBjYW4ganVzdCBydW4gdXAgdGhlIHN0YWNraW5nIGNv
bnRhaW5lcnMuCiAgICAgd2hpbGUgKGN1cnIgJiYgY3Vyci0+cHJlc2VydmVzM0QoKSkgewogICAg
ICAgICBjdXJyLT5tXzNEVHJhbnNmb3JtZWREZXNjZW5kYW50U3RhdHVzRGlydHkgPSB0cnVlOwot
ICAgICAgICBjdXJyID0gY3Vyci0+c3RhY2tpbmdDb250ZXh0KCk7CisgICAgICAgIGN1cnIgPSBj
dXJyLT5zdGFja2luZ0NvbnRhaW5lcigpOwogICAgIH0KIH0KIApAQCAtMTIzOCwxMyArMTI0Miwx
MyBAQCBGbG9hdFBvaW50IFJlbmRlckxheWVyOjpwZXJzcGVjdGl2ZU9yaWdpbigpIGNvbnN0CiAg
ICAgICAgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS0+cGVyc3BlY3Rp
dmVPcmlnaW5ZKCksIGJvcmRlckJveC5oZWlnaHQoKSkpOwogfQogCi1SZW5kZXJMYXllciogUmVu
ZGVyTGF5ZXI6OnN0YWNraW5nQ29udGV4dCgpIGNvbnN0CitSZW5kZXJMYXllciogUmVuZGVyTGF5
ZXI6OnN0YWNraW5nQ29udGFpbmVyKCkgY29uc3QKIHsKICAgICBSZW5kZXJMYXllciogbGF5ZXIg
PSBwYXJlbnQoKTsKLSAgICB3aGlsZSAobGF5ZXIgJiYgIWxheWVyLT5pc1N0YWNraW5nQ29udGV4
dCgpKQorICAgIHdoaWxlIChsYXllciAmJiAhbGF5ZXItPmlzU3RhY2tpbmdDb250YWluZXIoKSkK
ICAgICAgICAgbGF5ZXIgPSBsYXllci0+cGFyZW50KCk7CiAKLSAgICBBU1NFUlQoIWxheWVyIHx8
IGxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoIWxheWVyIHx8IGxheWVy
LT5pc1N0YWNraW5nQ29udGFpbmVyKCkpOwogICAgIHJldHVybiBsYXllcjsKIH0KIApAQCAtMTI5
NCw3ICsxMjk4LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjplbmNsb3NpbmdUcmFuc2Zv
cm1lZEFuY2VzdG9yKCkgY29uc3QKIAogc3RhdGljIGlubGluZSBjb25zdCBSZW5kZXJMYXllciog
Y29tcG9zaXRpbmdDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQogewotICAgIHJl
dHVybiBsYXllci0+aXNOb3JtYWxGbG93T25seSgpID8gbGF5ZXItPnBhcmVudCgpIDogbGF5ZXIt
PnN0YWNraW5nQ29udGV4dCgpOworICAgIHJldHVybiBsYXllci0+aXNOb3JtYWxGbG93T25seSgp
ID8gbGF5ZXItPnBhcmVudCgpIDogbGF5ZXItPnN0YWNraW5nQ29udGFpbmVyKCk7CiB9CiAKIGlu
bGluZSBib29sIFJlbmRlckxheWVyOjpzaG91bGRSZXBhaW50QWZ0ZXJMYXlvdXQoKSBjb25zdApA
QCAtMTUwOCw3ICsxNTEyLDcgQEAgc3RhdGljIHZvaWQgZXhwYW5kQ2xpcFJlY3RGb3JEZXNjZW5k
YW50c0FuZFJlZmxlY3Rpb24oTGF5b3V0UmVjdCYgY2xpcFJlY3QsIGNvbnMKICAgICAvLyBubyBu
ZWVkIHRvIGV4YW1pbmUgY2hpbGQgbGF5ZXJzKS4KICAgICBpZiAoIWxheWVyLT5yZW5kZXJlcigp
LT5oYXNNYXNrKCkpIHsKICAgICAgICAgLy8gTm90ZTogd2UgZG9uJ3QgaGF2ZSB0byB3YWxrIHot
b3JkZXIgbGlzdHMgc2luY2UgdHJhbnNwYXJlbnQgZWxlbWVudHMgYWx3YXlzIGVzdGFibGlzaAot
ICAgICAgICAvLyBhIHN0YWNraW5nIGNvbnRleHQuICBUaGlzIG1lYW5zIHdlIGNhbiBqdXN0IHdh
bGsgdGhlIGxheWVyIHRyZWUgZGlyZWN0bHkuCisgICAgICAgIC8vIGEgc3RhY2tpbmcgY29udGFp
bmVyLiBUaGlzIG1lYW5zIHdlIGNhbiBqdXN0IHdhbGsgdGhlIGxheWVyIHRyZWUgZGlyZWN0bHku
CiAgICAgICAgIGZvciAoUmVuZGVyTGF5ZXIqIGN1cnIgPSBsYXllci0+Zmlyc3RDaGlsZCgpOyBj
dXJyOyBjdXJyID0gY3Vyci0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgaWYgKCFsYXll
ci0+cmVmbGVjdGlvbigpIHx8IGxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSAhPSBjdXJyKQogICAg
ICAgICAgICAgICAgIGNsaXBSZWN0LnVuaXRlKHRyYW5zcGFyZW5jeUNsaXBCb3goY3Vyciwgcm9v
dExheWVyLCBwYWludEJlaGF2aW9yKSk7CkBAIC0xNjIzLDEwICsxNjI3LDEwIEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OmFkZENoaWxkKFJlbmRlckxheWVyKiBjaGlsZCwgUmVuZGVyTGF5ZXIqIGJlZm9y
ZUNoaWxkKQogICAgICAgICBkaXJ0eU5vcm1hbEZsb3dMaXN0KCk7CiAKICAgICBpZiAoIWNoaWxk
LT5pc05vcm1hbEZsb3dPbmx5KCkgfHwgY2hpbGQtPmZpcnN0Q2hpbGQoKSkgewotICAgICAgICAv
LyBEaXJ0eSB0aGUgei1vcmRlciBsaXN0IGluIHdoaWNoIHdlIGFyZSBjb250YWluZWQuICBUaGUg
c3RhY2tpbmdDb250ZXh0KCkgY2FuIGJlIG51bGwgaW4gdGhlCi0gICAgICAgIC8vIGNhc2Ugd2hl
cmUgd2UncmUgYnVpbGRpbmcgdXAgZ2VuZXJhdGVkIGNvbnRlbnQgbGF5ZXJzLiAgVGhpcyBpcyBv
aywgc2luY2UgdGhlIGxpc3RzIHdpbGwgc3RhcnQKKyAgICAgICAgLy8gRGlydHkgdGhlIHotb3Jk
ZXIgbGlzdCBpbiB3aGljaCB3ZSBhcmUgY29udGFpbmVkLiBUaGUgc3RhY2tpbmdDb250YWluZXIo
KSBjYW4gYmUgbnVsbCBpbiB0aGUKKyAgICAgICAgLy8gY2FzZSB3aGVyZSB3ZSdyZSBidWlsZGlu
ZyB1cCBnZW5lcmF0ZWQgY29udGVudCBsYXllcnMuIFRoaXMgaXMgb2ssIHNpbmNlIHRoZSBsaXN0
cyB3aWxsIHN0YXJ0CiAgICAgICAgIC8vIG9mZiBkaXJ0eSBpbiB0aGF0IGNhc2UgYW55d2F5Lgot
ICAgICAgICBjaGlsZC0+ZGlydHlTdGFja2luZ0NvbnRleHRaT3JkZXJMaXN0cygpOworICAgICAg
ICBjaGlsZC0+ZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3RzKCk7CiAgICAgfQogCiAg
ICAgY2hpbGQtPnVwZGF0ZURlc2NlbmRhbnREZXBlbmRlbnRGbGFncygpOwpAQCAtMTY2Nyw4ICsx
NjcxLDggQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpyZW1vdmVDaGlsZChSZW5kZXJMYXll
ciogb2xkQ2hpbGQpCiAgICAgaWYgKCFvbGRDaGlsZC0+aXNOb3JtYWxGbG93T25seSgpIHx8IG9s
ZENoaWxkLT5maXJzdENoaWxkKCkpIHsgCiAgICAgICAgIC8vIERpcnR5IHRoZSB6LW9yZGVyIGxp
c3QgaW4gd2hpY2ggd2UgYXJlIGNvbnRhaW5lZC4gIFdoZW4gY2FsbGVkIHZpYSB0aGUKICAgICAg
ICAgLy8gcmVhdHRhY2htZW50IHByb2Nlc3MgaW4gcmVtb3ZlT25seVRoaXNMYXllciwgdGhlIGxh
eWVyIG1heSBhbHJlYWR5IGJlIGRpc2Nvbm5lY3RlZAotICAgICAgICAvLyBmcm9tIHRoZSBtYWlu
IGxheWVyIHRyZWUsIHNvIHdlIG5lZWQgdG8gbnVsbC1jaGVjayB0aGUgfHN0YWNraW5nQ29udGV4
dHwgdmFsdWUuCi0gICAgICAgIG9sZENoaWxkLT5kaXJ0eVN0YWNraW5nQ29udGV4dFpPcmRlckxp
c3RzKCk7CisgICAgICAgIC8vIGZyb20gdGhlIG1haW4gbGF5ZXIgdHJlZSwgc28gd2UgbmVlZCB0
byBudWxsLWNoZWNrIHRoZSB8c3RhY2tpbmdDb250YWluZXJ8IHZhbHVlLgorICAgICAgICBvbGRD
aGlsZC0+ZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3RzKCk7CiAgICAgfQogCiAgICAg
aWYgKChvbGRDaGlsZC0+cmVuZGVyZXIoKSAmJiBvbGRDaGlsZC0+cmVuZGVyZXIoKS0+aXNPdXRP
ZkZsb3dQb3NpdGlvbmVkKCkpIHx8IG9sZENoaWxkLT5oYXNPdXRPZkZsb3dQb3NpdGlvbmVkRGVz
Y2VuZGFudCgpKQpAQCAtMTkwMyw3ICsxOTA3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRl
TmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkKICAgICAgICAgbV9uZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcgPSBmYWxzZTsKICAgICBlbHNlIHsKICAgICAgICAgYm9vbCBmb3JjZVVzZUNvbXBvc2l0
ZWRTY3JvbGxpbmcgPSBhY2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxFbmFi
bGVkKCkKLSAgICAgICAgICAgICYmIGNhblNhZmVseUVzdGFibGlzaEFTdGFja2luZ0NvbnRleHQo
KQorICAgICAgICAgICAgJiYgY2FuQmVTdGFja2luZ0NvbnRhaW5lcigpCiAgICAgICAgICAgICAm
JiAhaGFzT3V0T2ZGbG93UG9zaXRpb25lZERlc2NlbmRhbnQoKTsKIAogI2lmIEVOQUJMRShBQ0NF
TEVSQVRFRF9PVkVSRkxPV19TQ1JPTExJTkcpCkBAIC0xOTEzLDggKzE5MTcsMjIgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkKICNlbmRpZgogICAg
IH0KIAotICAgIGlmIChvbGROZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgIT0gbV9uZWVkc0NvbXBv
c2l0ZWRTY3JvbGxpbmcpCisgICAgaWYgKG9sZE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyAhPSBt
X25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykgewogICAgICAgICB1cGRhdGVTZWxmUGFpbnRpbmdM
YXllcigpOworICAgICAgICBpZiAoaXNTdGFja2luZ0NvbnRhaW5lcigpKQorICAgICAgICAgICAg
ZGlydHlaT3JkZXJMaXN0cygpOworCisgICAgICAgIFJlbmRlckxheWVyKiBzYyA9IHBhcmVudCgp
OworICAgICAgICB3aGlsZSAoc2MgJiYgIXNjLT5pc1N0YWNraW5nQ29udGV4dCgpKQorICAgICAg
ICAgICAgc2MgPSBzYy0+cGFyZW50KCk7CisgICAgICAgIAorICAgICAgICBpZiAoc2MpIHsKKyAg
ICAgICAgICAgIHNjLT5kaXJ0eVpPcmRlckxpc3RzKCk7CisgICAgICAgICAgICBzYy0+ZGlydHlO
b3JtYWxGbG93TGlzdCgpOworICAgICAgICB9CisgICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0Q29t
cG9zaXRpbmdMYXllcnNOZWVkUmVidWlsZCgpOworICAgICAgICBjb21wb3NpdG9yKCktPnNldFNo
b3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0KCk7CisgICAgfQogfQogI2VuZGlm
CiAKQEAgLTIyMDksOSArMjIyNyw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBvc2l0
aW5nTGF5ZXJzQWZ0ZXJTY3JvbGwoKQogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKICAgICBpZiAoY29tcG9zaXRvcigpLT5pbkNvbXBvc2l0aW5nTW9kZSgpKSB7Ci0gICAgICAg
IC8vIE91ciBzdGFja2luZyBjb250ZXh0IGlzIGd1YXJhbnRlZWQgdG8gY29udGFpbiBhbGwgb2Yg
b3VyIGRlc2NlbmRhbnRzIHRoYXQgbWF5IG5lZWQKKyAgICAgICAgLy8gT3VyIHN0YWNraW5nIGNv
bnRhaW5lciBpcyBndWFyYW50ZWVkIHRvIGNvbnRhaW4gYWxsIG9mIG91ciBkZXNjZW5kYW50cyB0
aGF0IG1heSBuZWVkCiAgICAgICAgIC8vIHJlcG9zaXRpb25pbmcsIHNvIHVwZGF0ZSBjb21wb3Np
dGluZyBsYXllcnMgZnJvbSB0aGVyZS4KLSAgICAgICAgaWYgKFJlbmRlckxheWVyKiBjb21wb3Np
dGluZ0FuY2VzdG9yID0gc3RhY2tpbmdDb250ZXh0KCktPmVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5
ZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXN0b3IgPSBz
dGFja2luZ0NvbnRhaW5lcigpLT5lbmNsb3NpbmdDb21wb3NpdGluZ0xheWVyKCkpIHsKICAgICAg
ICAgICAgIGlmIChjb21wb3NpdG9yKCktPmNvbXBvc2l0aW5nQ29uc3VsdHNPdmVybGFwKCkpCiAg
ICAgICAgICAgICAgICAgY29tcG9zaXRvcigpLT51cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21w
b3NpdGluZ1VwZGF0ZU9uU2Nyb2xsLCBjb21wb3NpdGluZ0FuY2VzdG9yKTsKICAgICAgICAgICAg
IGVsc2UKQEAgLTM4MTksNyArMzgzNyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50UGFnaW5h
dGVkQ2hpbGRMYXllcihSZW5kZXJMYXllciogY2hpbGRMYXllciwgR3JhcGhpY3NDb250CiB7CiAg
ICAgLy8gV2UgbmVlZCB0byBkbyBtdWx0aXBsZSBwYXNzZXMsIGJyZWFraW5nIHVwIG91ciBjaGls
ZCBsYXllciBpbnRvIHN0cmlwcy4KICAgICBWZWN0b3I8UmVuZGVyTGF5ZXIqPiBjb2x1bW5MYXll
cnM7Ci0gICAgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIgPSBpc05vcm1hbEZsb3dPbmx5KCkg
PyBwYXJlbnQoKSA6IHN0YWNraW5nQ29udGV4dCgpOworICAgIFJlbmRlckxheWVyKiBhbmNlc3Rv
ckxheWVyID0gaXNOb3JtYWxGbG93T25seSgpID8gcGFyZW50KCkgOiBzdGFja2luZ0NvbnRhaW5l
cigpOwogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGN1cnIgPSBjaGlsZExheWVyLT5wYXJlbnQoKTsg
Y3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChjdXJyLT5yZW5kZXJl
cigpLT5oYXNDb2x1bW5zKCkgJiYgY2hlY2tDb250YWluaW5nQmxvY2tDaGFpbkZvclBhZ2luYXRp
b24oY2hpbGRMYXllci0+cmVuZGVyZXIoKSwgY3Vyci0+cmVuZGVyQm94KCkpKQogICAgICAgICAg
ICAgY29sdW1uTGF5ZXJzLmFwcGVuZChjdXJyKTsKQEAgLTQzMzMsNyArNDM1MSw3IEBAIFJlbmRl
ckxheWVyKiBSZW5kZXJMYXllcjo6aGl0VGVzdFBhZ2luYXRlZENoaWxkTGF5ZXIoUmVuZGVyTGF5
ZXIqIGNoaWxkTGF5ZXIsIFJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IExheW91dFJlY3QmIGhpdFRlc3RSZWN0LCBjb25zdCBIaXRU
ZXN0TG9jYXRpb24mIGhpdFRlc3RMb2NhdGlvbiwgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0
YXRlKiB0cmFuc2Zvcm1TdGF0ZSwgZG91YmxlKiB6T2Zmc2V0KQogewogICAgIFZlY3RvcjxSZW5k
ZXJMYXllcio+IGNvbHVtbkxheWVyczsKLSAgICBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciA9
IGlzTm9ybWFsRmxvd09ubHkoKSA/IHBhcmVudCgpIDogc3RhY2tpbmdDb250ZXh0KCk7CisgICAg
UmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIgPSBpc05vcm1hbEZsb3dPbmx5KCkgPyBwYXJlbnQo
KSA6IHN0YWNraW5nQ29udGFpbmVyKCk7CiAgICAgZm9yIChSZW5kZXJMYXllciogY3VyciA9IGNo
aWxkTGF5ZXItPnBhcmVudCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKICAgICAg
ICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmhhc0NvbHVtbnMoKSAmJiBjaGVja0NvbnRhaW5pbmdC
bG9ja0NoYWluRm9yUGFnaW5hdGlvbihjaGlsZExheWVyLT5yZW5kZXJlcigpLCBjdXJyLT5yZW5k
ZXJCb3goKSkpCiAgICAgICAgICAgICBjb2x1bW5MYXllcnMuYXBwZW5kKGN1cnIpOwpAQCAtNDg5
NSw3ICs0OTEzLDcgQEAgSW50UmVjdCBSZW5kZXJMYXllcjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZHMo
Y29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGNvbnMKICAgICAgICAgfQogICAgIH0K
ICAgICAKLSAgICBBU1NFUlQoaXNTdGFja2luZ0NvbnRleHQoKSB8fCAoIXBvc1pPcmRlckxpc3Qo
KSB8fCAhcG9zWk9yZGVyTGlzdCgpLT5zaXplKCkpKTsKKyAgICBBU1NFUlQoaXNTdGFja2luZ0Nv
bnRhaW5lcigpIHx8ICghcG9zWk9yZGVyTGlzdCgpIHx8ICFwb3NaT3JkZXJMaXN0KCktPnNpemUo
KSkpOwogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0
b3IgbXV0YXRpb25DaGVja2VyKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKSk7CkBAIC01
MDc2LDcgKzUwOTQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY29tcGFyZVpJbmRleChSZW5kZXJM
YXllciogZmlyc3QsIFJlbmRlckxheWVyKiBzZWNvbmQpCiB2b2lkIFJlbmRlckxheWVyOjpkaXJ0
eVpPcmRlckxpc3RzKCkKIHsKICAgICBBU1NFUlQobV9sYXllckxpc3RNdXRhdGlvbkFsbG93ZWQp
OwotICAgIEFTU0VSVChpc1N0YWNraW5nQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoaXNTdGFja2lu
Z0NvbnRhaW5lcigpKTsKIAogICAgIGlmIChtX3Bvc1pPcmRlckxpc3QpCiAgICAgICAgIG1fcG9z
Wk9yZGVyTGlzdC0+Y2xlYXIoKTsKQEAgLTUwOTMsOSArNTExMSw5IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OmRpcnR5Wk9yZGVyTGlzdHMoKQogI2VuZGlmCiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmRp
cnR5U3RhY2tpbmdDb250ZXh0Wk9yZGVyTGlzdHMoKQordm9pZCBSZW5kZXJMYXllcjo6ZGlydHlT
dGFja2luZ0NvbnRhaW5lclpPcmRlckxpc3RzKCkKIHsKLSAgICBSZW5kZXJMYXllciogc2MgPSBz
dGFja2luZ0NvbnRleHQoKTsKKyAgICBSZW5kZXJMYXllciogc2MgPSBzdGFja2luZ0NvbnRhaW5l
cigpOwogICAgIGlmIChzYykKICAgICAgICAgc2MtPmRpcnR5Wk9yZGVyTGlzdHMoKTsKIH0KQEAg
LTUxMjAsOCArNTEzOCwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjpkaXJ0eU5vcm1hbEZsb3dMaXN0
KCkKIHZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cygpCiB7CiAgICAgQVNTRVJU
KG1fbGF5ZXJMaXN0TXV0YXRpb25BbGxvd2VkKTsKLSAgICBBU1NFUlQoaXNEaXJ0eVN0YWNraW5n
Q29udGV4dCgpKTsKKyAgICBBU1NFUlQoaXNEaXJ0eVN0YWNraW5nQ29udGFpbmVyKCkpOworICAg
IHJlYnVpbGRaT3JkZXJMaXN0cyhTdG9wQXRTdGFja2luZ0NvbnRhaW5lcnMsIG1fcG9zWk9yZGVy
TGlzdCwgbV9uZWdaT3JkZXJMaXN0KTsKKyAgICBtX3pPcmRlckxpc3RzRGlydHkgPSBmYWxzZTsK
K30KIAordm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKENvbGxlY3RMYXllcnNC
ZWhhdmlvciBiZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mIHBvc1pPcmRl
ckxpc3QsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiBuZWdaT3JkZXJMaXN0KQorewog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBib29sIGluY2x1ZGVIaWRkZW5M
YXllcnMgPSBjb21wb3NpdG9yKCktPmluQ29tcG9zaXRpbmdNb2RlKCk7CiAjZWxzZQpAQCAtNTEy
OSwxNCArNTE1MiwxNCBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoKQog
I2VuZGlmCiAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICBpZiAoIW1fcmVmbGVjdGlv
biB8fCByZWZsZWN0aW9uTGF5ZXIoKSAhPSBjaGlsZCkKLSAgICAgICAgICAgIGNoaWxkLT5jb2xs
ZWN0TGF5ZXJzKGluY2x1ZGVIaWRkZW5MYXllcnMsIG1fcG9zWk9yZGVyTGlzdCwgbV9uZWdaT3Jk
ZXJMaXN0KTsKKyAgICAgICAgICAgIGNoaWxkLT5jb2xsZWN0TGF5ZXJzKGluY2x1ZGVIaWRkZW5M
YXllcnMsIGJlaGF2aW9yLCBwb3NaT3JkZXJMaXN0LCBuZWdaT3JkZXJMaXN0KTsKIAogICAgIC8v
IFNvcnQgdGhlIHR3byBsaXN0cy4KLSAgICBpZiAobV9wb3NaT3JkZXJMaXN0KQotICAgICAgICBz
dGQ6OnN0YWJsZV9zb3J0KG1fcG9zWk9yZGVyTGlzdC0+YmVnaW4oKSwgbV9wb3NaT3JkZXJMaXN0
LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CisgICAgaWYgKHBvc1pPcmRlckxpc3QpCisgICAgICAg
IHN0ZDo6c3RhYmxlX3NvcnQocG9zWk9yZGVyTGlzdC0+YmVnaW4oKSwgcG9zWk9yZGVyTGlzdC0+
ZW5kKCksIGNvbXBhcmVaSW5kZXgpOwogCi0gICAgaWYgKG1fbmVnWk9yZGVyTGlzdCkKLSAgICAg
ICAgc3RkOjpzdGFibGVfc29ydChtX25lZ1pPcmRlckxpc3QtPmJlZ2luKCksIG1fbmVnWk9yZGVy
TGlzdC0+ZW5kKCksIGNvbXBhcmVaSW5kZXgpOworICAgIGlmIChuZWdaT3JkZXJMaXN0KQorICAg
ICAgICBzdGQ6OnN0YWJsZV9zb3J0KG5lZ1pPcmRlckxpc3QtPmJlZ2luKCksIG5lZ1pPcmRlckxp
c3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKIAogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkK
ICAgICAvLyBBcHBlbmQgbGF5ZXJzIGZvciB0b3AgbGF5ZXIgZWxlbWVudHMgYWZ0ZXIgbm9ybWFs
IGxheWVyIGNvbGxlY3Rpb24sIHRvIGVuc3VyZSB0aGV5IGFyZSBvbiB0b3AgcmVnYXJkbGVzcyBv
ZiB6LWluZGV4ZXMuCkBAIC01MTQ3LDEzICs1MTcwLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJl
YnVpbGRaT3JkZXJMaXN0cygpCiAgICAgICAgICAgICBFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSBj
aGlsZC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgPyB0b0VsZW1lbnQoY2hpbGQtPm5vZGUoKSkg
OiAwOwogICAgICAgICAgICAgaWYgKGNoaWxkRWxlbWVudCAmJiBjaGlsZEVsZW1lbnQtPmlzSW5U
b3BMYXllcigpKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5k
ZXJMYXllck1vZGVsT2JqZWN0KGNoaWxkKS0+bGF5ZXIoKTsKLSAgICAgICAgICAgICAgICBtX3Bv
c1pPcmRlckxpc3QtPmFwcGVuZChsYXllcik7CisgICAgICAgICAgICAgICAgcG9zWk9yZGVyTGlz
dC0+YXBwZW5kKGxheWVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICNlbmRp
ZgogCi0gICAgbV96T3JkZXJMaXN0c0RpcnR5ID0gZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkKQEAgLTUxNzUsNyArNTE5Nyw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkKICAgICBtX25vcm1hbEZsb3dMaXN0RGly
dHkgPSBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGlu
Y2x1ZGVIaWRkZW5MYXllcnMsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiBwb3NCdWZm
ZXIsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiBuZWdCdWZmZXIpCit2b2lkIFJlbmRl
ckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgQ29sbGVjdExh
eWVyc0JlaGF2aW9yIGJlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgcG9z
QnVmZmVyLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgbmVnQnVmZmVyKQogewogI2lm
IEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICBpZiAoaXNJblRvcExheWVyKCkpCkBAIC01MTg0
LDggKzUyMDYsOSBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVk
ZUhpZGRlbkxheWVycywgT3duUHRyPFZlY3RvcjxSZW5kZXJMYQogCiAgICAgdXBkYXRlRGVzY2Vu
ZGFudERlcGVuZGVudEZsYWdzKCk7CiAKKyAgICBib29sIGlzU3RhY2tpbmcgPSBiZWhhdmlvciA9
PSBTdG9wQXRTdGFja2luZ0NvbnRleHRzID8gaXNTdGFja2luZ0NvbnRleHQoKSA6IGlzU3RhY2tp
bmdDb250YWluZXIoKTsKICAgICAvLyBPdmVyZmxvdyBsYXllcnMgYXJlIGp1c3QgcGFpbnRlZCBi
eSB0aGVpciBlbmNsb3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0IGdldCBwdXQgaW4gem9yZGVy
IGxpc3RzLgotICAgIGJvb2wgaW5jbHVkZUhpZGRlbkxheWVyID0gaW5jbHVkZUhpZGRlbkxheWVy
cyB8fCAobV9oYXNWaXNpYmxlQ29udGVudCB8fCAobV9oYXNWaXNpYmxlRGVzY2VuZGFudCAmJiBp
c1N0YWNraW5nQ29udGV4dCgpKSk7CisgICAgYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXIgPSBpbmNs
dWRlSGlkZGVuTGF5ZXJzIHx8IChtX2hhc1Zpc2libGVDb250ZW50IHx8IChtX2hhc1Zpc2libGVE
ZXNjZW5kYW50ICYmIGlzU3RhY2tpbmcpKTsKICAgICBpZiAoaW5jbHVkZUhpZGRlbkxheWVyICYm
ICFpc05vcm1hbEZsb3dPbmx5KCkgJiYgIXJlbmRlcmVyKCktPmlzUmVuZGVyRmxvd1RocmVhZCgp
KSB7CiAgICAgICAgIC8vIERldGVybWluZSB3aGljaCBidWZmZXIgdGhlIGNoaWxkIHNob3VsZCBi
ZSBpbi4KICAgICAgICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mIGJ1ZmZlciA9ICh6
SW5kZXgoKSA+PSAwKSA/IHBvc0J1ZmZlciA6IG5lZ0J1ZmZlcjsKQEAgLTUxOTksMTIgKzUyMjIs
MTIgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5M
YXllcnMsIE93blB0cjxWZWN0b3I8UmVuZGVyTGEKICAgICB9CiAKICAgICAvLyBSZWN1ciBpbnRv
IG91ciBjaGlsZHJlbiB0byBjb2xsZWN0IG1vcmUgbGF5ZXJzLCBidXQgb25seSBpZiB3ZSBkb24n
dCBlc3RhYmxpc2gKLSAgICAvLyBhIHN0YWNraW5nIGNvbnRleHQuCi0gICAgaWYgKChpbmNsdWRl
SGlkZGVuTGF5ZXJzIHx8IG1faGFzVmlzaWJsZURlc2NlbmRhbnQpICYmICFpc1N0YWNraW5nQ29u
dGV4dCgpKSB7CisgICAgLy8gYSBzdGFja2luZyBjb250ZXh0L2NvbnRhaW5lci4KKyAgICBpZiAo
KGluY2x1ZGVIaWRkZW5MYXllcnMgfHwgbV9oYXNWaXNpYmxlRGVzY2VuZGFudCkgJiYgIWlzU3Rh
Y2tpbmcpIHsKICAgICAgICAgZm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICAvLyBJ
Z25vcmUgcmVmbGVjdGlvbnMuCiAgICAgICAgICAgICBpZiAoIW1fcmVmbGVjdGlvbiB8fCByZWZs
ZWN0aW9uTGF5ZXIoKSAhPSBjaGlsZCkKLSAgICAgICAgICAgICAgICBjaGlsZC0+Y29sbGVjdExh
eWVycyhpbmNsdWRlSGlkZGVuTGF5ZXJzLCBwb3NCdWZmZXIsIG5lZ0J1ZmZlcik7CisgICAgICAg
ICAgICAgICAgY2hpbGQtPmNvbGxlY3RMYXllcnMoaW5jbHVkZUhpZGRlbkxheWVycywgYmVoYXZp
b3IsIHBvc0J1ZmZlciwgbmVnQnVmZmVyKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTUyMTIs
NyArNTIzNSw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRl
SGlkZGVuTGF5ZXJzLCBPd25QdHI8VmVjdG9yPFJlbmRlckxhCiB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogewogICAgIGJvb2wgc2hvdWxkVXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyID0gaXNTdGFja2luZ0NvbnRleHQoKSAm
JiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7Ci0KICAgICB1
cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAKQEAgLTUy
MjEsMTUgKzUyNDMsMjAgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVl
ZGVkKCkKICAgICAgICAgcmVmbGVjdGlvbkxheWVyLT51cGRhdGVOb3JtYWxGbG93TGlzdCgpOwog
ICAgIH0KIAotICAgIGlmIChzaG91bGRVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0
YWNraW5nT3JkZXIpCisgICAgaWYgKHNob3VsZFVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91
c0luU3RhY2tpbmdPcmRlcikgewogICAgICAgICB1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3Vv
dXNJblN0YWNraW5nT3JkZXIoKTsKKyAgICAgICAgLy8gVGhlIGFib3ZlIGZ1bmN0aW9uIGNhbiBj
YXVzZSB1cyB0byB1cGRhdGUgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcKKyAgICAgICAgLy8g
YW5kIGRpcnR5IG91ciBsYXllciBsaXN0cy4gUmVmcmVzaCB0aGVtIGlmIG5lY2Vzc2FyeS4KKyAg
ICAgICAgdXBkYXRlWk9yZGVyTGlzdHMoKTsKKyAgICAgICAgdXBkYXRlTm9ybWFsRmxvd0xpc3Qo
KTsKKyAgICB9CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5
ZXJMaXN0c0lmTmVlZGVkKCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAg
ICAgaWYgKGNvbXBvc2l0b3IoKS0+aW5Db21wb3NpdGluZ01vZGUoKSkgewotICAgICAgICBpZiAo
aXNEaXJ0eVN0YWNraW5nQ29udGV4dCgpIHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSkKKyAgICAg
ICAgaWYgKGlzRGlydHlTdGFja2luZ0NvbnRhaW5lcigpIHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0
eSkKICAgICAgICAgICAgIGNvbXBvc2l0b3IoKS0+dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29t
cG9zaXRpbmdVcGRhdGVPbkhpdFRlc3QsIHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtNTM1MCw3ICs1Mzc3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU3RhY2tpbmdDb250
ZXh0c0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFMKICAgICBib29sIHdh
c1N0YWNraW5nQ29udGV4dCA9IGlzU3RhY2tpbmdDb250ZXh0KG9sZFN0eWxlKTsKICAgICBib29s
IGlzU3RhY2tpbmdDb250ZXh0ID0gdGhpcy0+aXNTdGFja2luZ0NvbnRleHQoKTsKICAgICBpZiAo
aXNTdGFja2luZ0NvbnRleHQgIT0gd2FzU3RhY2tpbmdDb250ZXh0KSB7Ci0gICAgICAgIGRpcnR5
U3RhY2tpbmdDb250ZXh0Wk9yZGVyTGlzdHMoKTsKKyAgICAgICAgZGlydHlTdGFja2luZ0NvbnRh
aW5lclpPcmRlckxpc3RzKCk7CiAgICAgICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCkKICAgICAg
ICAgICAgIGRpcnR5Wk9yZGVyTGlzdHMoKTsKICAgICAgICAgZWxzZQpAQCAtNTM2MSw3ICs1Mzg4
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU3RhY2tpbmdDb250ZXh0c0FmdGVyU3R5bGVD
aGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFMKICAgICAvLyBGSVhNRTogUmVuZGVyTGF5ZXIg
YWxyZWFkeSBoYW5kbGVzIHZpc2liaWxpdHkgY2hhbmdlcyB0aHJvdWdoIG91ciB2aXNpYmxpdHkg
ZGlydHkgYml0cy4gVGhpcyBsb2dpYyBjb3VsZAogICAgIC8vIGxpa2VseSBiZSBmb2xkZWQgYWxv
bmcgd2l0aCB0aGUgcmVzdC4KICAgICBpZiAob2xkU3R5bGUtPnpJbmRleCgpICE9IHJlbmRlcmVy
KCktPnN0eWxlKCktPnpJbmRleCgpIHx8IG9sZFN0eWxlLT52aXNpYmlsaXR5KCkgIT0gcmVuZGVy
ZXIoKS0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpKSB7Ci0gICAgICAgIGRpcnR5U3RhY2tpbmdDb250
ZXh0Wk9yZGVyTGlzdHMoKTsKKyAgICAgICAgZGlydHlTdGFja2luZ0NvbnRhaW5lclpPcmRlckxp
c3RzKCk7CiAgICAgICAgIGlmIChpc1N0YWNraW5nQ29udGV4dCkKICAgICAgICAgICAgIGRpcnR5
Wk9yZGVyTGlzdHMoKTsKICAgICB9CkBAIC01NDU3LDcgKzU0ODQsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpCiAgICAgICAgIFJlbmRlckxheWVyKiBwID0gcGFyZW50KCk7CiAgICAgICAgIGlmIChw
KQogICAgICAgICAgICAgcC0+ZGlydHlOb3JtYWxGbG93TGlzdCgpOwotICAgICAgICBkaXJ0eVN0
YWNraW5nQ29udGV4dFpPcmRlckxpc3RzKCk7CisgICAgICAgIGRpcnR5U3RhY2tpbmdDb250YWlu
ZXJaT3JkZXJMaXN0cygpOwogICAgIH0KIAogICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5v
dmVyZmxvd1goKSA9PSBPTUFSUVVFRSAmJiByZW5kZXJlcigpLT5zdHlsZSgpLT5tYXJxdWVlQmVo
YXZpb3IoKSAhPSBNTk9ORSAmJiByZW5kZXJlcigpLT5pc0JveCgpKSB7CkBAIC01NTExLDcgKzU1
MzgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpCiAgICAgZWxzZSBpZiAobV9iYWNraW5nKQogICAg
ICAgICBtX2JhY2tpbmctPnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpOwogICAgIGVsc2Ug
aWYgKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5vdmVyZmxvd1goKSAhPSByZW5kZXJlcigpLT5zdHls
ZSgpLT5vdmVyZmxvd1goKSkgewotICAgICAgICBpZiAoc3RhY2tpbmdDb250ZXh0KCktPmhhc0Nv
bXBvc2l0aW5nRGVzY2VuZGFudCgpKQorICAgICAgICBpZiAoc3RhY2tpbmdDb250YWluZXIoKS0+
aGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkpCiAgICAgICAgICAgICBjb21wb3NpdG9yKCktPnNl
dENvbXBvc2l0aW5nTGF5ZXJzTmVlZFJlYnVpbGQoKTsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggN2UwZDI3MWQzY2U0YmFiODk1NzQ4ZjMx
NTU4NWQ0YzZkYjM1YTllZC4uZjY4ZWM2N2QzNzMxNTY2MjcxMjNiMzY0NzI1NWNjYjc2ZTFmN2Nl
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTQyNywxOCArNDI3
LDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyQmxvY2tTZWxlY3Rpb25HYXBzQm91bmRzKCk7
CiAgICAgdm9pZCByZXBhaW50QmxvY2tTZWxlY3Rpb25HYXBzKCk7CiAKLSAgICAvLyBHZXQgdGhl
IGVuY2xvc2luZyBzdGFja2luZyBjb250ZXh0IGZvciB0aGlzIGxheWVyLiAgQSBzdGFja2luZyBj
b250ZXh0IGlzIGEgbGF5ZXIKLSAgICAvLyB0aGF0IGhhcyBhIG5vbi1hdXRvIHotaW5kZXguCi0g
ICAgUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGV4dCgpIGNvbnN0OworICAgIC8vIEEgc3RhY2tp
bmcgY29udGV4dCBpcyBhIGxheWVyIHRoYXQgaGFzIGEgbm9uLWF1dG8gei1pbmRleC4KICAgICBi
b29sIGlzU3RhY2tpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gaXNTdGFja2luZ0NvbnRleHQo
cmVuZGVyZXIoKS0+c3R5bGUoKSk7IH0KIAorICAgIC8vIEEgc3RhY2tpbmcgY29udGFpbmVyIGNh
biBoYXZlIHotb3JkZXIgbGlzdHMuIEFsbCBzdGFja2luZyBjb250ZXh0cyBhcmUKKyAgICAvLyBz
dGFja2luZyBjb250YWluZXJzLCBidXQgdGhlIGNvbnZlcnNlIGlzIG5vdCB0cnVlLgorICAgIGJv
b2wgaXNTdGFja2luZ0NvbnRhaW5lcigpIGNvbnN0IHsgcmV0dXJuIGlzU3RhY2tpbmdDb250ZXh0
KCkgfHwgbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7IH0KKworICAgIC8vIEdldHMgdGhlIGVu
Y2xvc2luZyBzdGFja2luZyBjb250YWluZXIgZm9yIHRoaXMgbGF5ZXIuCisgICAgUmVuZGVyTGF5
ZXIqIHN0YWNraW5nQ29udGFpbmVyKCkgY29uc3Q7CisKICAgICB2b2lkIGRpcnR5Wk9yZGVyTGlz
dHMoKTsKLSAgICB2b2lkIGRpcnR5U3RhY2tpbmdDb250ZXh0Wk9yZGVyTGlzdHMoKTsKKyAgICB2
b2lkIGRpcnR5U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0cygpOwogCiAgICAgVmVjdG9yPFJl
bmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNTRVJU
KCFtX3pPcmRlckxpc3RzRGlydHkpOwotICAgICAgICBBU1NFUlQoaXNTdGFja2luZ0NvbnRleHQo
KSB8fCAhbV9wb3NaT3JkZXJMaXN0KTsKKyAgICAgICAgQVNTRVJUKGlzU3RhY2tpbmdDb250YWlu
ZXIoKSB8fCAhbV9wb3NaT3JkZXJMaXN0KTsKICAgICAgICAgcmV0dXJuIG1fcG9zWk9yZGVyTGlz
dC5nZXQoKTsKICAgICB9CiAKQEAgLTQ0Nyw3ICs0NTIsNyBAQCBwdWJsaWM6CiAgICAgVmVjdG9y
PFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKCFtX3pPcmRlckxpc3RzRGlydHkpOwotICAgICAgICBBU1NFUlQoaXNTdGFja2luZ0NvbnRl
eHQoKSB8fCAhbV9uZWdaT3JkZXJMaXN0KTsKKyAgICAgICAgQVNTRVJUKGlzU3RhY2tpbmdDb250
YWluZXIoKSB8fCAhbV9uZWdaT3JkZXJMaXN0KTsKICAgICAgICAgcmV0dXJuIG1fbmVnWk9yZGVy
TGlzdC5nZXQoKTsKICAgICB9CiAKQEAgLTc1MSwxNCArNzU2LDE4IEBAIHB1YmxpYzoKICNlbmRp
ZgogCiBwcml2YXRlOgorICAgIGVudW0gQ29sbGVjdExheWVyc0JlaGF2aW9yIHsgU3RvcEF0U3Rh
Y2tpbmdDb250ZXh0cywgU3RvcEF0U3RhY2tpbmdDb250YWluZXJzIH07CisKICAgICB2b2lkIHVw
ZGF0ZVpPcmRlckxpc3RzKCk7CiAgICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoKTsKKyAgICB2
b2lkIHJlYnVpbGRaT3JkZXJMaXN0cyhDb2xsZWN0TGF5ZXJzQmVoYXZpb3IsIE93blB0cjxWZWN0
b3I8UmVuZGVyTGF5ZXIqPiA+JiwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mKTsKICAg
ICB2b2lkIGNsZWFyWk9yZGVyTGlzdHMoKTsKIAogICAgIHZvaWQgdXBkYXRlTm9ybWFsRmxvd0xp
c3QoKTsKIAogICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQoY29uc3QgUmVuZGVyU3R5bGUqIHN0
eWxlKSBjb25zdCB7IHJldHVybiAhc3R5bGUtPmhhc0F1dG9aSW5kZXgoKSB8fCBpc1Jvb3RMYXll
cigpOyB9Ci0gICAgYm9vbCBpc0RpcnR5U3RhY2tpbmdDb250ZXh0KCkgY29uc3QgeyByZXR1cm4g
bV96T3JkZXJMaXN0c0RpcnR5ICYmIGlzU3RhY2tpbmdDb250ZXh0KCk7IH0KKworICAgIGJvb2wg
aXNEaXJ0eVN0YWNraW5nQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gbV96T3JkZXJMaXN0c0Rp
cnR5ICYmIGlzU3RhY2tpbmdDb250YWluZXIoKTsgfQogCiAgICAgdm9pZCBzZXRBbmNlc3RvckNo
YWluSGFzU2VsZlBhaW50aW5nTGF5ZXJEZXNjZW5kYW50KCk7CiAgICAgdm9pZCBkaXJ0eUFuY2Vz
dG9yQ2hhaW5IYXNTZWxmUGFpbnRpbmdMYXllckRlc2NlbmRhbnRTdGF0dXMoKTsKQEAgLTgyMiw3
ICs4MzEsNyBAQCBwcml2YXRlOgogICAgIExheW91dFVuaXQgcmVuZGVyQm94WCgpIGNvbnN0IHsg
cmV0dXJuIHJlbmRlckJveExvY2F0aW9uKCkueCgpOyB9CiAgICAgTGF5b3V0VW5pdCByZW5kZXJC
b3hZKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyQm94TG9jYXRpb24oKS55KCk7IH0KIAotICAgIHZv
aWQgY29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIE93blB0cjxWZWN0b3I8
UmVuZGVyTGF5ZXIqPiA+JiwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mKTsKKyAgICB2
b2lkIGNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBDb2xsZWN0TGF5ZXJz
QmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiwgT3duUHRyPFZlY3RvcjxS
ZW5kZXJMYXllcio+ID4mKTsKIAogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdBbmRMYXllckxp
c3RzSWZOZWVkZWQoKTsKIApAQCAtOTgzLDggKzk5Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
dXN0Q29tcG9zaXRlRm9ySW5kaXJlY3RSZWFzb25zKCkgY29uc3QgeyByZXR1cm4gbV9pbmRpcmVj
dENvbXBvc2l0aW5nUmVhc29uOyB9CiAjZW5kaWYKIAotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB6
IG9yZGVyaW5nIHdvdWxkIG5vdCBjaGFuZ2UgaWYgdGhpcyBsYXllciB3ZXJlIHRvIGVzdGFibGlz
aCBhIHN0YWNraW5nIGNvbnRleHQuCi0gICAgYm9vbCBjYW5TYWZlbHlFc3RhYmxpc2hBU3RhY2tp
bmdDb250ZXh0KCkgY29uc3Q7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHogb3JkZXJpbmcgd291
bGQgbm90IGNoYW5nZSBpZiB0aGlzIGxheWVyIHdlcmUgYSBzdGFja2luZyBjb250YWluZXIuCisg
ICAgYm9vbCBjYW5CZVN0YWNraW5nQ29udGFpbmVyKCkgY29uc3Q7CiAKICAgICBmcmllbmQgY2xh
c3MgUmVuZGVyTGF5ZXJCYWNraW5nOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckNvbXBv
c2l0b3I7CkBAIC0xMTUxLDcgKzExNjAsNyBAQCBwcml2YXRlOgogCiBpbmxpbmUgdm9pZCBSZW5k
ZXJMYXllcjo6Y2xlYXJaT3JkZXJMaXN0cygpCiB7Ci0gICAgQVNTRVJUKCFpc1N0YWNraW5nQ29u
dGV4dCgpKTsKKyAgICBBU1NFUlQoIWlzU3RhY2tpbmdDb250YWluZXIoKSk7CiAKICAgICBtX3Bv
c1pPcmRlckxpc3QuY2xlYXIoKTsKICAgICBtX25lZ1pPcmRlckxpc3QuY2xlYXIoKTsKQEAgLTEx
NjIsNyArMTE3MSw3IEBAIGlubGluZSB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVaT3JkZXJMaXN0
cygpCiAgICAgaWYgKCFtX3pPcmRlckxpc3RzRGlydHkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghaXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlmICghaXNTdGFja2luZ0NvbnRhaW5l
cigpKSB7CiAgICAgICAgIGNsZWFyWk9yZGVyTGlzdHMoKTsKICAgICAgICAgbV96T3JkZXJMaXN0
c0RpcnR5ID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggNTE3MjE0MGIzYjA3ZjE5N2VlMWU1
YTllYTg5NGY1N2VlM2M2MjI2ZS4uZWU4ZmVlNWI4YTIzN2QzNTIzYWMwYjY1OThlYjIwOTcyNzQ3
ZmIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2lu
Zy5jcHAKQEAgLTU2NSw3ICs1NjUsNyBAQCBzdGF0aWMgSW50UmVjdCBjbGlwQm94KFJlbmRlckJv
eCogcmVuZGVyZXIpCiB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXll
ckdlb21ldHJ5KCkKIHsKICAgICAvLyBJZiB3ZSBoYXZlbid0IGJ1aWx0IHotb3JkZXIgbGlzdHMg
eWV0LCB3YWl0IHVudGlsIGxhdGVyLgotICAgIGlmIChtX293bmluZ0xheWVyLT5pc1N0YWNraW5n
Q29udGV4dCgpICYmIG1fb3duaW5nTGF5ZXItPm1fek9yZGVyTGlzdHNEaXJ0eSkKKyAgICBpZiAo
bV9vd25pbmdMYXllci0+aXNTdGFja2luZ0NvbnRhaW5lcigpICYmIG1fb3duaW5nTGF5ZXItPm1f
ek9yZGVyTGlzdHNEaXJ0eSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU2V0IHRyYW5zZm9y
bSBwcm9wZXJ0eSwgaWYgaXQgaXMgbm90IGFuaW1hdGluZy4gV2UgaGF2ZSB0byBkbyB0aGlzIGhl
cmUgYmVjYXVzZSB0aGUgdHJhbnNmb3JtCkBAIC0xMjQ0LDcgKzEyNDQsNyBAQCBmbG9hdCBSZW5k
ZXJMYXllckJhY2tpbmc6OmNvbXBvc2l0aW5nT3BhY2l0eShmbG9hdCByZW5kZXJlck9wYWNpdHkp
IGNvbnN0CiAgICAgZm9yIChSZW5kZXJMYXllciogY3VyciA9IG1fb3duaW5nTGF5ZXItPnBhcmVu
dCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKICAgICAgICAgLy8gV2Ugb25seSBj
YXJlIGFib3V0IHBhcmVudHMgdGhhdCBhcmUgc3RhY2tpbmcgY29udGV4dHMuCiAgICAgICAgIC8v
IFJlY2FsbCB0aGF0IG9wYWNpdHkgY3JlYXRlcyBzdGFja2luZyBjb250ZXh0LgotICAgICAgICBp
ZiAoIWN1cnItPmlzU3RhY2tpbmdDb250ZXh0KCkpCisgICAgICAgIGlmICghY3Vyci0+aXNTdGFj
a2luZ0NvbnRhaW5lcigpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAogICAgICAg
ICAvLyBJZiB3ZSBmb3VuZCBhIGNvbXBvc2l0aW5nIGxheWVyLCB3ZSB3YW50IHRvIGNvbXB1dGUg
b3BhY2l0eQpAQCAtMTQ0MCw3ICsxNDQwLDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6Omhh
c1Zpc2libGVOb25Db21wb3NpdGluZ0Rlc2NlbmRhbnRMYXllcnMoKSBjb25zdAogICAgICAgICB9
CiAgICAgfQogCi0gICAgaWYgKG1fb3duaW5nTGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsK
KyAgICBpZiAobV9vd25pbmdMYXllci0+aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAg
IGlmICghbV9vd25pbmdMYXllci0+aGFzVmlzaWJsZURlc2NlbmRhbnQoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCAwMzg5MTdmNmQyYzg1NGY5NmNjYzE4MWZkNDc2MGE3
MTE0YTQwZWE5Li5hMzljYTcyY2YxMGE3MmVjZTNjMDA2OTY1YmM0NWNkMDJlZTA2NDk2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cApAQCAtNzI5LDcgKzcyOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllcldp
bGxCZVJlbW92ZWQoUmVuZGVyTGF5ZXIqIHBhcmVudCwgUmVuZGVyTGF5ZXIqCiBSZW5kZXJMYXll
ciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjplbmNsb3NpbmdOb25TdGFja2luZ0NsaXBwaW5nTGF5
ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAogewogICAgIGZvciAoUmVuZGVyTGF5
ZXIqIGN1cnIgPSBsYXllci0+cGFyZW50KCk7IGN1cnIgIT0gMDsgY3VyciA9IGN1cnItPnBhcmVu
dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyLT5pc1N0YWNraW5nQ29udGV4dCgpKQorICAgICAgICBp
ZiAoY3Vyci0+aXNTdGFja2luZ0NvbnRhaW5lcigpKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICAgICAgaWYgKGN1cnItPnJlbmRlcmVyKCktPmhhc0NsaXBPck92ZXJmbG93Q2xpcCgpKQpA
QCAtNzc2LDcgKzc3Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJs
YXBNYXBSZWN1cnNpdmUoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgUmVuCiAgICAgTGF5ZXJMaXN0
TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwogI2VuZGlmCiAKLSAgICBp
ZiAobGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICBpZiAobGF5ZXItPmlzU3RhY2tp
bmdDb250YWluZXIoKSkgewogICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5lZ1pP
cmRlckxpc3QgPSBsYXllci0+bmVnWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBzaXplX3Qg
bGlzdFNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAm
IG92ZXJsYXBNYXAsIFJlbgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGxheWVyLT5pc1N0
YWNraW5nQ29udGV4dCgpKSB7CisgICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGFpbmVyKCkp
IHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5
ZXItPnBvc1pPcmRlckxpc3QoKSkgewogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9z
Wk9yZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBs
aXN0U2l6ZTsgKytpKSB7CkBAIC04NzksNyArODc5LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0
b3IKIAogICAgIGJvb2wgYW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtID0gZmFsc2U7CiAKLSAg
ICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250ZXh0KCkpIHsKKyAgICBpZiAobGF5ZXItPmlzU3Rh
Y2tpbmdDb250YWluZXIoKSkgewogICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5l
Z1pPcmRlckxpc3QgPSBsYXllci0+bmVnWk9yZGVyTGlzdCgpKSB7CiAgICAgICAgICAgICBzaXpl
X3QgbGlzdFNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJl
bmRlckxheWVyKiBhbmNlc3RvcgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKGxheWVyLT5p
c1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGFpbmVy
KCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0g
bGF5ZXItPnBvc1pPcmRlckxpc3QoKSkgewogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0g
cG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsaXN0U2l6ZTsgKytpKSB7CkBAIC0xMDkwLDcgKzEwOTAsNyBAQCB2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxheWVyKiBsYXll
ciwgVmVjdAogICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRpb25DaGVja2VyKGxh
eWVyKTsKICNlbmRpZgogCi0gICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7Cisg
ICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKFZlY3Rv
cjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkg
ewogICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOwog
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CkBAIC0x
MTEyLDcgKzExMTIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBv
c2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxheWVyKiBsYXllciwgVmVjdAogICAgICAgICB9CiAgICAg
fQogICAgIAotICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlmIChs
YXllci0+aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVy
TGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAg
ICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewpAQCAtMTMwNyw3ICsx
MzA3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUxheWVyVHJlZUdlb21l
dHJ5KFJlbmRlckxheWVyKiBsYXllciwgaW50IGRlcHQKICAgICBMYXllckxpc3RNdXRhdGlvbkRl
dGVjdG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci0+
aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRhaW5l
cigpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9
IGxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9
IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGlzdFNpemU7ICsraSkKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjp1cGRhdGVMYXllclRyZWVHZW9tZXRyeShSZW5kZXJMYXllciogbGF5ZXIsIGlu
dCBkZXB0CiAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeShub3JtYWxGbG93TGlz
dC0+YXQoaSksIGRlcHRoICsgMSk7CiAgICAgfQogICAgIAotICAgIGlmIChsYXllci0+aXNTdGFj
a2luZ0NvbnRleHQoKSkgeworICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7
CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVy
LT5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pP
cmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlz
dFNpemU7ICsraSkKQEAgLTEzNTgsNyArMTM1OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjp1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShSZW5kZXJMYXllciogY29t
CiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOwog
I2VuZGlmCiAgICAgCi0gICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CisgICAg
aWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKICAgICAgICAgaWYgKFZlY3RvcjxS
ZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgewog
ICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAg
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQpAQCAtMTM3Miw3
ICsxMzcyLDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5n
RGVzY2VuZGFudEdlb21ldHJ5KFJlbmRlckxheWVyKiBjb20KICAgICAgICAgICAgIHVwZGF0ZUNv
bXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsIG5vcm1hbEZs
b3dMaXN0LT5hdChpKSwgY29tcG9zaXRlZENoaWxkcmVuT25seSk7CiAgICAgfQogICAgIAotICAg
IGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlmIChsYXllci0+aXNTdGFj
a2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9z
Wk9yZGVyTGlzdCA9IGxheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNpemVf
dCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKQEAgLTIwMDYsNyArMjAwNiw3IEBAIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVu
ZGVyT2JqZWN0KiByZW5kZXJlCiAgICAgCiAgICAgRVBvc2l0aW9uIHBvc2l0aW9uID0gcmVuZGVy
ZXItPnN0eWxlKCktPnBvc2l0aW9uKCk7CiAgICAgYm9vbCBpc0ZpeGVkID0gcmVuZGVyZXItPmlz
T3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBvc2l0aW9uID09IEZpeGVkUG9zaXRpb247Ci0gICAg
aWYgKGlzRml4ZWQgJiYgIWxheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKQorICAgIGlmIChpc0Zp
eGVkICYmICFsYXllci0+aXNTdGFja2luZ0NvbnRhaW5lcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCiAgICAgYm9vbCBpc1N0aWNreSA9IHJlbmRlcmVyLT5pc0luRmxvd1Bvc2l0aW9u
ZWQoKSAmJiBwb3NpdGlvbiA9PSBTdGlja3lQb3NpdGlvbjsKQEAgLTI1ODgsNyArMjU4OCw3IEBA
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudChjb25zdCBSZW5k
ZXJMYXllciogbGF5ZXIpIGNvbnN0CiAgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KGxheWVyKSk7CiAjZW5kaWYKIAot
ICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkgeworICAgIGlmIChsYXllci0+aXNT
dGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiog
bmVnWk9yZGVyTGlzdCA9IGxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKICAgICAgICAgICAgIHNp
emVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewpAQCAtMjYzOCw4ICsyNjM4LDggQEAg
c3RhdGljIGJvb2wgaXNSb290bW9zdEZpeGVkT3JTdGlja3lMYXllcihSZW5kZXJMYXllciogbGF5
ZXIpCiAgICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5wb3NpdGlvbigpICE9IEZp
eGVkUG9zaXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGZvciAoUmVuZGVyTGF5
ZXIqIHN0YWNraW5nQ29udGV4dCA9IGxheWVyLT5zdGFja2luZ0NvbnRleHQoKTsgc3RhY2tpbmdD
b250ZXh0OyBzdGFja2luZ0NvbnRleHQgPSBzdGFja2luZ0NvbnRleHQtPnN0YWNraW5nQ29udGV4
dCgpKSB7Ci0gICAgICAgIGlmIChzdGFja2luZ0NvbnRleHQtPmlzQ29tcG9zaXRlZCgpICYmIHN0
YWNraW5nQ29udGV4dC0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBv
c2l0aW9uKQorICAgIGZvciAoUmVuZGVyTGF5ZXIqIHN0YWNraW5nQ29udGFpbmVyID0gbGF5ZXIt
PnN0YWNraW5nQ29udGFpbmVyKCk7IHN0YWNraW5nQ29udGFpbmVyOyBzdGFja2luZ0NvbnRhaW5l
ciA9IHN0YWNraW5nQ29udGFpbmVyLT5zdGFja2luZ0NvbnRhaW5lcigpKSB7CisgICAgICAgIGlm
IChzdGFja2luZ0NvbnRhaW5lci0+aXNDb21wb3NpdGVkKCkgJiYgc3RhY2tpbmdDb250YWluZXIt
PnJlbmRlcmVyKCktPnN0eWxlKCktPnBvc2l0aW9uKCkgPT0gRml4ZWRQb3NpdGlvbikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCmluZGV4IDhmYmI1N2YyMTFm
ZjJjYzRiOTIwNzIzMzBkZTNmODc4NzllMTc5M2QuLjIyN2UzN2M5MTM2YjI3YWFjZWU0ODM4MzM5
MzBlNDk2YjdiMGM5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcApAQCAtNDg0LDcgKzQ4NCw3IEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZU9mZnNldEZyb21WaWV3cG9ydEZvclNlbGYoUmVuZGVyTGF5ZXIqIHJlbmRlckxh
eWVyKQogICAgIGlmICghcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCktPmNvbnRhaW5lcigpLT5pc1Jl
bmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFyZW5kZXJMYXllci0+aXNT
dGFja2luZ0NvbnRleHQoKSkKKyAgICBpZiAoIXJlbmRlckxheWVyLT5pc1N0YWNraW5nQ29udGFp
bmVyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciog
Z3JhcGhpY3NMYXllciA9IHRvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGJhY2tpbmctPmdyYXBo
aWNzTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWNlOWNiZjhjYjEzYTcwMGIwYzA2MWNkYjUwZDdiZjg3N2M5
NjZkMy4uNjRkNzAzNTU4YmMzOWM5M2MwZGVhMzA3Yzg5YzVjMjJlMGI4NmRjNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ0IEBACisyMDEzLTAxLTE2ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFByb21vdGUgY29tcG9zaXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0
YWNraW5nIGNvbnRleHRzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA2MTQyCisKKyAgICAgICAgV2hlbiB3ZSBhdXRvbWF0aWNhbGx5IG9wdCBpbnRv
IGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLCB3ZSd2ZSBkZXRlcm1pbmVkCisgICAgICAgIHRoYXQgaXQn
cyBzYWZlIHRvIGJlY29tZSBhIHN0YWNraW5nIGNvbnRleHQgKGlmIGl0J3Mgbm90LCB3ZSBnZXQK
KyAgICAgICAgcmVuZGVyaW5nIGlzc3VlcyB3aGVuIHdlIHByb21vdGUpLCBidXQgcHJldmlvdXNs
eSwgd2UgZGlkbid0IGFjdHVhbGx5CisgICAgICAgIHByb21vdGUgdGhlIGxheWVyIHRvIGJlIGEg
c3RhY2tpbmcgY29udGV4dC4gVGhpcyBoYWQgYSBudW1iZXIgb2YKKyAgICAgICAgdW5mb3J0dW5h
dGUgc2lkZSBlZmZlY3RzLiBUaGUgbWFpbiBwcm9ibGVtIHdhcyB0aGF0IHdoZW4gY29tcHV0aW5n
IAorICAgICAgICBvdmVybGFwIGluIHRoZSBSZW5kZXJMYXllckNvbXBvc2l0b3IsIHRoZSBub3cg
Y29tcG9zaXRlZCBzY3JvbGxpbmcKKyAgICAgICAgbGF5ZXIncyBkZXNjZW5kYW50cyB3ZXJlIG5v
dCBwcm9jZXNzZWQgYnkgdHJhdmVyc2luZyBpdHMgbGF5ZXIgbGlzdHMsCisgICAgICAgIGJ1dCBy
YXRoZXIgaXRzIHN0YWNraW5nIGNvbnRleHQncy4gU28gd2hhdCB3b3VsZCBoYXBwZW4gaXMgdGhh
dCB3ZQorICAgICAgICB3b3VsZCBwdXNoIG9udG8gdGhlIG92ZXJsYXAgbWFwIHN0YWNrIHdoZW4g
cHJvY2Vzc2luZyB0aGUgbmVnIHotb3JkZXIKKyAgICAgICAgYW5kIG5vcm1hbCBmbG93IGRlc2Nl
bmRhbnRzLCBidXQgd2Ugd291bGQgcG9wIGJlZm9yZSBwcm9jZXNzaW5nIHRoZQorICAgICAgICBz
dGFja2luZyBjb250ZXh0J3MgcG9zIHotb3JkZXIgbGlzdC4gV2hlbiB0aGlzIHBvcCBoYXBwZW5z
LCB0aGUKKyAgICAgICAgcHJldmlvdXNseSBjb21wdXRlZCBvdmVybGFwIHJlZ2lvbnMgJ3Rha2Ug
ZWZmZWN0Jy4gVGhpcyBtZWFucyB0aGF0IGlmCisgICAgICAgIGFueSBvZiB0aGUgbm9ybWFsIGZs
b3cgb3IgbmVnIHotb3JkZXIgZGVzY2VuZGFudHMgd2VyZSBjb21wb3NpdGVkLCBhbnkgCisgICAg
ICAgIHBvc2l0aXZlIHotb3JkZXIgZGVzY2VuZGFudHMgd291bGQgZ2V0IHByb21vdGVkIGlmIHRo
ZXkgb3ZlcmxhcHBlZC4KKyAgICAgICAgSWYgd2UgcHJvbW90ZSB0aGUgY29tcG9zaXRlZCBzY3Jv
bGxpbmcgbGF5ZXIgdG8gYSBzdGFja2luZyBjb250ZXh0LCB0aGlzCisgICAgICAgIHBvcCBubyBs
b25nZXIgaGFwcGVucyBhdCBhbiB1bmZvcnR1bmF0ZSB0aW1lLCBhbmQgc28gaXRzIGRlc2NlbmRh
bnRzCisgICAgICAgIGNhbid0IGluY29ycmVjdGx5IGNhdXNlIGVhY2ggb3RoZXIgdG8gYmUgcHJv
bW90ZWQgZHVlIHRvIG92ZXJsYXAuCisKKyAgICAgICAgT25lIHRyaWNreSBwb2ludCBoZXJlIGlz
IHRoYXQgdGhlIGNvZGUgZm9yIGF1dG9tYXRpY2FsbHkgb3B0aW5nIGludG8KKyAgICAgICAgY29t
cG9zaXRlZCBzY3JvbGxpbmcgdXNlcyBpc1N0YWNraW5nQ29udGV4dCB0byBkbyBpdHMgY2FsY3Vs
YXRpb25zLiBJdAorICAgICAgICBhbHNvIHVzZXMgbGF5ZXIgbGlzdHMgdGhhdCBhcmUgY29tcHV0
ZWQgaW4gd2F5cyB0aGF0IGRlcGVuZCBvbiB0aGUKKyAgICAgICAgdmFsdWUgb2YgaXNTdGFja2lu
Z0NvbnRleHQuCisKKyAgICAgICAgVG8gaG9wZWZ1bGx5IGNsYXJpZnkgdGhpcyBzaXR1YXRpb24s
IHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgY29uY2VwdAorICAgICAgICBvZiBhIHN0YWNraW5n
IGNvbnRhaW5lci4gQSBzdGFja2luZyBjb250YWluZXIgY2FuIGhhdmUgei1vcmRlciBsaXN0cywK
KyAgICAgICAgYnV0IGlzIG5vdCBuZWNlc3NhcmlseSBhIHN0YWNraW5nIGNvbnRleHQuIENvbXBv
c2l0ZWQgc2Nyb2xsaW5nIGxheWVycworICAgICAgICB3aWxsIGJlIHN0YWNraW5nIGNvbnRhaW5l
cnMuIE1vc3QgcGxhY2VzIHdoZXJlIHdlJ2QgcHJldmlvdXNseSB1c2VkCisgICAgICAgIHN0YWNr
aW5nIGNvbnRleHQsIHdlIGNhbiBzd2l0Y2ggdG8gc3RhY2tpbmcgY29udGFpbmVyLiBXaGVuIGRl
Y2lkaW5nCisgICAgICAgIGlmIHdlIHdpbGwgYXV0b21hdGljYWxseSBvcHQgaW50byBjb21wb3Np
dGVkIHNjcm9sbGluZywgd2Ugd2lsbCB1c2UKKyAgICAgICAgc3RhY2tpbmcgY29udGV4dCBzdGF0
dXMuCisKKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGlu
Zy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1z
dGFja2luZy1jb250ZXh0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL292
ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250ZXh0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTMtMDEtMTYgIEFuZHJleSBMdXNobmlrb3YgIDxsdXNo
bmlrb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNyZWF0ZSBoZWxw
ZXIgSW5zcGVjdG9yVGVzdCBtZXRob2QgdG8gZHVtcCBlZGl0b3IgSFRNTApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3Jl
YXRlcy1hLXN0YWNraW5nLWNvbnRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNv
bnRleHQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ODM4ZTg0YjE4MGU5MTA3MGY3YzI2ZDAw
NmNhNTU3ZmFiMzI1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1NCBAQAorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5k
cyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAg
ICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiAyOC4wMCAyMC4wMCkKKyAgICAgICAgICAo
Ym91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAg
ICAgIChjaGlsZHJlbiA0CisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAg
ICAocG9zaXRpb24gMS4wMCAxLjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDIwMC4wMCAyMDAu
MDApCisgICAgICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDMwMC4wMCkKKyAgICAgICAg
ICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgIChjaGlsZHJlbiAy
CisgICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgICAgICAg
ICAgKGJvdW5kcyAyMDIuMDAgMjAyLjAwKQorICAgICAgICAgICAgICAgICAgICAgIChkcmF3c0Nv
bnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAoR3Jh
cGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDE1MC4wMCkK
KyAgICAgICAgICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAg
ICAgICAgIChwb3NpdGlvbiAxLjAwIDE4Ni4wMCkKKyAgICAgICAgICAgICAgKGJvdW5kcyAxODUu
MDAgMTUuMDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICkK
KyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxODYu
MDAgMS4wMCkKKyAgICAgICAgICAgICAgKGJvdW5kcyAxNS4wMCAxODUuMDApCisgICAgICAgICAg
ICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxODYuMDAgMTg2LjAwKQorICAgICAgICAg
ICAgICAoYm91bmRzIDE1LjAwIDE1LjAwKQorICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEp
CisgICAgICAgICAgICApCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQor
ICApCispCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cv
Y29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRleHQuaHRtbCBiL0xh
eW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0
ZXMtYS1zdGFja2luZy1jb250ZXh0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmOGViOWZlY2Y1ODM2MGQw
MDc5NDg3ZDQ1ZTIxYjMyMDY2ZDIzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2lu
Zy1jb250ZXh0Lmh0bWwKQEAgLTAsMCArMSw3NiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICIt
Ly9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAg
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiLz4KKyAgPHRpdGxlPkNvbXBvc2l0ZWQgc2Nyb2xsaW5nIGNyZWF0ZXMgYSBzdGFj
a2luZyBjb250ZXh0LjwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj
cmVlbiI+CisgICAgLmNvbnRhaW5lciB7CisgICAgICB3aWR0aDogMjAwcHg7CisgICAgICBoZWln
aHQ6IDIwMHB4OworICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgIG1hcmdpbjogMjBweDsK
KyAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIH0KKworICAgIC5jb21wb3NpdGVk
IHsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICAtd2Vi
a2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdy
ZWVuOworICAgIH0KKworICAgIC5ub3QtY29tcG9zaXRlZCB7CisgICAgICB3aWR0aDogMjAwcHg7
CisgICAgICBoZWlnaHQ6IDE1MHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAg
ICB9CisKKyAgICAuaW4tZmxvdy1wb3NpdGlvbmVkIHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKKyAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgIH0KKworICAgIC5maXhlZCB7CisgICAgICB6
LWluZGV4OiAtMTsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cisg
ICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNl
dD0idXRmLTgiPgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICB3aW5kb3cu
aW50ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Nj
cm9sbEVuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAg
IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworCisgICAgICBpZiAod2luZG93LmludGVybmFscykg
eworICAgICAgICB2YXIgbGF5ZXJUcmVlID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1Rl
eHQoZG9jdW1lbnQpOworICAgICAgICB2YXIgcHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnNvbGUnKTsKKyAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShs
YXllclRyZWUgKyAnXG4nKTsKKyAgICAgICAgcHJlLmFwcGVuZENoaWxkKHRleHQpOworICAgICAg
fQorICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBm
YWxzZSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImNvbnRh
aW5lciI+CisgICAgPGRpdiBjbGFzcz0iaW4tZmxvdy1wb3NpdGlvbmVkIj4KKyAgICAgIDxkaXYg
Y2xhc3M9ImZpeGVkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb21wb3Np
dGVkIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJub3QtY29tcG9zaXRlZCI+PC9kaXY+CisgIDwv
ZGl2PgorICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTVi
ZDM0YmE4MmUzMmRlNWY4NTI0MDQ3NDFlM2Y1OGY4MzllYWU2NS4uMTIzYjdkNzhmZGQ1ZDI0YzNl
MjFlODc1NjE4MTUzYzQ1OWJiN2QxOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNjI3LDYgKzM2MjcsOSBAQCB3ZWJraXQub3JnL2Iv
OTI5NjggaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLmh0bWwKICMg
U2Nyb2xsaW5nIGNvbnRlbnQgZHJhd3MgYmVuZWF0aCBzY3JvbGxiYXJzIGluIGNvbXBvc2l0ZWQg
c2Nyb2xsaW5nIG1vZGUuCiB3ZWJraXQub3JnL2IvMTAzMTU2IHBsYXRmb3JtL2Nocm9taXVtL3Zp
cnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvc2Nyb2xsYmFycy9jdXN0b20tc2Nyb2xsYmFy
LXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKKyMgUmVx
dWlyZXMgYW4gdXBkYXRlZCBiYXNlbGluZSBhZnRlciAxMDYxNDIuCit3ZWJraXQub3JnL2IvMTA2
ODIwIHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvb3Zl
cmZsb3cvb3ZlcmZsb3ctc2Nyb2xsLmh0bWwgWyBGYWlsdXJlIF0KKwogIyBGYWlscyBkdWUgdG8g
QnVnIDg1ODU2Lgogd2Via2l0Lm9yZy9iLzg1ODU2IFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9i
bG9jay9mbG9hdC8wMjguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg1
ODU2IFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9ibG9jay9mbG9hdC8wMjYuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBv
c2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1j
b250ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGlu
Zy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGV4
dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhMmY5YjliYWQ0YjRiY2Y3YzNiNDUzZjU4ZmJi
NDViOGY2MmYxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9j
b21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tp
bmctY29udGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorKEdyYXBoaWNzTGF5ZXIK
KyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xh
eWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAg
ICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiAyOC4wMCAyMC4wMCkKKyAg
ICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAx
KQorICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAg
ICAgICAgICAgICAocG9zaXRpb24gMS4wMCAxLjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDIw
MC4wMCAyMDAuMDApCisgICAgICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAgICAg
KEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDMwMC4wMCkK
KyAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgIChj
aGlsZHJlbiAyCisgICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAg
ICAgICAgICAgICAgKGJvdW5kcyAyMDIuMDAgMjAyLjAwKQorICAgICAgICAgICAgICAgICAgICAg
IChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
ICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAw
IDE1MC4wMCkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgKQorICAg
ICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAg
ICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184388</attachid>
            <date>2013-01-23 20:18:17 -0800</date>
            <delta_ts>2013-01-25 13:42:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106142-20130123231510.patch</filename>
            <type>text/plain</type>
            <size>20186</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk3YzdjNDI4NTlkN2Qy
ZDlkYTFhYjU5MTc1ZjQ4NDRmNTRjMTQxMS4uMjI2YTczMzM3ZTA0YzQ2ZjBlOTAzOTc5ZTA4Yjg2
ZmI4Y2I0MzdiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAxLTIzICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFByb21vdGUgY29tcG9z
aXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0YWNraW5nIGNvbnRhaW5lcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIFJl
bmRlckxheWVycyB0aGF0IHVzZSBjb21wb3NpdGVkIHNjcm9sbGluZyBhcmUKKyAgICAgICAgdHJl
YXRlZCBhcyBzdGFja2luZyBjb250ZXh0cy4gU2luY2UgaXNTdGFja2luZ0NvbnRhaW5lciBub3cg
ZGVwZW5kcyBvbgorICAgICAgICB0aGUgdmFsdWUgb2YgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcsIHNwZWNpYWwgY2FyZSBuZWVkZWQgdG8gYmUKKyAgICAgICAgdGFrZW4gdG8gZW5zdXJlIHRo
YXQgdGhlIHZhbHVlIG9mIGlzU3RhY2tpbmdDb250YWluZXIgaXMgbm90IHVzZWQgd2hlbgorICAg
ICAgICB1cGRhdGluZyBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZy4gSW4gcGFydGljdWxhciwg
dGhlIGNvZGUgZm9yCisgICAgICAgIHJlYnVpbGRpbmcgdGhlIGxheWVyIGxpc3RzIG5lZWRlZCB0
byBiZSBnZW5lcmFsaXplZCBzbyB0aGF0IHdlIGNvdWxkCisgICAgICAgIGJ1aWxkIHRoZSBsYXll
ciBsaXN0cyB1c2luZyB0aGUgdmFsdWUgb2YgaXNTdGFja2luZ0NvbnRleHQgcmF0aGVyIHRoYW4K
KyAgICAgICAgaXNTdGFja2luZ0NvbnRhaW5lciB3aGVuIGJ1aWxkaW5nIHRoZSBsYXllciBsaXN0
cyB1c2VkIHRvIGRldGVybWluZSBpZgorICAgICAgICB0aGUgZGVzY2VuZGFudHMgYXJlIGNvbnRp
Z3VvdXMgaW4gc3RhY2tpbmcgb3JkZXIuIEFsc28sIHVwZGF0aW5nCisgICAgICAgIG1fbmVlZHND
b21wb3NpdGVkU2Nyb2xsaW5nIGNhbiBub3cgYWZmZWN0IHN0YWNraW5nIGNvbnRhaW5lciBzdGF0
dXMKKyAgICAgICAgYW5kIGNhbiB0aGVyZWZvcmUgZGlydHkgbGF5ZXIgbGlzdHMuCisKKyAgICAg
ICAgVGVzdDogY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRl
cy1hLXN0YWNraW5nLWNvbnRhaW5lci5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRh
bnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6CisgICAgICAgICAgTW9kaWZpZWQgdG8g
dXNlIGxheWVyIGxpc3RzIGJ1aWx0IGJhc2VkIG9uIGlzU3RhY2tpbmdDb250ZXh0IHJhdGhlcgor
ICAgICAgICAgIHRoYW4gaXNTdGFja2luZ0NvbnRhaW5lci4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFRo
aXMgZnVuY3Rpb24gY2FuIG5vdyBhZmZlY3Qgc3RhY2tpbmcgY29udGFpbmVyIHN0YXR1cyBhbmQg
bGF5ZXIKKyAgICAgICAgICBsaXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpy
ZWJ1aWxkWk9yZGVyTGlzdHMpOgorICAgICAgICAgIFJlZmFjdG9yZWQgdGhpcyBmdW5jdGlvbiB0
byBnZW5lcmFsaXplIGxheWVyIGxpc3QgYnVpbGRpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y29sbGVjdExheWVycyk6CisgICAgICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gbm93
IHN0b3AgZWl0aGVyIGF0IHN0YWNraW5nIGNvbnRhaW5lcnMgb3IKKyAgICAgICAgICBjb250ZXh0
cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVk
ZWQpOgorICAgICAgICAgIExheWVyIGxpc3RzIG1heSBuZWVkIHRvIGJlIHJlYnVpbGQgYSAybmQg
dGltZSBpZiB3ZSBvcHQgaW50bworICAgICAgICAgIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzU3RhY2tpbmdDb250YWluZXIpOgorICAgICAg
ICAgIFRoaXMgZnVuY3Rpb24gbm93IHJldHVybnMgdHJ1ZSBpZiB0aGUgbGF5ZXIgbmVlZHMgY29t
cG9zaXRlZAorICAgICAgICAgIHNjcm9sbGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjppc1N0YWNraW5nQ29udGFpbmVyKToKKwogMjAxMy0wMS0yMyAgQWJoaXNoZWsg
QXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IDE2ZTlkZTNhNTM4ZGM4YzFkNjFkYzZjZmEzZGEzZTdiZWNj
OTg2MmUuLmU1MDAxMDIxNjRjNjU1NTIzOTRjZjY2ZWZkMTA3OGYwMjVjMmUyNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjA3LDI1ICs2MDcsMjkgQEAg
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyKCkKICAgICBBU1NFUlQoIW1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CiAgICAgQVNTRVJU
KCFtX3pPcmRlckxpc3RzRGlydHkpOwogCisgICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+
ID4gcG9zWk9yZGVyTGlzdDsKKyAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiBuZWda
T3JkZXJMaXN0OworICAgIHJlYnVpbGRaT3JkZXJMaXN0cyhTdG9wQXRTdGFja2luZ0NvbnRleHRz
LCBwb3NaT3JkZXJMaXN0LCBuZWdaT3JkZXJMaXN0KTsKKwogICAgIC8vIENyZWF0ZSBhIHJldmVy
c2UgbG9va3VwLgogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBpbnQ+IGxvb2t1cDsK
IAotICAgIGlmIChtX25lZ1pPcmRlckxpc3QpIHsKKyAgICBpZiAobmVnWk9yZGVyTGlzdCkgewog
ICAgICAgICBpbnQgc3RhY2tpbmdPcmRlckluZGV4ID0gLTE7Ci0gICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG1fbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgICAgICBzaXplX3QgbGlzdFNpemUg
PSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9
IG1fbmVnWk9yZGVyTGlzdC0+YXQobGlzdFNpemUgLSBpIC0gMSk7CisgICAgICAgICAgICBSZW5k
ZXJMYXllciogY3VycmVudExheWVyID0gbmVnWk9yZGVyTGlzdC0+YXQobGlzdFNpemUgLSBpIC0g
MSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGxvb2t1cC5zZXQoY3VycmVu
dExheWVyLCBzdGFja2luZ09yZGVySW5kZXgtLSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAobV9wb3NaT3JkZXJMaXN0KSB7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG1fcG9zWk9y
ZGVyTGlzdC0+c2l6ZSgpOworICAgIGlmIChwb3NaT3JkZXJMaXN0KSB7CisgICAgICAgIHNpemVf
dCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgaW50IHN0YWNraW5n
T3JkZXJJbmRleCA9IDE7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IG1fcG9zWk9y
ZGVyTGlzdC0+YXQoaSk7CisgICAgICAgICAgICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0g
cG9zWk9yZGVyTGlzdC0+YXQoaSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRMYXllci0+aXNT
dGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGxvb2t1cC5zZXQoY3VycmVudExheWVyLCBzdGFja2luZ09yZGVySW5kZXgrKyk7CkBAIC0xOTE0
LDggKzE5MTgsMjIgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nKCkKICNlbmRpZgogICAgIH0KIAotICAgIGlmIChvbGROZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcgIT0gbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpCisgICAgaWYgKG9sZE5lZWRzQ29t
cG9zaXRlZFNjcm9sbGluZyAhPSBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykgewogICAgICAg
ICB1cGRhdGVTZWxmUGFpbnRpbmdMYXllcigpOworICAgICAgICBpZiAoaXNTdGFja2luZ0NvbnRh
aW5lcigpKQorICAgICAgICAgICAgZGlydHlaT3JkZXJMaXN0cygpOworCisgICAgICAgIFJlbmRl
ckxheWVyKiBzYyA9IHBhcmVudCgpOworICAgICAgICB3aGlsZSAoc2MgJiYgIXNjLT5pc1N0YWNr
aW5nQ29udGV4dCgpKQorICAgICAgICAgICAgc2MgPSBzYy0+cGFyZW50KCk7CisgICAgICAgIAor
ICAgICAgICBpZiAoc2MpIHsKKyAgICAgICAgICAgIHNjLT5kaXJ0eVpPcmRlckxpc3RzKCk7Cisg
ICAgICAgICAgICBzYy0+ZGlydHlOb3JtYWxGbG93TGlzdCgpOworICAgICAgICB9CisgICAgICAg
IGNvbXBvc2l0b3IoKS0+c2V0Q29tcG9zaXRpbmdMYXllcnNOZWVkUmVidWlsZCgpOworICAgICAg
ICBjb21wb3NpdG9yKCktPnNldFNob3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0
KCk7CisgICAgfQogfQogI2VuZGlmCiAKQEAgLTUxNDQsNyArNTE2MiwxMiBAQCB2b2lkIFJlbmRl
ckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoKQogewogICAgIEFTU0VSVChtX2xheWVyTGlzdE11
dGF0aW9uQWxsb3dlZCk7CiAgICAgQVNTRVJUKGlzRGlydHlTdGFja2luZ0NvbnRhaW5lcigpKTsK
KyAgICByZWJ1aWxkWk9yZGVyTGlzdHMoU3RvcEF0U3RhY2tpbmdDb250YWluZXJzLCBtX3Bvc1pP
cmRlckxpc3QsIG1fbmVnWk9yZGVyTGlzdCk7CisgICAgbV96T3JkZXJMaXN0c0RpcnR5ID0gZmFs
c2U7Cit9CiAKK3ZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyhDb2xsZWN0TGF5
ZXJzQmVoYXZpb3IgYmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiBwb3Na
T3JkZXJMaXN0LCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgbmVnWk9yZGVyTGlzdCkK
K3sKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBpbmNsdWRlSGlk
ZGVuTGF5ZXJzID0gY29tcG9zaXRvcigpLT5pbkNvbXBvc2l0aW5nTW9kZSgpOwogI2Vsc2UKQEAg
LTUxNTIsMTQgKzUxNzUsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3Rz
KCkKICNlbmRpZgogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBj
aGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgaWYgKCFtX3JlZmxl
Y3Rpb24gfHwgcmVmbGVjdGlvbkxheWVyKCkgIT0gY2hpbGQpCi0gICAgICAgICAgICBjaGlsZC0+
Y29sbGVjdExheWVycyhpbmNsdWRlSGlkZGVuTGF5ZXJzLCBtX3Bvc1pPcmRlckxpc3QsIG1fbmVn
Wk9yZGVyTGlzdCk7CisgICAgICAgICAgICBjaGlsZC0+Y29sbGVjdExheWVycyhpbmNsdWRlSGlk
ZGVuTGF5ZXJzLCBiZWhhdmlvciwgcG9zWk9yZGVyTGlzdCwgbmVnWk9yZGVyTGlzdCk7CiAKICAg
ICAvLyBTb3J0IHRoZSB0d28gbGlzdHMuCi0gICAgaWYgKG1fcG9zWk9yZGVyTGlzdCkKLSAgICAg
ICAgc3RkOjpzdGFibGVfc29ydChtX3Bvc1pPcmRlckxpc3QtPmJlZ2luKCksIG1fcG9zWk9yZGVy
TGlzdC0+ZW5kKCksIGNvbXBhcmVaSW5kZXgpOworICAgIGlmIChwb3NaT3JkZXJMaXN0KQorICAg
ICAgICBzdGQ6OnN0YWJsZV9zb3J0KHBvc1pPcmRlckxpc3QtPmJlZ2luKCksIHBvc1pPcmRlckxp
c3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKIAotICAgIGlmIChtX25lZ1pPcmRlckxpc3QpCi0g
ICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9uZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBtX25lZ1pP
cmRlckxpc3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKKyAgICBpZiAobmVnWk9yZGVyTGlzdCkK
KyAgICAgICAgc3RkOjpzdGFibGVfc29ydChuZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBuZWdaT3Jk
ZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAKICNpZiBFTkFCTEUoRElBTE9HX0VMRU1F
TlQpCiAgICAgLy8gQXBwZW5kIGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGFmdGVyIG5v
cm1hbCBsYXllciBjb2xsZWN0aW9uLCB0byBlbnN1cmUgdGhleSBhcmUgb24gdG9wIHJlZ2FyZGxl
c3Mgb2Ygei1pbmRleGVzLgpAQCAtNTE3MCwxMyArNTE5MywxMiBAQCB2b2lkIFJlbmRlckxheWVy
OjpyZWJ1aWxkWk9yZGVyTGlzdHMoKQogICAgICAgICAgICAgRWxlbWVudCogY2hpbGRFbGVtZW50
ID0gKGNoaWxkLT5ub2RlKCkgJiYgY2hpbGQtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSA/IHRv
RWxlbWVudChjaGlsZC0+bm9kZSgpKSA6IDA7CiAgICAgICAgICAgICBpZiAoY2hpbGRFbGVtZW50
ICYmIGNoaWxkRWxlbWVudC0+aXNJblRvcExheWVyKCkpIHsKICAgICAgICAgICAgICAgICBSZW5k
ZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QoY2hpbGQpLT5sYXllcigp
OwotICAgICAgICAgICAgICAgIG1fcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVyKTsKKyAgICAg
ICAgICAgICAgICBwb3NaT3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3pPcmRlckxpc3RzRGlydHkgPSBmYWxz
ZTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQpAQCAtNTE5
OCw3ICs1MjIwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQog
ICAgIG1fbm9ybWFsRmxvd0xpc3REaXJ0eSA9IGZhbHNlOwogfQogCi12b2lkIFJlbmRlckxheWVy
Ojpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgT3duUHRyPFZlY3RvcjxS
ZW5kZXJMYXllcio+ID4mIHBvc0J1ZmZlciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4m
IG5lZ0J1ZmZlcikKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRl
SGlkZGVuTGF5ZXJzLCBDb2xsZWN0TGF5ZXJzQmVoYXZpb3IgYmVoYXZpb3IsIE93blB0cjxWZWN0
b3I8UmVuZGVyTGF5ZXIqPiA+JiBwb3NCdWZmZXIsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIq
PiA+JiBuZWdCdWZmZXIpCiB7CiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQogICAgIGlmIChp
c0luVG9wTGF5ZXIoKSkKQEAgLTUyMDcsNyArNTIyOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNv
bGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBPd25QdHI8VmVjdG9yPFJlbmRl
ckxhCiAKICAgICB1cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKIAotICAgIGJvb2wg
aXNTdGFja2luZyA9IGlzU3RhY2tpbmdDb250YWluZXIoKTsKKyAgICBib29sIGlzU3RhY2tpbmcg
PSBiZWhhdmlvciA9PSBTdG9wQXRTdGFja2luZ0NvbnRleHRzID8gaXNTdGFja2luZ0NvbnRleHQo
KSA6IGlzU3RhY2tpbmdDb250YWluZXIoKTsKICAgICAvLyBPdmVyZmxvdyBsYXllcnMgYXJlIGp1
c3QgcGFpbnRlZCBieSB0aGVpciBlbmNsb3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0IGdldCBw
dXQgaW4gem9yZGVyIGxpc3RzLgogICAgIGJvb2wgaW5jbHVkZUhpZGRlbkxheWVyID0gaW5jbHVk
ZUhpZGRlbkxheWVycyB8fCAobV9oYXNWaXNpYmxlQ29udGVudCB8fCAobV9oYXNWaXNpYmxlRGVz
Y2VuZGFudCAmJiBpc1N0YWNraW5nKSk7CiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAh
aXNOb3JtYWxGbG93T25seSgpICYmICFyZW5kZXJlcigpLT5pc1JlbmRlckZsb3dUaHJlYWQoKSkg
ewpAQCAtNTIyOCw3ICs1MjUwLDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhi
b29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIE93blB0cjxWZWN0b3I8UmVuZGVyTGEKICAgICAgICAg
Zm9yIChSZW5kZXJMYXllciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNo
aWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICAvLyBJZ25vcmUgcmVmbGVjdGlvbnMu
CiAgICAgICAgICAgICBpZiAoIW1fcmVmbGVjdGlvbiB8fCByZWZsZWN0aW9uTGF5ZXIoKSAhPSBj
aGlsZCkKLSAgICAgICAgICAgICAgICBjaGlsZC0+Y29sbGVjdExheWVycyhpbmNsdWRlSGlkZGVu
TGF5ZXJzLCBwb3NCdWZmZXIsIG5lZ0J1ZmZlcik7CisgICAgICAgICAgICAgICAgY2hpbGQtPmNv
bGxlY3RMYXllcnMoaW5jbHVkZUhpZGRlbkxheWVycywgYmVoYXZpb3IsIHBvc0J1ZmZlciwgbmVn
QnVmZmVyKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTUyMzYsNyArNTI1OCw2IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBPd25Q
dHI8VmVjdG9yPFJlbmRlckxhCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZO
ZWVkZWQoKQogewogICAgIGJvb2wgc2hvdWxkVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3Vz
SW5TdGFja2luZ09yZGVyID0gaXNTdGFja2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0Rp
cnR5IHx8IG1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7Ci0KICAgICB1cGRhdGVaT3JkZXJMaXN0cygp
OwogICAgIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAKQEAgLTUyNDUsOCArNTI2NiwxMyBAQCB2
b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogICAgICAgICByZWZs
ZWN0aW9uTGF5ZXItPnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAgICAgfQogCi0gICAgaWYgKHNo
b3VsZFVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcikKKyAgICBp
ZiAoc2hvdWxkVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKSB7
CiAgICAgICAgIHVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigp
OworICAgICAgICAvLyBUaGUgYWJvdmUgZnVuY3Rpb24gY2FuIGNhdXNlIHVzIHRvIHVwZGF0ZSBt
X25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZworICAgICAgICAvLyBhbmQgZGlydHkgb3VyIGxheWVy
IGxpc3RzLiBSZWZyZXNoIHRoZW0gaWYgbmVjZXNzYXJ5LgorICAgICAgICB1cGRhdGVaT3JkZXJM
aXN0cygpOworICAgICAgICB1cGRhdGVOb3JtYWxGbG93TGlzdCgpOworICAgIH0KIH0KIAogdm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlQ29tcG9zaXRpbmdBbmRMYXllckxpc3RzSWZOZWVkZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAzZDZlYWExZTJlNTk3OWNi
M2M0ZmY3MjEzOGM1NzQ4MzJlNzE3ODFhLi5jOTczNTBkNmM2NzY5YWE1MmM4ZmVlZTRhMTQ1Yjk0
NGU1ZTllZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDMx
LDggKzQzMSwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0
IHsgcmV0dXJuIGlzU3RhY2tpbmdDb250ZXh0KHJlbmRlcmVyKCktPnN0eWxlKCkpOyB9CiAKICAg
ICAvLyBBIHN0YWNraW5nIGNvbnRhaW5lciBjYW4gaGF2ZSB6LW9yZGVyIGxpc3RzLiBBbGwgc3Rh
Y2tpbmcgY29udGV4dHMgYXJlCi0gICAgLy8gc3RhY2tpbmcgY29udGFpbmVycywgYnV0IHRoZSBj
b252ZXJzZSBpcyBub3QgdHJ1ZS4KLSAgICBib29sIGlzU3RhY2tpbmdDb250YWluZXIoKSBjb25z
dCB7IHJldHVybiBpc1N0YWNraW5nQ29udGV4dCgpOyB9CisgICAgLy8gc3RhY2tpbmcgY29udGFp
bmVycywgYnV0IHRoZSBjb252ZXJzZSBpcyBub3QgdHJ1ZS4gTGF5ZXJzIHRoYXQgdXNlCisgICAg
Ly8gY29tcG9zaXRlZCBzY3JvbGxpbmcgYXJlIHN0YWNraW5nIGNvbnRhaW5lcnMsIGJ1dCB0aGV5
IG1heSBub3QKKyAgICAvLyBuZWNlc3NhcmlseSBiZSBzdGFja2luZyBjb250ZXh0cy4KKyAgICBi
b29sIGlzU3RhY2tpbmdDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBpc1N0YWNraW5nQ29udGV4
dCgpIHx8IG5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOyB9CiAKICAgICAvLyBHZXRzIHRoZSBl
bmNsb3Npbmcgc3RhY2tpbmcgY29udGFpbmVyIGZvciB0aGlzIGxheWVyLgogICAgIFJlbmRlckxh
eWVyKiBzdGFja2luZ0NvbnRhaW5lcigpIGNvbnN0OwpAQCAtNzU4LDggKzc2MCwxMSBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBlbnVtIENvbGxlY3RMYXllcnNCZWhhdmlvciB7
IFN0b3BBdFN0YWNraW5nQ29udGV4dHMsIFN0b3BBdFN0YWNraW5nQ29udGFpbmVycyB9OworCiAg
ICAgdm9pZCB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHZvaWQgcmVidWlsZFpPcmRlckxpc3Rz
KCk7CisgICAgdm9pZCByZWJ1aWxkWk9yZGVyTGlzdHMoQ29sbGVjdExheWVyc0JlaGF2aW9yLCBP
d25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIq
PiA+Jik7CiAgICAgdm9pZCBjbGVhclpPcmRlckxpc3RzKCk7CiAKICAgICB2b2lkIHVwZGF0ZU5v
cm1hbEZsb3dMaXN0KCk7CkBAIC04MzAsNyArODM1LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRV
bml0IHJlbmRlckJveFgoKSBjb25zdCB7IHJldHVybiByZW5kZXJCb3hMb2NhdGlvbigpLngoKTsg
fQogICAgIExheW91dFVuaXQgcmVuZGVyQm94WSgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlckJveExv
Y2F0aW9uKCkueSgpOyB9CiAKLSAgICB2b2lkIGNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlk
ZGVuTGF5ZXJzLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYsIE93blB0cjxWZWN0b3I8
UmVuZGVyTGF5ZXIqPiA+Jik7CisgICAgdm9pZCBjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhp
ZGRlbkxheWVycywgQ29sbGVjdExheWVyc0JlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRlckxh
eWVyKj4gPiYsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+Jik7CiAKICAgICB2b2lkIHVw
ZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZTFiNWMx
Y2M2MTE3NTJkMzhmZTdmNTljODY5NmRmNTgwNGMxZjY2Li5lNGY4N2JkYjVmZGEyOTUxNmNkMThm
NjQ2NzE2OTU3MDZlYTExZjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDEtMjMgIElh
biBWb2xsaWNrICA8dm9sbGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUHJvbW90ZSBjb21w
b3NpdGVkLXNjcm9sbGluZyBsYXllcnMgdG8gc3RhY2tpbmcgY29udGFpbmVycy4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE0MgorCisgICAgICAg
IFdpdGggdGhpcyBwYXRjaCwgUmVuZGVyTGF5ZXJzIHRoYXQgdXNlIGNvbXBvc2l0ZWQgc2Nyb2xs
aW5nIGFyZQorICAgICAgICB0cmVhdGVkIGFzIHN0YWNraW5nIGNvbnRleHRzLiBTaW5jZSBpc1N0
YWNraW5nQ29udGFpbmVyIG5vdyBkZXBlbmRzIG9uCisgICAgICAgIHRoZSB2YWx1ZSBvZiBtX25l
ZWRzQ29tcG9zaXRlZFNjcm9sbGluZywgc3BlY2lhbCBjYXJlIG5lZWRlZCB0byBiZQorICAgICAg
ICB0YWtlbiB0byBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgb2YgaXNTdGFja2luZ0NvbnRhaW5lciBp
cyBub3QgdXNlZCB3aGVuCisgICAgICAgIHVwZGF0aW5nIG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xs
aW5nLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY29kZSBmb3IKKyAgICAgICAgcmVidWlsZGluZyB0aGUg
bGF5ZXIgbGlzdHMgbmVlZGVkIHRvIGJlIGdlbmVyYWxpemVkIHNvIHRoYXQgd2UgY291bGQKKyAg
ICAgICAgYnVpbGQgdGhlIGxheWVyIGxpc3RzIHVzaW5nIHRoZSB2YWx1ZSBvZiBpc1N0YWNraW5n
Q29udGV4dCByYXRoZXIgdGhhbgorICAgICAgICBpc1N0YWNraW5nQ29udGFpbmVyIHdoZW4gYnVp
bGRpbmcgdGhlIGxheWVyIGxpc3RzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmCisgICAgICAgIHRoZSBk
ZXNjZW5kYW50cyBhcmUgY29udGlndW91cyBpbiBzdGFja2luZyBvcmRlci4gQWxzbywgdXBkYXRp
bmcKKyAgICAgICAgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgY2FuIG5vdyBhZmZlY3Qgc3Rh
Y2tpbmcgY29udGFpbmVyIHN0YXR1cworICAgICAgICBhbmQgY2FuIHRoZXJlZm9yZSBkaXJ0eSBs
YXllciBsaXN0cy4KKworICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQt
c2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250YWluZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBjb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1j
cmVhdGVzLWEtc3RhY2tpbmctY29udGFpbmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2Nv
bXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2lu
Zy1jb250YWluZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMy0wMS0yMyAgUmFmYWVsIFdl
aW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRlbXBsYXRlIGVsZW1l
bnQgc2hvdWxkIHBhcnNlIGluIFhIVE1MIGp1c3QgYXMgaXQgZG9lcyBpbiBIVE1MCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGlu
Zy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGFpbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFj
a2luZy1jb250YWluZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ODM4ZTg0YjE4MGU5MTA3
MGY3YzI2ZDAwNmNhNTU3ZmFiMzI1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tp
bmctY29udGFpbmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU0IEBACisoR3JhcGhpY3NMYXll
cgorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChjaGlsZHJlbiAxCisg
ICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDI4LjAwIDIwLjAwKQor
ICAgICAgICAgIChib3VuZHMgMjAyLjAwIDIwMi4wMCkKKyAgICAgICAgICAoZHJhd3NDb250ZW50
IDEpCisgICAgICAgICAgKGNoaWxkcmVuIDQKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDEuMDApCisgICAgICAgICAgICAgIChib3VuZHMg
MjAwLjAwIDIwMC4wMCkKKyAgICAgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgICAgICAg
ICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMzAwLjAw
KQorICAgICAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgICAgICAg
KGNoaWxkcmVuIDIKKyAgICAgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAg
ICAgICAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAgICAgICAgICAgICAg
ICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg
ICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDAu
MDAgMTUwLjAwKQorICAgICAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAg
ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkK
KyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKKyAgICAgICAgICAgICAgKHBvc2l0aW9uIDEuMDAgMTg2LjAwKQorICAgICAgICAgICAgICAo
Ym91bmRzIDE4NS4wMCAxNS4wMCkKKyAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAg
ICAgICAgICAgKQorICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgKHBv
c2l0aW9uIDE4Ni4wMCAxLjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDE1LjAwIDE4NS4wMCkK
KyAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgKQorICAgICAgICAg
ICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgKHBvc2l0aW9uIDE4Ni4wMCAxODYuMDAp
CisgICAgICAgICAgICAgIChib3VuZHMgMTUuMDAgMTUuMDApCisgICAgICAgICAgICAgIChkcmF3
c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICApCisgICAgICAgICkKKyAgICAg
ICkKKyAgICApCisgICkKKykKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGlu
Zy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGFp
bmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNj
cm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGFpbmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdm
OGViOWZlY2Y1ODM2MGQwMDc5NDg3ZDQ1ZTIxYjMyMDY2ZDIzMwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNy
ZWF0ZXMtYS1zdGFja2luZy1jb250YWluZXIuaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZ
UEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgor
ICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9
ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9
InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIvPgorICA8dGl0bGU+Q29tcG9zaXRlZCBzY3JvbGxp
bmcgY3JlYXRlcyBhIHN0YWNraW5nIGNvbnRleHQuPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRl
eHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuY29udGFpbmVyIHsKKyAgICAgIHdpZHRoOiAy
MDBweDsKKyAgICAgIGhlaWdodDogMjAwcHg7CisgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAg
ICAgbWFyZ2luOiAyMHB4OworICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgfQor
CisgICAgLmNvbXBvc2l0ZWQgeworICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAx
NTBweDsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorCisgICAgLm5vdC1jb21wb3NpdGVkIHsKKyAg
ICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBibHVlOworICAgIH0KKworICAgIC5pbi1mbG93LXBvc2l0aW9uZWQgeworICAgICAg
cG9zaXRpb246IHJlbGF0aXZlOworICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgfQorCisgICAg
LmZpeGVkIHsKKyAgICAgIHotaW5kZXg6IC0xOworICAgICAgcG9zaXRpb246IGFic29sdXRlOwor
ICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgIGJhY2tncm91
bmQtY29sb3I6IHJlZDsKKyAgICB9CisgIDwvc3R5bGU+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFs
cykKKyAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0Zvck92ZXJmbG93U2Nyb2xsRW5hYmxlZCh0cnVlKTsKKworICAgIGZ1bmN0aW9uIGRvVGVz
dCgpCisgICAgeworICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisKKyAgICAgIGlmICh3
aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgIHZhciBsYXllclRyZWUgPSB3aW5kb3cuaW50ZXJu
YWxzLmxheWVyVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgIHZhciBwcmUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpOworICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKGxheWVyVHJlZSArICdcbicpOworICAgICAgICBwcmUuYXBwZW5kQ2hp
bGQodGV4dCk7CisgICAgICB9CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
PGRpdiBjbGFzcz0iY29udGFpbmVyIj4KKyAgICA8ZGl2IGNsYXNzPSJpbi1mbG93LXBvc2l0aW9u
ZWQiPgorICAgICAgPGRpdiBjbGFzcz0iZml4ZWQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxk
aXYgY2xhc3M9ImNvbXBvc2l0ZWQiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im5vdC1jb21wb3Np
dGVkIj48L2Rpdj4KKyAgPC9kaXY+CisgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5
PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVj
dGF0aW9ucwppbmRleCA2YmI0MWJhMDhiM2NmMGI1OGI4YWQxYjBjMjE4YTE0YWE2ZDA4ZGYyLi5m
MmQ1NjQwMjdiY2QxOTM4NzYxMzMxNzQ3ZTY1NDgzNzYwOTkyZTIwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM2MzUsNiArMzYzNSw5
IEBAIHdlYmtpdC5vcmcvYi85Mjk2OCBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9u
cHJvZ3Jlc3MuaHRtbAogIyBTY3JvbGxpbmcgY29udGVudCBkcmF3cyBiZW5lYXRoIHNjcm9sbGJh
cnMgaW4gY29tcG9zaXRlZCBzY3JvbGxpbmcgbW9kZS4KIHdlYmtpdC5vcmcvYi8xMDMxNTYgcGxh
dGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvY29tcG9zaXRlZHNjcm9sbGluZy9zY3JvbGxiYXJz
L2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAorIyBSZXF1aXJlcyBhbiB1cGRhdGVkIGJhc2VsaW5lIGFmdGVyIDEwNjE0Mi4K
K3dlYmtpdC5vcmcvYi8xMDY4MjAgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvY29tcG9z
aXRlZHNjcm9sbGluZy9vdmVyZmxvdy9vdmVyZmxvdy1zY3JvbGwuaHRtbCBbIEZhaWx1cmUgXQor
CiAjIEZhaWxzIGR1ZSB0byBCdWcgODU4NTYuCiB3ZWJraXQub3JnL2IvODU4NTYgWyBXaW4gTWFj
IEFuZHJvaWQgXSBmYXN0L2Jsb2NrL2Zsb2F0LzAyOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
CiB3ZWJraXQub3JnL2IvODU4NTYgWyBXaW4gTWFjIEFuZHJvaWQgXSBmYXN0L2Jsb2NrL2Zsb2F0
LzAyNi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3Jl
YXRlcy1hLXN0YWNraW5nLWNvbnRhaW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRl
cy1hLXN0YWNraW5nLWNvbnRhaW5lci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhMmY5Yjli
YWQ0YjRiY2Y3YzNiNDUzZjU4ZmJiNDViOGY2MmYxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9s
bGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGFpbmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDM4IEBACisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGls
ZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkK
KyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBv
c2l0aW9uIDI4LjAwIDIwLjAwKQorICAgICAgICAgIChib3VuZHMgMjAyLjAwIDIwMi4wMCkKKyAg
ICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAg
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDEuMDApCisg
ICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDIwMC4wMCkKKyAgICAgICAgICAgICAgKGNoaWxk
cmVuIDEKKyAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAg
KGJvdW5kcyAyMDAuMDAgMzAwLjAwKQorICAgICAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAx
KQorICAgICAgICAgICAgICAgICAgKGNoaWxkcmVuIDIKKyAgICAgICAgICAgICAgICAgICAgKEdy
YXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDAp
CisgICAgICAgICAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgICAg
ICAgICApCisgICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAg
ICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMTUwLjAwKQorICAgICAgICAgICAgICAgICAgICApCisg
ICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICApCisg
ICAgICAgICAgICApCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICAp
CispCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184804</attachid>
            <date>2013-01-25 13:42:43 -0800</date>
            <delta_ts>2013-01-28 12:40:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106142-20130125163934.patch</filename>
            <type>text/plain</type>
            <size>20000</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk3YzdjNDI4NTlkN2Qy
ZDlkYTFhYjU5MTc1ZjQ4NDRmNTRjMTQxMS4uZjZmMTRlOWQwYzQ1M2MwNTYzYjE0ZTBlZmRhZTZh
MWI2YThlZTc1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEzLTAxLTI1ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFByb21vdGUgY29tcG9z
aXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0YWNraW5nIGNvbnRhaW5lcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2gsIFJl
bmRlckxheWVycyB0aGF0IHVzZSBjb21wb3NpdGVkIHNjcm9sbGluZyBhcmUKKyAgICAgICAgdHJl
YXRlZCBhcyBzdGFja2luZyBjb250ZXh0cy4gU2luY2UgaXNTdGFja2luZ0NvbnRhaW5lciBub3cg
ZGVwZW5kcyBvbgorICAgICAgICB0aGUgdmFsdWUgb2YgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxp
bmcsIHNwZWNpYWwgY2FyZSBuZWVkZWQgdG8gYmUKKyAgICAgICAgdGFrZW4gdG8gZW5zdXJlIHRo
YXQgdGhlIHZhbHVlIG9mIGlzU3RhY2tpbmdDb250YWluZXIgaXMgbm90IHVzZWQgd2hlbgorICAg
ICAgICB1cGRhdGluZyBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZy4gSW4gcGFydGljdWxhciwg
dGhlIGNvZGUgZm9yCisgICAgICAgIHJlYnVpbGRpbmcgdGhlIGxheWVyIGxpc3RzIG5lZWRlZCB0
byBiZSBnZW5lcmFsaXplZCBzbyB0aGF0IHdlIGNvdWxkCisgICAgICAgIGJ1aWxkIHRoZSBsYXll
ciBsaXN0cyB1c2luZyB0aGUgdmFsdWUgb2YgaXNTdGFja2luZ0NvbnRleHQgcmF0aGVyIHRoYW4K
KyAgICAgICAgaXNTdGFja2luZ0NvbnRhaW5lciB3aGVuIGJ1aWxkaW5nIHRoZSBsYXllciBsaXN0
cyB1c2VkIHRvIGRldGVybWluZSBpZgorICAgICAgICB0aGUgZGVzY2VuZGFudHMgYXJlIGNvbnRp
Z3VvdXMgaW4gc3RhY2tpbmcgb3JkZXIuIEFsc28sIHVwZGF0aW5nCisgICAgICAgIG1fbmVlZHND
b21wb3NpdGVkU2Nyb2xsaW5nIGNhbiBub3cgYWZmZWN0IHN0YWNraW5nIGNvbnRhaW5lciBzdGF0
dXMKKyAgICAgICAgYW5kIGNhbiB0aGVyZWZvcmUgZGlydHkgbGF5ZXIgbGlzdHMuCisKKyAgICAg
ICAgVGVzdDogY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRl
cy1hLXN0YWNraW5nLWNvbnRhaW5lci5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZURlc2NlbmRh
bnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcik6CisgICAgICAgICAgTW9kaWZpZWQgdG8g
dXNlIGxheWVyIGxpc3RzIGJ1aWx0IGJhc2VkIG9uIGlzU3RhY2tpbmdDb250ZXh0IHJhdGhlcgor
ICAgICAgICAgIHRoYW4gaXNTdGFja2luZ0NvbnRhaW5lci4KKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAgIFRo
aXMgZnVuY3Rpb24gY2FuIG5vdyBhZmZlY3Qgc3RhY2tpbmcgY29udGFpbmVyIHN0YXR1cyBhbmQg
bGF5ZXIKKyAgICAgICAgICBsaXN0cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpy
ZWJ1aWxkWk9yZGVyTGlzdHMpOgorICAgICAgICAgIFJlZmFjdG9yZWQgdGhpcyBmdW5jdGlvbiB0
byBnZW5lcmFsaXplIGxheWVyIGxpc3QgYnVpbGRpbmcuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6Y29sbGVjdExheWVycyk6CisgICAgICAgICAgVGhpcyBmdW5jdGlvbiBjYW4gbm93
IHN0b3AgZWl0aGVyIGF0IHN0YWNraW5nIGNvbnRhaW5lcnMgb3IKKyAgICAgICAgICBjb250ZXh0
cy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVk
ZWQpOgorICAgICAgICAgIExheWVyIGxpc3RzIG1heSBuZWVkIHRvIGJlIHJlYnVpbGQgYSAybmQg
dGltZSBpZiB3ZSBvcHQgaW50bworICAgICAgICAgIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmlzU3RhY2tpbmdDb250YWluZXIpOgorICAgICAg
ICAgIFRoaXMgZnVuY3Rpb24gbm93IHJldHVybnMgdHJ1ZSBpZiB0aGUgbGF5ZXIgbmVlZHMgY29t
cG9zaXRlZAorICAgICAgICAgIHNjcm9sbGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2Vu
ZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuaDoKKyAgICAgICAgKFJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyOjppc1N0YWNraW5nQ29udGFpbmVyKToKKwogMjAxMy0wMS0yMyAgQWJoaXNoZWsg
QXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCmluZGV4IDE2ZTlkZTNhNTM4ZGM4YzFkNjFkYzZjZmEzZGEzZTdiZWNj
OTg2MmUuLjc0NGJiMTg3OTQzZDdlNjAwMDEyMWMwODhmYjNhYjc2NTAzNGZjMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNjA3LDI1ICs2MDcsMjkgQEAg
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2lu
Z09yZGVyKCkKICAgICBBU1NFUlQoIW1fbm9ybWFsRmxvd0xpc3REaXJ0eSk7CiAgICAgQVNTRVJU
KCFtX3pPcmRlckxpc3RzRGlydHkpOwogCisgICAgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+
ID4gcG9zWk9yZGVyTGlzdDsKKyAgICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiBuZWda
T3JkZXJMaXN0OworICAgIHJlYnVpbGRaT3JkZXJMaXN0cyhTdG9wQXRTdGFja2luZ0NvbnRleHRz
LCBwb3NaT3JkZXJMaXN0LCBuZWdaT3JkZXJMaXN0KTsKKwogICAgIC8vIENyZWF0ZSBhIHJldmVy
c2UgbG9va3VwLgogICAgIEhhc2hNYXA8Y29uc3QgUmVuZGVyTGF5ZXIqLCBpbnQ+IGxvb2t1cDsK
IAotICAgIGlmIChtX25lZ1pPcmRlckxpc3QpIHsKKyAgICBpZiAobmVnWk9yZGVyTGlzdCkgewog
ICAgICAgICBpbnQgc3RhY2tpbmdPcmRlckluZGV4ID0gLTE7Ci0gICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG1fbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOworICAgICAgICBzaXplX3QgbGlzdFNpemUg
PSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9
IG1fbmVnWk9yZGVyTGlzdC0+YXQobGlzdFNpemUgLSBpIC0gMSk7CisgICAgICAgICAgICBSZW5k
ZXJMYXllciogY3VycmVudExheWVyID0gbmVnWk9yZGVyTGlzdC0+YXQobGlzdFNpemUgLSBpIC0g
MSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRMYXllci0+aXNTdGFja2luZ0NvbnRleHQoKSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGxvb2t1cC5zZXQoY3VycmVu
dExheWVyLCBzdGFja2luZ09yZGVySW5kZXgtLSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAobV9wb3NaT3JkZXJMaXN0KSB7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG1fcG9zWk9y
ZGVyTGlzdC0+c2l6ZSgpOworICAgIGlmIChwb3NaT3JkZXJMaXN0KSB7CisgICAgICAgIHNpemVf
dCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKICAgICAgICAgaW50IHN0YWNraW5n
T3JkZXJJbmRleCA9IDE7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1cnJlbnRMYXllciA9IG1fcG9zWk9y
ZGVyTGlzdC0+YXQoaSk7CisgICAgICAgICAgICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0g
cG9zWk9yZGVyTGlzdC0+YXQoaSk7CiAgICAgICAgICAgICBpZiAoIWN1cnJlbnRMYXllci0+aXNT
dGFja2luZ0NvbnRleHQoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IGxvb2t1cC5zZXQoY3VycmVudExheWVyLCBzdGFja2luZ09yZGVySW5kZXgrKyk7CkBAIC0xOTE0
LDggKzE5MTgsMTYgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nKCkKICNlbmRpZgogICAgIH0KIAotICAgIGlmIChvbGROZWVkc0NvbXBvc2l0ZWRTY3Jv
bGxpbmcgIT0gbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcpCisgICAgaWYgKG9sZE5lZWRzQ29t
cG9zaXRlZFNjcm9sbGluZyAhPSBtX25lZWRzQ29tcG9zaXRlZFNjcm9sbGluZykgewogICAgICAg
ICB1cGRhdGVTZWxmUGFpbnRpbmdMYXllcigpOworICAgICAgICBpZiAoaXNTdGFja2luZ0NvbnRh
aW5lcigpKQorICAgICAgICAgICAgZGlydHlaT3JkZXJMaXN0cygpOworCisgICAgICAgIGRpcnR5
U3RhY2tpbmdDb250YWluZXJaT3JkZXJMaXN0cygpOworCisgICAgICAgIGNvbXBvc2l0b3IoKS0+
c2V0U2hvdWxkUmVldmFsdWF0ZUNvbXBvc2l0aW5nQWZ0ZXJMYXlvdXQoKTsKKyAgICAgICAgY29t
cG9zaXRvcigpLT5zZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCk7CisgICAgfQogfQog
I2VuZGlmCiAKQEAgLTUxNDQsNyArNTE1NiwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxk
Wk9yZGVyTGlzdHMoKQogewogICAgIEFTU0VSVChtX2xheWVyTGlzdE11dGF0aW9uQWxsb3dlZCk7
CiAgICAgQVNTRVJUKGlzRGlydHlTdGFja2luZ0NvbnRhaW5lcigpKTsKKyAgICByZWJ1aWxkWk9y
ZGVyTGlzdHMoU3RvcEF0U3RhY2tpbmdDb250YWluZXJzLCBtX3Bvc1pPcmRlckxpc3QsIG1fbmVn
Wk9yZGVyTGlzdCk7CisgICAgbV96T3JkZXJMaXN0c0RpcnR5ID0gZmFsc2U7Cit9CiAKK3ZvaWQg
UmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJMaXN0cyhDb2xsZWN0TGF5ZXJzQmVoYXZpb3IgYmVo
YXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiBwb3NaT3JkZXJMaXN0LCBPd25Q
dHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgbmVnWk9yZGVyTGlzdCkKK3sKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzID0gY29t
cG9zaXRvcigpLT5pbkNvbXBvc2l0aW5nTW9kZSgpOwogI2Vsc2UKQEAgLTUxNTIsMTQgKzUxNjks
MTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICNlbmRpZgogICAg
IGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBj
aGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgaWYgKCFtX3JlZmxlY3Rpb24gfHwgcmVmbGVj
dGlvbkxheWVyKCkgIT0gY2hpbGQpCi0gICAgICAgICAgICBjaGlsZC0+Y29sbGVjdExheWVycyhp
bmNsdWRlSGlkZGVuTGF5ZXJzLCBtX3Bvc1pPcmRlckxpc3QsIG1fbmVnWk9yZGVyTGlzdCk7Cisg
ICAgICAgICAgICBjaGlsZC0+Y29sbGVjdExheWVycyhpbmNsdWRlSGlkZGVuTGF5ZXJzLCBiZWhh
dmlvciwgcG9zWk9yZGVyTGlzdCwgbmVnWk9yZGVyTGlzdCk7CiAKICAgICAvLyBTb3J0IHRoZSB0
d28gbGlzdHMuCi0gICAgaWYgKG1fcG9zWk9yZGVyTGlzdCkKLSAgICAgICAgc3RkOjpzdGFibGVf
c29ydChtX3Bvc1pPcmRlckxpc3QtPmJlZ2luKCksIG1fcG9zWk9yZGVyTGlzdC0+ZW5kKCksIGNv
bXBhcmVaSW5kZXgpOworICAgIGlmIChwb3NaT3JkZXJMaXN0KQorICAgICAgICBzdGQ6OnN0YWJs
ZV9zb3J0KHBvc1pPcmRlckxpc3QtPmJlZ2luKCksIHBvc1pPcmRlckxpc3QtPmVuZCgpLCBjb21w
YXJlWkluZGV4KTsKIAotICAgIGlmIChtX25lZ1pPcmRlckxpc3QpCi0gICAgICAgIHN0ZDo6c3Rh
YmxlX3NvcnQobV9uZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBtX25lZ1pPcmRlckxpc3QtPmVuZCgp
LCBjb21wYXJlWkluZGV4KTsKKyAgICBpZiAobmVnWk9yZGVyTGlzdCkKKyAgICAgICAgc3RkOjpz
dGFibGVfc29ydChuZWdaT3JkZXJMaXN0LT5iZWdpbigpLCBuZWdaT3JkZXJMaXN0LT5lbmQoKSwg
Y29tcGFyZVpJbmRleCk7CiAKICNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCiAgICAgLy8gQXBw
ZW5kIGxheWVycyBmb3IgdG9wIGxheWVyIGVsZW1lbnRzIGFmdGVyIG5vcm1hbCBsYXllciBjb2xs
ZWN0aW9uLCB0byBlbnN1cmUgdGhleSBhcmUgb24gdG9wIHJlZ2FyZGxlc3Mgb2Ygei1pbmRleGVz
LgpAQCAtNTE3MCwxMyArNTE4NywxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVy
TGlzdHMoKQogICAgICAgICAgICAgRWxlbWVudCogY2hpbGRFbGVtZW50ID0gKGNoaWxkLT5ub2Rl
KCkgJiYgY2hpbGQtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKSA/IHRvRWxlbWVudChjaGlsZC0+
bm9kZSgpKSA6IDA7CiAgICAgICAgICAgICBpZiAoY2hpbGRFbGVtZW50ICYmIGNoaWxkRWxlbWVu
dC0+aXNJblRvcExheWVyKCkpIHsKICAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogbGF5ZXIg
PSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QoY2hpbGQpLT5sYXllcigpOwotICAgICAgICAgICAg
ICAgIG1fcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVyKTsKKyAgICAgICAgICAgICAgICBwb3Na
T3JkZXJMaXN0LT5hcHBlbmQobGF5ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQogI2VuZGlmCiAKLSAgICBtX3pPcmRlckxpc3RzRGlydHkgPSBmYWxzZTsKIH0KIAogdm9pZCBS
ZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQpAQCAtNTE5OCw3ICs1MjE0LDcgQEAg
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTm9ybWFsRmxvd0xpc3QoKQogICAgIG1fbm9ybWFsRmxv
d0xpc3REaXJ0eSA9IGZhbHNlOwogfQogCi12b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJz
KGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4m
IHBvc0J1ZmZlciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mIG5lZ0J1ZmZlcikKK3Zv
aWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBD
b2xsZWN0TGF5ZXJzQmVoYXZpb3IgYmVoYXZpb3IsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIq
PiA+JiBwb3NCdWZmZXIsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+JiBuZWdCdWZmZXIp
CiB7CiAjaWYgRU5BQkxFKERJQUxPR19FTEVNRU5UKQogICAgIGlmIChpc0luVG9wTGF5ZXIoKSkK
QEAgLTUyMDcsNyArNTIyMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXllcnMoYm9v
bCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBPd25QdHI8VmVjdG9yPFJlbmRlckxhCiAKICAgICB1cGRh
dGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKIAotICAgIGJvb2wgaXNTdGFja2luZyA9IGlz
U3RhY2tpbmdDb250YWluZXIoKTsKKyAgICBib29sIGlzU3RhY2tpbmcgPSBiZWhhdmlvciA9PSBT
dG9wQXRTdGFja2luZ0NvbnRleHRzID8gaXNTdGFja2luZ0NvbnRleHQoKSA6IGlzU3RhY2tpbmdD
b250YWluZXIoKTsKICAgICAvLyBPdmVyZmxvdyBsYXllcnMgYXJlIGp1c3QgcGFpbnRlZCBieSB0
aGVpciBlbmNsb3NpbmcgbGF5ZXJzLCBzbyB0aGV5IGRvbid0IGdldCBwdXQgaW4gem9yZGVyIGxp
c3RzLgogICAgIGJvb2wgaW5jbHVkZUhpZGRlbkxheWVyID0gaW5jbHVkZUhpZGRlbkxheWVycyB8
fCAobV9oYXNWaXNpYmxlQ29udGVudCB8fCAobV9oYXNWaXNpYmxlRGVzY2VuZGFudCAmJiBpc1N0
YWNraW5nKSk7CiAgICAgaWYgKGluY2x1ZGVIaWRkZW5MYXllciAmJiAhaXNOb3JtYWxGbG93T25s
eSgpICYmICFyZW5kZXJlcigpLT5pc1JlbmRlckZsb3dUaHJlYWQoKSkgewpAQCAtNTIyOCw3ICs1
MjQ0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRk
ZW5MYXllcnMsIE93blB0cjxWZWN0b3I8UmVuZGVyTGEKICAgICAgICAgZm9yIChSZW5kZXJMYXll
ciogY2hpbGQgPSBmaXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGlu
ZygpKSB7CiAgICAgICAgICAgICAvLyBJZ25vcmUgcmVmbGVjdGlvbnMuCiAgICAgICAgICAgICBp
ZiAoIW1fcmVmbGVjdGlvbiB8fCByZWZsZWN0aW9uTGF5ZXIoKSAhPSBjaGlsZCkKLSAgICAgICAg
ICAgICAgICBjaGlsZC0+Y29sbGVjdExheWVycyhpbmNsdWRlSGlkZGVuTGF5ZXJzLCBwb3NCdWZm
ZXIsIG5lZ0J1ZmZlcik7CisgICAgICAgICAgICAgICAgY2hpbGQtPmNvbGxlY3RMYXllcnMoaW5j
bHVkZUhpZGRlbkxheWVycywgYmVoYXZpb3IsIHBvc0J1ZmZlciwgbmVnQnVmZmVyKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTUyMzYsNyArNTI1Miw2IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNv
bGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBPd25QdHI8VmVjdG9yPFJlbmRl
ckxhCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogewogICAg
IGJvb2wgc2hvdWxkVXBkYXRlRGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVy
ID0gaXNTdGFja2luZ0NvbnRleHQoKSAmJiAobV96T3JkZXJMaXN0c0RpcnR5IHx8IG1fbm9ybWFs
Rmxvd0xpc3REaXJ0eSk7Ci0KICAgICB1cGRhdGVaT3JkZXJMaXN0cygpOwogICAgIHVwZGF0ZU5v
cm1hbEZsb3dMaXN0KCk7CiAKQEAgLTUyNDUsOCArNTI2MCwxMyBAQCB2b2lkIFJlbmRlckxheWVy
Ojp1cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKQogICAgICAgICByZWZsZWN0aW9uTGF5ZXItPnVw
ZGF0ZU5vcm1hbEZsb3dMaXN0KCk7CiAgICAgfQogCi0gICAgaWYgKHNob3VsZFVwZGF0ZURlc2Nl
bmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcikKKyAgICBpZiAoc2hvdWxkVXBkYXRl
RGVzY2VuZGFudHNBcmVDb250aWd1b3VzSW5TdGFja2luZ09yZGVyKSB7CiAgICAgICAgIHVwZGF0
ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRlcigpOworICAgICAgICAvLyBU
aGUgYWJvdmUgZnVuY3Rpb24gY2FuIGNhdXNlIHVzIHRvIHVwZGF0ZSBtX25lZWRzQ29tcG9zaXRl
ZFNjcm9sbGluZworICAgICAgICAvLyBhbmQgZGlydHkgb3VyIGxheWVyIGxpc3RzLiBSZWZyZXNo
IHRoZW0gaWYgbmVjZXNzYXJ5LgorICAgICAgICB1cGRhdGVaT3JkZXJMaXN0cygpOworICAgICAg
ICB1cGRhdGVOb3JtYWxGbG93TGlzdCgpOworICAgIH0KIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlQ29tcG9zaXRpbmdBbmRMYXllckxpc3RzSWZOZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuaAppbmRleCAzZDZlYWExZTJlNTk3OWNiM2M0ZmY3MjEzOGM1NzQ4
MzJlNzE3ODFhLi5jOTczNTBkNmM2NzY5YWE1MmM4ZmVlZTRhMTQ1Yjk0NGU1ZTllZmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaApAQCAtNDMxLDggKzQzMSwxMCBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1N0YWNraW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIGlzU3Rh
Y2tpbmdDb250ZXh0KHJlbmRlcmVyKCktPnN0eWxlKCkpOyB9CiAKICAgICAvLyBBIHN0YWNraW5n
IGNvbnRhaW5lciBjYW4gaGF2ZSB6LW9yZGVyIGxpc3RzLiBBbGwgc3RhY2tpbmcgY29udGV4dHMg
YXJlCi0gICAgLy8gc3RhY2tpbmcgY29udGFpbmVycywgYnV0IHRoZSBjb252ZXJzZSBpcyBub3Qg
dHJ1ZS4KLSAgICBib29sIGlzU3RhY2tpbmdDb250YWluZXIoKSBjb25zdCB7IHJldHVybiBpc1N0
YWNraW5nQ29udGV4dCgpOyB9CisgICAgLy8gc3RhY2tpbmcgY29udGFpbmVycywgYnV0IHRoZSBj
b252ZXJzZSBpcyBub3QgdHJ1ZS4gTGF5ZXJzIHRoYXQgdXNlCisgICAgLy8gY29tcG9zaXRlZCBz
Y3JvbGxpbmcgYXJlIHN0YWNraW5nIGNvbnRhaW5lcnMsIGJ1dCB0aGV5IG1heSBub3QKKyAgICAv
LyBuZWNlc3NhcmlseSBiZSBzdGFja2luZyBjb250ZXh0cy4KKyAgICBib29sIGlzU3RhY2tpbmdD
b250YWluZXIoKSBjb25zdCB7IHJldHVybiBpc1N0YWNraW5nQ29udGV4dCgpIHx8IG5lZWRzQ29t
cG9zaXRlZFNjcm9sbGluZygpOyB9CiAKICAgICAvLyBHZXRzIHRoZSBlbmNsb3Npbmcgc3RhY2tp
bmcgY29udGFpbmVyIGZvciB0aGlzIGxheWVyLgogICAgIFJlbmRlckxheWVyKiBzdGFja2luZ0Nv
bnRhaW5lcigpIGNvbnN0OwpAQCAtNzU4LDggKzc2MCwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKKyAgICBlbnVtIENvbGxlY3RMYXllcnNCZWhhdmlvciB7IFN0b3BBdFN0YWNraW5n
Q29udGV4dHMsIFN0b3BBdFN0YWNraW5nQ29udGFpbmVycyB9OworCiAgICAgdm9pZCB1cGRhdGVa
T3JkZXJMaXN0cygpOwogICAgIHZvaWQgcmVidWlsZFpPcmRlckxpc3RzKCk7CisgICAgdm9pZCBy
ZWJ1aWxkWk9yZGVyTGlzdHMoQ29sbGVjdExheWVyc0JlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJl
bmRlckxheWVyKj4gPiYsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+Jik7CiAgICAgdm9p
ZCBjbGVhclpPcmRlckxpc3RzKCk7CiAKICAgICB2b2lkIHVwZGF0ZU5vcm1hbEZsb3dMaXN0KCk7
CkBAIC04MzAsNyArODM1LDcgQEAgcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IHJlbmRlckJveFgo
KSBjb25zdCB7IHJldHVybiByZW5kZXJCb3hMb2NhdGlvbigpLngoKTsgfQogICAgIExheW91dFVu
aXQgcmVuZGVyQm94WSgpIGNvbnN0IHsgcmV0dXJuIHJlbmRlckJveExvY2F0aW9uKCkueSgpOyB9
CiAKLSAgICB2b2lkIGNvbGxlY3RMYXllcnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBPd25Q
dHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+
Jik7CisgICAgdm9pZCBjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgQ29s
bGVjdExheWVyc0JlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYsIE93blB0
cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+Jik7CiAKICAgICB2b2lkIHVwZGF0ZUNvbXBvc2l0aW5n
QW5kTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZTFiNWMxY2M2MTE3NTJkMzhmZTdm
NTljODY5NmRmNTgwNGMxZjY2Li5hNDkyZjJlMTE5ODM5NWI0ZTI0YjdhODkwYTk4ZjIyZTkzNmI3
ZjJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTMtMDEtMjUgIElhbiBWb2xsaWNrICA8dm9s
bGlja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUHJvbW90ZSBjb21wb3NpdGVkLXNjcm9sbGlu
ZyBsYXllcnMgdG8gc3RhY2tpbmcgY29udGFpbmVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjE0MgorCisgICAgICAgIFdpdGggdGhpcyBwYXRj
aCwgUmVuZGVyTGF5ZXJzIHRoYXQgdXNlIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIGFyZQorICAgICAg
ICB0cmVhdGVkIGFzIHN0YWNraW5nIGNvbnRleHRzLiBTaW5jZSBpc1N0YWNraW5nQ29udGFpbmVy
IG5vdyBkZXBlbmRzIG9uCisgICAgICAgIHRoZSB2YWx1ZSBvZiBtX25lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZywgc3BlY2lhbCBjYXJlIG5lZWRlZCB0byBiZQorICAgICAgICB0YWtlbiB0byBlbnN1
cmUgdGhhdCB0aGUgdmFsdWUgb2YgaXNTdGFja2luZ0NvbnRhaW5lciBpcyBub3QgdXNlZCB3aGVu
CisgICAgICAgIHVwZGF0aW5nIG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nLiBJbiBwYXJ0aWN1
bGFyLCB0aGUgY29kZSBmb3IKKyAgICAgICAgcmVidWlsZGluZyB0aGUgbGF5ZXIgbGlzdHMgbmVl
ZGVkIHRvIGJlIGdlbmVyYWxpemVkIHNvIHRoYXQgd2UgY291bGQKKyAgICAgICAgYnVpbGQgdGhl
IGxheWVyIGxpc3RzIHVzaW5nIHRoZSB2YWx1ZSBvZiBpc1N0YWNraW5nQ29udGV4dCByYXRoZXIg
dGhhbgorICAgICAgICBpc1N0YWNraW5nQ29udGFpbmVyIHdoZW4gYnVpbGRpbmcgdGhlIGxheWVy
IGxpc3RzIHVzZWQgdG8gZGV0ZXJtaW5lIGlmCisgICAgICAgIHRoZSBkZXNjZW5kYW50cyBhcmUg
Y29udGlndW91cyBpbiBzdGFja2luZyBvcmRlci4gQWxzbywgdXBkYXRpbmcKKyAgICAgICAgbV9u
ZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcgY2FuIG5vdyBhZmZlY3Qgc3RhY2tpbmcgY29udGFpbmVy
IHN0YXR1cworICAgICAgICBhbmQgY2FuIHRoZXJlZm9yZSBkaXJ0eSBsYXllciBsaXN0cy4KKwor
ICAgICAgICAqIGNvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0
ZXMtYS1zdGFja2luZy1jb250YWluZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBj
b21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tp
bmctY29udGFpbmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL292ZXJm
bG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250YWluZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMy0wMS0yMyAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFl
bHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRlbXBsYXRlIGVsZW1lbnQgc2hvdWxkIHBhcnNl
IGluIFhIVE1MIGp1c3QgYXMgaXQgZG9lcyBpbiBIVE1MCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3Rh
Y2tpbmctY29udGFpbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL292
ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250YWluZXIt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5ODM4ZTg0YjE4MGU5MTA3MGY3YzI2ZDAwNmNhNTU3
ZmFiMzI1YTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVy
Zmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGFpbmVyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDU0IEBACisoR3JhcGhpY3NMYXllcgorICAoYm91bmRzIDgw
MC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChi
b3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDI4LjAwIDIwLjAwKQorICAgICAgICAgIChib3Vu
ZHMgMjAyLjAwIDIwMi4wMCkKKyAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAg
KGNoaWxkcmVuIDQKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChw
b3NpdGlvbiAxLjAwIDEuMDApCisgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDIwMC4wMCkK
KyAgICAgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMzAwLjAwKQorICAgICAgICAgICAg
ICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgICAgICAgKGNoaWxkcmVuIDIKKyAg
ICAgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgICAgICAgICAo
Ym91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAgICAgICAgICAgICAgICAgKGRyYXdzQ29udGVu
dCAxKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDAuMDAgMTUwLjAwKQorICAg
ICAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgKQorICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAg
ICAgKHBvc2l0aW9uIDEuMDAgMTg2LjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDE4NS4wMCAx
NS4wMCkKKyAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgKHBvc2l0aW9uIDE4Ni4wMCAx
LjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDE1LjAwIDE4NS4wMCkKKyAgICAgICAgICAgICAg
KGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKKyAgICAgICAgICAgICAgKHBvc2l0aW9uIDE4Ni4wMCAxODYuMDApCisgICAgICAgICAgICAg
IChib3VuZHMgMTUuMDAgMTUuMDApCisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICApCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkK
KykKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21w
b3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGFpbmVyLmh0bWwgYi9MYXlv
dXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVz
LWEtc3RhY2tpbmctY29udGFpbmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjdmOGViOWZlY2Y1ODM2MGQw
MDc5NDg3ZDQ1ZTIxYjMyMDY2ZDIzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Nv
bXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2lu
Zy1jb250YWluZXIuaHRtbApAQCAtMCwwICsxLDc2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMg
Ii0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cu
dzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgor
ICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCIvPgorICA8dGl0bGU+Q29tcG9zaXRlZCBzY3JvbGxpbmcgY3JlYXRlcyBhIHN0
YWNraW5nIGNvbnRleHQuPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
c2NyZWVuIj4KKyAgICAuY29udGFpbmVyIHsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhl
aWdodDogMjAwcHg7CisgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgICAgbWFyZ2luOiAyMHB4
OworICAgICAgYm9yZGVyOiAxcHggc29saWQgYmxhY2s7CisgICAgfQorCisgICAgLmNvbXBvc2l0
ZWQgeworICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAxNTBweDsKKyAgICAgIC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApOworICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Z3JlZW47CisgICAgfQorCisgICAgLm5vdC1jb21wb3NpdGVkIHsKKyAgICAgIHdpZHRoOiAyMDBw
eDsKKyAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwor
ICAgIH0KKworICAgIC5pbi1mbG93LXBvc2l0aW9uZWQgeworICAgICAgcG9zaXRpb246IHJlbGF0
aXZlOworICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgfQorCisgICAgLmZpeGVkIHsKKyAgICAg
IHotaW5kZXg6IC0xOworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgd2lkdGg6IDIw
MHB4OworICAgICAgaGVpZ2h0OiAzMDBweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsK
KyAgICB9CisgIDwvc3R5bGU+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFy
c2V0PSJ1dGYtOCI+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgdGVzdFJ1bm5l
ci5kdW1wQXNUZXh0KCk7CisKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Zvck92ZXJmbG93
U2Nyb2xsRW5hYmxlZCh0cnVlKTsKKworICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAgeworICAg
ICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisKKyAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxz
KSB7CisgICAgICAgIHZhciBsYXllclRyZWUgPSB3aW5kb3cuaW50ZXJuYWxzLmxheWVyVHJlZUFz
VGV4dChkb2N1bWVudCk7CisgICAgICAgIHZhciBwcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnY29uc29sZScpOworICAgICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KGxheWVyVHJlZSArICdcbicpOworICAgICAgICBwcmUuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAg
ICB9CisgICAgfQorCisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3Qs
IGZhbHNlKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0iY29u
dGFpbmVyIj4KKyAgICA8ZGl2IGNsYXNzPSJpbi1mbG93LXBvc2l0aW9uZWQiPgorICAgICAgPGRp
diBjbGFzcz0iZml4ZWQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxkaXYgY2xhc3M9ImNvbXBv
c2l0ZWQiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im5vdC1jb21wb3NpdGVkIj48L2Rpdj4KKyAg
PC9kaXY+CisgIDxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2
YmI0MWJhMDhiM2NmMGI1OGI4YWQxYjBjMjE4YTE0YWE2ZDA4ZGYyLi5mMmQ1NjQwMjdiY2QxOTM4
NzYxMzMxNzQ3ZTY1NDgzNzYwOTkyZTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTM2MzUsNiArMzYzNSw5IEBAIHdlYmtpdC5vcmcv
Yi85Mjk2OCBodHRwL3Rlc3RzL2FwcGNhY2hlL2Fib3J0LWNhY2hlLW9ucHJvZ3Jlc3MuaHRtbAog
IyBTY3JvbGxpbmcgY29udGVudCBkcmF3cyBiZW5lYXRoIHNjcm9sbGJhcnMgaW4gY29tcG9zaXRl
ZCBzY3JvbGxpbmcgbW9kZS4KIHdlYmtpdC5vcmcvYi8xMDMxNTYgcGxhdGZvcm0vY2hyb21pdW0v
dmlydHVhbC9ncHUvY29tcG9zaXRlZHNjcm9sbGluZy9zY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxi
YXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KIAorIyBS
ZXF1aXJlcyBhbiB1cGRhdGVkIGJhc2VsaW5lIGFmdGVyIDEwNjE0Mi4KK3dlYmtpdC5vcmcvYi8x
MDY4MjAgcGxhdGZvcm0vY2hyb21pdW0vdmlydHVhbC9ncHUvY29tcG9zaXRlZHNjcm9sbGluZy9v
dmVyZmxvdy9vdmVyZmxvdy1zY3JvbGwuaHRtbCBbIEZhaWx1cmUgXQorCiAjIEZhaWxzIGR1ZSB0
byBCdWcgODU4NTYuCiB3ZWJraXQub3JnL2IvODU4NTYgWyBXaW4gTWFjIEFuZHJvaWQgXSBmYXN0
L2Jsb2NrL2Zsb2F0LzAyOC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2Iv
ODU4NTYgWyBXaW4gTWFjIEFuZHJvaWQgXSBmYXN0L2Jsb2NrL2Zsb2F0LzAyNi5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29t
cG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5n
LWNvbnRhaW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9z
aXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNv
bnRhaW5lci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRhMmY5YjliYWQ0YjRiY2Y3YzNiNDUz
ZjU4ZmJiNDViOGY2MmYxNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9jb21wb3NpdGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEt
c3RhY2tpbmctY29udGFpbmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM4IEBACisoR3JhcGhp
Y3NMYXllcgorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisgICAgKEdy
YXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChjaGlsZHJl
biAxCisgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDI4LjAwIDIw
LjAwKQorICAgICAgICAgIChib3VuZHMgMjAyLjAwIDIwMi4wMCkKKyAgICAgICAgICAoZHJhd3ND
b250ZW50IDEpCisgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgICAgIChHcmFwaGljc0xh
eWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxLjAwIDEuMDApCisgICAgICAgICAgICAgIChi
b3VuZHMgMjAwLjAwIDIwMC4wMCkKKyAgICAgICAgICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAg
ICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAgKGJvdW5kcyAyMDAuMDAg
MzAwLjAwKQorICAgICAgICAgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAg
ICAgICAgKGNoaWxkcmVuIDIKKyAgICAgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgICAgICAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAgICAgICAg
ICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg
ICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgICAgICAgICAgKGJvdW5k
cyAyMDAuMDAgMTUwLjAwKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAg
ICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisg
ICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185037</attachid>
            <date>2013-01-28 12:40:30 -0800</date>
            <delta_ts>2013-01-28 13:19:46 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106142-20130128153717.patch</filename>
            <type>text/plain</type>
            <size>19596</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQwNDc2YTNjY2NhM2Y3
YTM4ZmYxZjdiMzBlYWNiNjNiYzg4N2FkOC4uOTM3YTA5YWU2YjQ4YmRmMTczNDY3MzQ5MmMyNjE2
ODM5YmQ1NzE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEzLTAxLTI4ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFByb21vdGUgY29tcG9z
aXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0YWNraW5nIGNvbnRhaW5lcnMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDIKKworICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCBSZW5k
ZXJMYXllcnMgdGhhdCB1c2UgY29tcG9zaXRlZCBzY3JvbGxpbmcgYXJlCisgICAgICAgIHRyZWF0
ZWQgYXMgc3RhY2tpbmcgY29udGV4dHMuIFNpbmNlIGlzU3RhY2tpbmdDb250YWluZXIgbm93IGRl
cGVuZHMgb24KKyAgICAgICAgdGhlIHZhbHVlIG9mIG1fbmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5n
LCBzcGVjaWFsIGNhcmUgbmVlZGVkIHRvIGJlCisgICAgICAgIHRha2VuIHRvIGVuc3VyZSB0aGF0
IHRoZSB2YWx1ZSBvZiBpc1N0YWNraW5nQ29udGFpbmVyIGlzIG5vdCB1c2VkIHdoZW4KKyAgICAg
ICAgdXBkYXRpbmcgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcuIEluIHBhcnRpY3VsYXIsIHRo
ZSBjb2RlIGZvcgorICAgICAgICByZWJ1aWxkaW5nIHRoZSBsYXllciBsaXN0cyBuZWVkZWQgdG8g
YmUgZ2VuZXJhbGl6ZWQgc28gdGhhdCB3ZSBjb3VsZAorICAgICAgICBidWlsZCB0aGUgbGF5ZXIg
bGlzdHMgdXNpbmcgdGhlIHZhbHVlIG9mIGlzU3RhY2tpbmdDb250ZXh0IHJhdGhlciB0aGFuCisg
ICAgICAgIGlzU3RhY2tpbmdDb250YWluZXIgd2hlbiBidWlsZGluZyB0aGUgbGF5ZXIgbGlzdHMg
dXNlZCB0byBkZXRlcm1pbmUgaWYKKyAgICAgICAgdGhlIGRlc2NlbmRhbnRzIGFyZSBjb250aWd1
b3VzIGluIHN0YWNraW5nIG9yZGVyLiBBbHNvLCB1cGRhdGluZworICAgICAgICBtX25lZWRzQ29t
cG9zaXRlZFNjcm9sbGluZyBjYW4gbm93IGFmZmVjdCBzdGFja2luZyBjb250YWluZXIgc3RhdHVz
CisgICAgICAgIGFuZCBjYW4gdGhlcmVmb3JlIGRpcnR5IGxheWVyIGxpc3RzLgorCisgICAgICAg
IFRlc3Q6IGNvbXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMt
YS1zdGFja2luZy1jb250YWluZXIuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVEZXNjZW5kYW50
c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIpOgorICAgICAgICAgIE1vZGlmaWVkIHRvIHVz
ZSBsYXllciBsaXN0cyBidWlsdCBiYXNlZCBvbiBpc1N0YWNraW5nQ29udGV4dCByYXRoZXIKKyAg
ICAgICAgICB0aGFuIGlzU3RhY2tpbmdDb250YWluZXIuCisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6dXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKToKKyAgICAgICAgICBUaGlz
IGZ1bmN0aW9uIGNhbiBub3cgYWZmZWN0IHN0YWNraW5nIGNvbnRhaW5lciBzdGF0dXMgYW5kIGxh
eWVyCisgICAgICAgICAgbGlzdHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cmVi
dWlsZFpPcmRlckxpc3RzKToKKyAgICAgICAgICBSZWZhY3RvcmVkIHRvIGdlbmVyYWxpemUgbGF5
ZXIgbGlzdCBidWlsZGluZy4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb2xsZWN0
TGF5ZXJzKToKKyAgICAgICAgICBUaGlzIGZ1bmN0aW9uIGNhbiBub3cgc3RvcCBhdCBlaXRoZXIg
c3RhY2tpbmcgY29udGFpbmVycyBvcgorICAgICAgICAgIGNvbnRleHRzLgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCk6CisgICAgICAgICAg
TGF5ZXIgbGlzdHMgbWF5IG5lZWQgdG8gYmUgYnVpbHQgYSAybmQgdGltZSBpZiB3ZSBvcHQgaW50
bworICAgICAgICAgIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nLgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5oOgorICAgICAgICAoUmVuZGVyTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTGF5ZXI6OmlzU3RhY2tpbmdDb250YWluZXIpOgorICAgICAgICAgIFJldHVybnMgdHJ1
ZSBpZiB3ZSB1c2UgY29tcG9zaXRlZCBzY3JvbGxpbmcuCisKIDIwMTMtMDEtMjQgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IGEgdHlwbyBhZnRlciByMTM5
ODM4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggMTZlOWRl
M2E1MzhkYzhjMWQ2MWRjNmNmYTNkYTNlN2JlY2M5ODYyZS4uZjZlNWY1NjdkMDBiMDBkMjE5Yjk0
NzU5NTRhNGZmN2I1MGY5ZGM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwCkBAIC02MDcsMjUgKzYwNywyOSBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVEZXNj
ZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIoKQogICAgIEFTU0VSVCghbV9ub3Jt
YWxGbG93TGlzdERpcnR5KTsKICAgICBBU1NFUlQoIW1fek9yZGVyTGlzdHNEaXJ0eSk7CiAKKyAg
ICBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiBwb3NaT3JkZXJMaXN0OworICAgIE93blB0
cjxWZWN0b3I8UmVuZGVyTGF5ZXIqPiA+IG5lZ1pPcmRlckxpc3Q7CisgICAgcmVidWlsZFpPcmRl
ckxpc3RzKFN0b3BBdFN0YWNraW5nQ29udGV4dHMsIHBvc1pPcmRlckxpc3QsIG5lZ1pPcmRlckxp
c3QpOworCiAgICAgLy8gQ3JlYXRlIGEgcmV2ZXJzZSBsb29rdXAuCiAgICAgSGFzaE1hcDxjb25z
dCBSZW5kZXJMYXllciosIGludD4gbG9va3VwOwogCi0gICAgaWYgKG1fbmVnWk9yZGVyTGlzdCkg
eworICAgIGlmIChuZWdaT3JkZXJMaXN0KSB7CiAgICAgICAgIGludCBzdGFja2luZ09yZGVySW5k
ZXggPSAtMTsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbV9uZWdaT3JkZXJMaXN0LT5zaXpl
KCk7CisgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAg
ICBSZW5kZXJMYXllciogY3VycmVudExheWVyID0gbV9uZWdaT3JkZXJMaXN0LT5hdChsaXN0U2l6
ZSAtIGkgLSAxKTsKKyAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJyZW50TGF5ZXIgPSBuZWda
T3JkZXJMaXN0LT5hdChsaXN0U2l6ZSAtIGkgLSAxKTsKICAgICAgICAgICAgIGlmICghY3VycmVu
dExheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgbG9va3VwLnNldChjdXJyZW50TGF5ZXIsIHN0YWNraW5nT3JkZXJJbmRleC0t
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX3Bvc1pPcmRlckxpc3QpIHsKLSAgICAg
ICAgc2l6ZV90IGxpc3RTaXplID0gbV9wb3NaT3JkZXJMaXN0LT5zaXplKCk7CisgICAgaWYgKHBv
c1pPcmRlckxpc3QpIHsKKyAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9yZGVyTGlzdC0+
c2l6ZSgpOwogICAgICAgICBpbnQgc3RhY2tpbmdPcmRlckluZGV4ID0gMTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZW5kZXJM
YXllciogY3VycmVudExheWVyID0gbV9wb3NaT3JkZXJMaXN0LT5hdChpKTsKKyAgICAgICAgICAg
IFJlbmRlckxheWVyKiBjdXJyZW50TGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5hdChpKTsKICAgICAg
ICAgICAgIGlmICghY3VycmVudExheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKQogICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbG9va3VwLnNldChjdXJyZW50TGF5ZXIsIHN0
YWNraW5nT3JkZXJJbmRleCsrKTsKQEAgLTE5MTQsOCArMTkxOCwxOCBAQCB2b2lkIFJlbmRlckxh
eWVyOjp1cGRhdGVOZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKQogI2VuZGlmCiAgICAgfQogCi0g
ICAgaWYgKG9sZE5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZyAhPSBtX25lZWRzQ29tcG9zaXRlZFNj
cm9sbGluZykKKyAgICBpZiAob2xkTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nICE9IG1fbmVlZHND
b21wb3NpdGVkU2Nyb2xsaW5nKSB7CiAgICAgICAgIHVwZGF0ZVNlbGZQYWludGluZ0xheWVyKCk7
CisgICAgICAgIGlmIChpc1N0YWNraW5nQ29udGFpbmVyKCkpCisgICAgICAgICAgICBkaXJ0eVpP
cmRlckxpc3RzKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNsZWFyWk9yZGVyTGlzdHMo
KTsKKworICAgICAgICBkaXJ0eVN0YWNraW5nQ29udGFpbmVyWk9yZGVyTGlzdHMoKTsKKworICAg
ICAgICBjb21wb3NpdG9yKCktPnNldFNob3VsZFJlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5
b3V0KCk7CisgICAgICAgIGNvbXBvc2l0b3IoKS0+c2V0Q29tcG9zaXRpbmdMYXllcnNOZWVkUmVi
dWlsZCgpOworICAgIH0KIH0KICNlbmRpZgogCkBAIC01MTQ0LDcgKzUxNTgsMTIgQEAgdm9pZCBS
ZW5kZXJMYXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKIHsKICAgICBBU1NFUlQobV9sYXllckxp
c3RNdXRhdGlvbkFsbG93ZWQpOwogICAgIEFTU0VSVChpc0RpcnR5U3RhY2tpbmdDb250YWluZXIo
KSk7CisgICAgcmVidWlsZFpPcmRlckxpc3RzKFN0b3BBdFN0YWNraW5nQ29udGFpbmVycywgbV9w
b3NaT3JkZXJMaXN0LCBtX25lZ1pPcmRlckxpc3QpOworICAgIG1fek9yZGVyTGlzdHNEaXJ0eSA9
IGZhbHNlOworfQogCit2b2lkIFJlbmRlckxheWVyOjpyZWJ1aWxkWk9yZGVyTGlzdHMoQ29sbGVj
dExheWVyc0JlaGF2aW9yIGJlaGF2aW9yLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYg
cG9zWk9yZGVyTGlzdCwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mIG5lZ1pPcmRlckxp
c3QpCit7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGJvb2wgaW5jbHVk
ZUhpZGRlbkxheWVycyA9IGNvbXBvc2l0b3IoKS0+aW5Db21wb3NpdGluZ01vZGUoKTsKICNlbHNl
CkBAIC01MTUyLDE0ICs1MTcxLDE0IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlYnVpbGRaT3JkZXJM
aXN0cygpCiAjZW5kaWYKICAgICBmb3IgKFJlbmRlckxheWVyKiBjaGlsZCA9IGZpcnN0Q2hpbGQo
KTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIGlmICghbV9y
ZWZsZWN0aW9uIHx8IHJlZmxlY3Rpb25MYXllcigpICE9IGNoaWxkKQotICAgICAgICAgICAgY2hp
bGQtPmNvbGxlY3RMYXllcnMoaW5jbHVkZUhpZGRlbkxheWVycywgbV9wb3NaT3JkZXJMaXN0LCBt
X25lZ1pPcmRlckxpc3QpOworICAgICAgICAgICAgY2hpbGQtPmNvbGxlY3RMYXllcnMoaW5jbHVk
ZUhpZGRlbkxheWVycywgYmVoYXZpb3IsIHBvc1pPcmRlckxpc3QsIG5lZ1pPcmRlckxpc3QpOwog
CiAgICAgLy8gU29ydCB0aGUgdHdvIGxpc3RzLgotICAgIGlmIChtX3Bvc1pPcmRlckxpc3QpCi0g
ICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobV9wb3NaT3JkZXJMaXN0LT5iZWdpbigpLCBtX3Bvc1pP
cmRlckxpc3QtPmVuZCgpLCBjb21wYXJlWkluZGV4KTsKKyAgICBpZiAocG9zWk9yZGVyTGlzdCkK
KyAgICAgICAgc3RkOjpzdGFibGVfc29ydChwb3NaT3JkZXJMaXN0LT5iZWdpbigpLCBwb3NaT3Jk
ZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CiAKLSAgICBpZiAobV9uZWdaT3JkZXJMaXN0
KQotICAgICAgICBzdGQ6OnN0YWJsZV9zb3J0KG1fbmVnWk9yZGVyTGlzdC0+YmVnaW4oKSwgbV9u
ZWdaT3JkZXJMaXN0LT5lbmQoKSwgY29tcGFyZVpJbmRleCk7CisgICAgaWYgKG5lZ1pPcmRlckxp
c3QpCisgICAgICAgIHN0ZDo6c3RhYmxlX3NvcnQobmVnWk9yZGVyTGlzdC0+YmVnaW4oKSwgbmVn
Wk9yZGVyTGlzdC0+ZW5kKCksIGNvbXBhcmVaSW5kZXgpOwogCiAjaWYgRU5BQkxFKERJQUxPR19F
TEVNRU5UKQogICAgIC8vIEFwcGVuZCBsYXllcnMgZm9yIHRvcCBsYXllciBlbGVtZW50cyBhZnRl
ciBub3JtYWwgbGF5ZXIgY29sbGVjdGlvbiwgdG8gZW5zdXJlIHRoZXkgYXJlIG9uIHRvcCByZWdh
cmRsZXNzIG9mIHotaW5kZXhlcy4KQEAgLTUxNzAsMTMgKzUxODksMTIgQEAgdm9pZCBSZW5kZXJM
YXllcjo6cmVidWlsZFpPcmRlckxpc3RzKCkKICAgICAgICAgICAgIEVsZW1lbnQqIGNoaWxkRWxl
bWVudCA9IChjaGlsZC0+bm9kZSgpICYmIGNoaWxkLT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkg
PyB0b0VsZW1lbnQoY2hpbGQtPm5vZGUoKSkgOiAwOwogICAgICAgICAgICAgaWYgKGNoaWxkRWxl
bWVudCAmJiBjaGlsZEVsZW1lbnQtPmlzSW5Ub3BMYXllcigpKSB7CiAgICAgICAgICAgICAgICAg
UmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KGNoaWxkKS0+bGF5
ZXIoKTsKLSAgICAgICAgICAgICAgICBtX3Bvc1pPcmRlckxpc3QtPmFwcGVuZChsYXllcik7Cisg
ICAgICAgICAgICAgICAgcG9zWk9yZGVyTGlzdC0+YXBwZW5kKGxheWVyKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KICNlbmRpZgogCi0gICAgbV96T3JkZXJMaXN0c0RpcnR5ID0g
ZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0KCkKQEAg
LTUxOTgsNyArNTIxNiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZU5vcm1hbEZsb3dMaXN0
KCkKICAgICBtX25vcm1hbEZsb3dMaXN0RGlydHkgPSBmYWxzZTsKIH0KIAotdm9pZCBSZW5kZXJM
YXllcjo6Y29sbGVjdExheWVycyhib29sIGluY2x1ZGVIaWRkZW5MYXllcnMsIE93blB0cjxWZWN0
b3I8UmVuZGVyTGF5ZXIqPiA+JiBwb3NCdWZmZXIsIE93blB0cjxWZWN0b3I8UmVuZGVyTGF5ZXIq
PiA+JiBuZWdCdWZmZXIpCit2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5j
bHVkZUhpZGRlbkxheWVycywgQ29sbGVjdExheWVyc0JlaGF2aW9yIGJlaGF2aW9yLCBPd25QdHI8
VmVjdG9yPFJlbmRlckxheWVyKj4gPiYgcG9zQnVmZmVyLCBPd25QdHI8VmVjdG9yPFJlbmRlckxh
eWVyKj4gPiYgbmVnQnVmZmVyKQogewogI2lmIEVOQUJMRShESUFMT0dfRUxFTUVOVCkKICAgICBp
ZiAoaXNJblRvcExheWVyKCkpCkBAIC01MjA3LDcgKzUyMjUsNyBAQCB2b2lkIFJlbmRlckxheWVy
Ojpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywgT3duUHRyPFZlY3RvcjxS
ZW5kZXJMYQogCiAgICAgdXBkYXRlRGVzY2VuZGFudERlcGVuZGVudEZsYWdzKCk7CiAKLSAgICBi
b29sIGlzU3RhY2tpbmcgPSBpc1N0YWNraW5nQ29udGFpbmVyKCk7CisgICAgYm9vbCBpc1N0YWNr
aW5nID0gYmVoYXZpb3IgPT0gU3RvcEF0U3RhY2tpbmdDb250ZXh0cyA/IGlzU3RhY2tpbmdDb250
ZXh0KCkgOiBpc1N0YWNraW5nQ29udGFpbmVyKCk7CiAgICAgLy8gT3ZlcmZsb3cgbGF5ZXJzIGFy
ZSBqdXN0IHBhaW50ZWQgYnkgdGhlaXIgZW5jbG9zaW5nIGxheWVycywgc28gdGhleSBkb24ndCBn
ZXQgcHV0IGluIHpvcmRlciBsaXN0cy4KICAgICBib29sIGluY2x1ZGVIaWRkZW5MYXllciA9IGlu
Y2x1ZGVIaWRkZW5MYXllcnMgfHwgKG1faGFzVmlzaWJsZUNvbnRlbnQgfHwgKG1faGFzVmlzaWJs
ZURlc2NlbmRhbnQgJiYgaXNTdGFja2luZykpOwogICAgIGlmIChpbmNsdWRlSGlkZGVuTGF5ZXIg
JiYgIWlzTm9ybWFsRmxvd09ubHkoKSAmJiAhcmVuZGVyZXIoKS0+aXNSZW5kZXJGbG93VGhyZWFk
KCkpIHsKQEAgLTUyMjgsNyArNTI0Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxlY3RMYXll
cnMoYm9vbCBpbmNsdWRlSGlkZGVuTGF5ZXJzLCBPd25QdHI8VmVjdG9yPFJlbmRlckxhCiAgICAg
ICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICAgICAgLy8gSWdub3JlIHJlZmxlY3Rp
b25zLgogICAgICAgICAgICAgaWYgKCFtX3JlZmxlY3Rpb24gfHwgcmVmbGVjdGlvbkxheWVyKCkg
IT0gY2hpbGQpCi0gICAgICAgICAgICAgICAgY2hpbGQtPmNvbGxlY3RMYXllcnMoaW5jbHVkZUhp
ZGRlbkxheWVycywgcG9zQnVmZmVyLCBuZWdCdWZmZXIpOworICAgICAgICAgICAgICAgIGNoaWxk
LT5jb2xsZWN0TGF5ZXJzKGluY2x1ZGVIaWRkZW5MYXllcnMsIGJlaGF2aW9yLCBwb3NCdWZmZXIs
IG5lZ0J1ZmZlcik7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC01MjM2LDcgKzUyNTQsNiBAQCB2
b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVkZUhpZGRlbkxheWVycywg
T3duUHRyPFZlY3RvcjxSZW5kZXJMYQogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJMaXN0
c0lmTmVlZGVkKCkKIHsKICAgICBib29sIHNob3VsZFVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGln
dW91c0luU3RhY2tpbmdPcmRlciA9IGlzU3RhY2tpbmdDb250ZXh0KCkgJiYgKG1fek9yZGVyTGlz
dHNEaXJ0eSB8fCBtX25vcm1hbEZsb3dMaXN0RGlydHkpOwotCiAgICAgdXBkYXRlWk9yZGVyTGlz
dHMoKTsKICAgICB1cGRhdGVOb3JtYWxGbG93TGlzdCgpOwogCkBAIC01MjQ1LDggKzUyNjIsMTMg
QEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCkKICAgICAgICAg
cmVmbGVjdGlvbkxheWVyLT51cGRhdGVOb3JtYWxGbG93TGlzdCgpOwogICAgIH0KIAotICAgIGlm
IChzaG91bGRVcGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3JkZXIpCisg
ICAgaWYgKHNob3VsZFVwZGF0ZURlc2NlbmRhbnRzQXJlQ29udGlndW91c0luU3RhY2tpbmdPcmRl
cikgewogICAgICAgICB1cGRhdGVEZXNjZW5kYW50c0FyZUNvbnRpZ3VvdXNJblN0YWNraW5nT3Jk
ZXIoKTsKKyAgICAgICAgLy8gVGhlIGFib3ZlIGZ1bmN0aW9uIGNhbiBjYXVzZSB1cyB0byB1cGRh
dGUgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcKKyAgICAgICAgLy8gYW5kIGRpcnR5IG91ciBs
YXllciBsaXN0cy4gUmVmcmVzaCB0aGVtIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgdXBkYXRlWk9y
ZGVyTGlzdHMoKTsKKyAgICAgICAgdXBkYXRlTm9ybWFsRmxvd0xpc3QoKTsKKyAgICB9CiB9CiAK
IHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUNvbXBvc2l0aW5nQW5kTGF5ZXJMaXN0c0lmTmVlZGVk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggM2Q2ZWFhMWUyZTU5
NzljYjNjNGZmNzIxMzhjNTc0ODMyZTcxNzgxYS4uYzk3MzUwZDZjNjc2OWFhNTJjOGZlZWU0YTE0
NWI5NDRlNWU5ZWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKQEAg
LTQzMSw4ICs0MzEsMTAgQEAgcHVibGljOgogICAgIGJvb2wgaXNTdGFja2luZ0NvbnRleHQoKSBj
b25zdCB7IHJldHVybiBpc1N0YWNraW5nQ29udGV4dChyZW5kZXJlcigpLT5zdHlsZSgpKTsgfQog
CiAgICAgLy8gQSBzdGFja2luZyBjb250YWluZXIgY2FuIGhhdmUgei1vcmRlciBsaXN0cy4gQWxs
IHN0YWNraW5nIGNvbnRleHRzIGFyZQotICAgIC8vIHN0YWNraW5nIGNvbnRhaW5lcnMsIGJ1dCB0
aGUgY29udmVyc2UgaXMgbm90IHRydWUuCi0gICAgYm9vbCBpc1N0YWNraW5nQ29udGFpbmVyKCkg
Y29uc3QgeyByZXR1cm4gaXNTdGFja2luZ0NvbnRleHQoKTsgfQorICAgIC8vIHN0YWNraW5nIGNv
bnRhaW5lcnMsIGJ1dCB0aGUgY29udmVyc2UgaXMgbm90IHRydWUuIExheWVycyB0aGF0IHVzZQor
ICAgIC8vIGNvbXBvc2l0ZWQgc2Nyb2xsaW5nIGFyZSBzdGFja2luZyBjb250YWluZXJzLCBidXQg
dGhleSBtYXkgbm90CisgICAgLy8gbmVjZXNzYXJpbHkgYmUgc3RhY2tpbmcgY29udGV4dHMuCisg
ICAgYm9vbCBpc1N0YWNraW5nQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4gaXNTdGFja2luZ0Nv
bnRleHQoKSB8fCBuZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsgfQogCiAgICAgLy8gR2V0cyB0
aGUgZW5jbG9zaW5nIHN0YWNraW5nIGNvbnRhaW5lciBmb3IgdGhpcyBsYXllci4KICAgICBSZW5k
ZXJMYXllciogc3RhY2tpbmdDb250YWluZXIoKSBjb25zdDsKQEAgLTc1OCw4ICs3NjAsMTEgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgZW51bSBDb2xsZWN0TGF5ZXJzQmVoYXZp
b3IgeyBTdG9wQXRTdGFja2luZ0NvbnRleHRzLCBTdG9wQXRTdGFja2luZ0NvbnRhaW5lcnMgfTsK
KwogICAgIHZvaWQgdXBkYXRlWk9yZGVyTGlzdHMoKTsKICAgICB2b2lkIHJlYnVpbGRaT3JkZXJM
aXN0cygpOworICAgIHZvaWQgcmVidWlsZFpPcmRlckxpc3RzKENvbGxlY3RMYXllcnNCZWhhdmlv
ciwgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mLCBPd25QdHI8VmVjdG9yPFJlbmRlckxh
eWVyKj4gPiYpOwogICAgIHZvaWQgY2xlYXJaT3JkZXJMaXN0cygpOwogCiAgICAgdm9pZCB1cGRh
dGVOb3JtYWxGbG93TGlzdCgpOwpAQCAtODMwLDcgKzgzNSw3IEBAIHByaXZhdGU6CiAgICAgTGF5
b3V0VW5pdCByZW5kZXJCb3hYKCkgY29uc3QgeyByZXR1cm4gcmVuZGVyQm94TG9jYXRpb24oKS54
KCk7IH0KICAgICBMYXlvdXRVbml0IHJlbmRlckJveFkoKSBjb25zdCB7IHJldHVybiByZW5kZXJC
b3hMb2NhdGlvbigpLnkoKTsgfQogCi0gICAgdm9pZCBjb2xsZWN0TGF5ZXJzKGJvb2wgaW5jbHVk
ZUhpZGRlbkxheWVycywgT3duUHRyPFZlY3RvcjxSZW5kZXJMYXllcio+ID4mLCBPd25QdHI8VmVj
dG9yPFJlbmRlckxheWVyKj4gPiYpOworICAgIHZvaWQgY29sbGVjdExheWVycyhib29sIGluY2x1
ZGVIaWRkZW5MYXllcnMsIENvbGxlY3RMYXllcnNCZWhhdmlvciwgT3duUHRyPFZlY3RvcjxSZW5k
ZXJMYXllcio+ID4mLCBPd25QdHI8VmVjdG9yPFJlbmRlckxheWVyKj4gPiYpOwogCiAgICAgdm9p
ZCB1cGRhdGVDb21wb3NpdGluZ0FuZExheWVyTGlzdHNJZk5lZWRlZCgpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGJl
ZTAxODAyODE5OWQ2M2M1NzdiNjBmNzg0NDUwYjAzMGQ0NDNjYS4uMjdjZmIzYjg0ZWVmMWI4NWVh
ZmExMGI1ZTU4YjZmOTM0MDE1MDdhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAxLTI4
ICBJYW4gVm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFByb21vdGUg
Y29tcG9zaXRlZC1zY3JvbGxpbmcgbGF5ZXJzIHRvIHN0YWNraW5nIGNvbnRhaW5lcnMuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYxNDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgV2l0aCB0aGlzIHBhdGNo
LCBSZW5kZXJMYXllcnMgdGhhdCB1c2UgY29tcG9zaXRlZCBzY3JvbGxpbmcgYXJlCisgICAgICAg
IHRyZWF0ZWQgYXMgc3RhY2tpbmcgY29udGV4dHMuIFNpbmNlIGlzU3RhY2tpbmdDb250YWluZXIg
bm93IGRlcGVuZHMgb24KKyAgICAgICAgdGhlIHZhbHVlIG9mIG1fbmVlZHNDb21wb3NpdGVkU2Ny
b2xsaW5nLCBzcGVjaWFsIGNhcmUgbmVlZGVkIHRvIGJlCisgICAgICAgIHRha2VuIHRvIGVuc3Vy
ZSB0aGF0IHRoZSB2YWx1ZSBvZiBpc1N0YWNraW5nQ29udGFpbmVyIGlzIG5vdCB1c2VkIHdoZW4K
KyAgICAgICAgdXBkYXRpbmcgbV9uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcuIEluIHBhcnRpY3Vs
YXIsIHRoZSBjb2RlIGZvcgorICAgICAgICByZWJ1aWxkaW5nIHRoZSBsYXllciBsaXN0cyBuZWVk
ZWQgdG8gYmUgZ2VuZXJhbGl6ZWQgc28gdGhhdCB3ZSBjb3VsZAorICAgICAgICBidWlsZCB0aGUg
bGF5ZXIgbGlzdHMgdXNpbmcgdGhlIHZhbHVlIG9mIGlzU3RhY2tpbmdDb250ZXh0IHJhdGhlciB0
aGFuCisgICAgICAgIGlzU3RhY2tpbmdDb250YWluZXIgd2hlbiBidWlsZGluZyB0aGUgbGF5ZXIg
bGlzdHMgdXNlZCB0byBkZXRlcm1pbmUgaWYKKyAgICAgICAgdGhlIGRlc2NlbmRhbnRzIGFyZSBj
b250aWd1b3VzIGluIHN0YWNraW5nIG9yZGVyLiBBbHNvLCB1cGRhdGluZworICAgICAgICBtX25l
ZWRzQ29tcG9zaXRlZFNjcm9sbGluZyBjYW4gbm93IGFmZmVjdCBzdGFja2luZyBjb250YWluZXIg
c3RhdHVzCisgICAgICAgIGFuZCBjYW4gdGhlcmVmb3JlIGRpcnR5IGxheWVyIGxpc3RzLgorCisg
ICAgICAgICogY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRl
cy1hLXN0YWNraW5nLWNvbnRhaW5lci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGNv
bXBvc2l0aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2lu
Zy1jb250YWluZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvb3ZlcmZs
b3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRhaW5lci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorCiAyMDEzLTAxLTIyICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBJbmxpbmUgQ29udGFpbmluZyBPbmx5IENvbGxhcHNlZCBXaGl0
ZXNwYWNlIE5vdCBHZXR0aW5nIGEgTGluZWJveApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29t
cG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5n
LWNvbnRhaW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9vdmVyZmxv
dy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29udGFpbmVyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41OTgzOGU4NGIxODBlOTEwNzBmN2MyNmQwMDZjYTU1N2ZhYjMy
NWE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cv
Y29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRhaW5lci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1NCBAQAorKEdyYXBoaWNzTGF5ZXIKKyAgKGJvdW5kcyA4MDAuMDAg
NjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRz
IDgwMC4wMCA2MDAuMDApCisgICAgICAoY2hpbGRyZW4gMQorICAgICAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgICAgIChwb3NpdGlvbiAyOC4wMCAyMC4wMCkKKyAgICAgICAgICAoYm91bmRzIDIw
Mi4wMCAyMDIuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVudCAxKQorICAgICAgICAgIChjaGls
ZHJlbiA0CisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAocG9zaXRp
b24gMS4wMCAxLjAwKQorICAgICAgICAgICAgICAoYm91bmRzIDIwMC4wMCAyMDAuMDApCisgICAg
ICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAgICAgKEdyYXBoaWNzTGF5ZXIKKyAg
ICAgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDMwMC4wMCkKKyAgICAgICAgICAgICAgICAg
IChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgIChjaGlsZHJlbiAyCisgICAgICAg
ICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgICAgICAgICAgKGJvdW5k
cyAyMDIuMDAgMjAyLjAwKQorICAgICAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkK
KyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICAoR3JhcGhpY3NMYXll
cgorICAgICAgICAgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDE1MC4wMCkKKyAgICAgICAg
ICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChw
b3NpdGlvbiAxLjAwIDE4Ni4wMCkKKyAgICAgICAgICAgICAgKGJvdW5kcyAxODUuMDAgMTUuMDAp
CisgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIChHcmFwaGljc0xheWVyCisgICAgICAgICAgICAgIChwb3NpdGlvbiAxODYuMDAgMS4wMCkK
KyAgICAgICAgICAgICAgKGJvdW5kcyAxNS4wMCAxODUuMDApCisgICAgICAgICAgICAgIChkcmF3
c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisg
ICAgICAgICAgICAgIChwb3NpdGlvbiAxODYuMDAgMTg2LjAwKQorICAgICAgICAgICAgICAoYm91
bmRzIDE1LjAwIDE1LjAwKQorICAgICAgICAgICAgICAoZHJhd3NDb250ZW50IDEpCisgICAgICAg
ICAgICApCisgICAgICAgICAgKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRl
ZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNraW5nLWNvbnRhaW5lci5odG1sIGIvTGF5b3V0VGVz
dHMvY29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0
YWNraW5nLWNvbnRhaW5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3ZjhlYjlmZWNmNTgzNjBkMDA3OTQ4
N2Q0NWUyMWIzMjA2NmQyMzMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9jb21wb3Np
dGluZy9vdmVyZmxvdy9jb21wb3NpdGVkLXNjcm9sbGluZy1jcmVhdGVzLWEtc3RhY2tpbmctY29u
dGFpbmVyLmh0bWwKQEAgLTAsMCArMSw3NiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9X
M0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICJodHRwOi8vd3d3LnczLm9y
Zy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAgPG1l
dGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9
dXRmLTgiLz4KKyAgPHRpdGxlPkNvbXBvc2l0ZWQgc2Nyb2xsaW5nIGNyZWF0ZXMgYSBzdGFja2lu
ZyBjb250ZXh0LjwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVl
biI+CisgICAgLmNvbnRhaW5lciB7CisgICAgICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6
IDIwMHB4OworICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgIG1hcmdpbjogMjBweDsKKyAg
ICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIH0KKworICAgIC5jb21wb3NpdGVkIHsK
KyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIGhlaWdodDogMTUwcHg7CisgICAgICAtd2Via2l0
LXRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVu
OworICAgIH0KKworICAgIC5ub3QtY29tcG9zaXRlZCB7CisgICAgICB3aWR0aDogMjAwcHg7Cisg
ICAgICBoZWlnaHQ6IDE1MHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICB9
CisKKyAgICAuaW4tZmxvdy1wb3NpdGlvbmVkIHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgIH0KKworICAgIC5maXhlZCB7CisgICAgICB6LWlu
ZGV4OiAtMTsKKyAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgIHdpZHRoOiAyMDBweDsK
KyAgICAgIGhlaWdodDogMzAwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAg
fQorICA8L3N0eWxlPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0i
dXRmLTgiPgorICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICB3aW5kb3cuaW50
ZXJuYWxzLnNldHRpbmdzLnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9s
bEVuYWJsZWQodHJ1ZSk7CisKKyAgICBmdW5jdGlvbiBkb1Rlc3QoKQorICAgIHsKKyAgICAgIGRv
Y3VtZW50LmJvZHkub2Zmc2V0VG9wOworCisgICAgICBpZiAod2luZG93LmludGVybmFscykgewor
ICAgICAgICB2YXIgbGF5ZXJUcmVlID0gd2luZG93LmludGVybmFscy5sYXllclRyZWVBc1RleHQo
ZG9jdW1lbnQpOworICAgICAgICB2YXIgcHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKTsKKyAgICAgICAgdmFyIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShsYXll
clRyZWUgKyAnXG4nKTsKKyAgICAgICAgcHJlLmFwcGVuZENoaWxkKHRleHQpOworICAgICAgfQor
ICAgIH0KKworICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxz
ZSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxkaXYgY2xhc3M9ImNvbnRhaW5l
ciI+CisgICAgPGRpdiBjbGFzcz0iaW4tZmxvdy1wb3NpdGlvbmVkIj4KKyAgICAgIDxkaXYgY2xh
c3M9ImZpeGVkIj48L2Rpdj4KKyAgICA8L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJjb21wb3NpdGVk
Ij48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJub3QtY29tcG9zaXRlZCI+PC9kaXY+CisgIDwvZGl2
PgorICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTNjOGU1
MTRkYjY2MDE4YTM4NGNlMWFlYmE3MGUyZTNlZmQ2NmU1MC4uOTRkYTc1ZmVjMmU1NjI1ZmE3MjY1
ZTc5Mzc4NTZiYmRiOWEwMThlNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNjMzLDYgKzM2MzMsOSBAQCB3ZWJraXQub3JnL2IvOTI5
NjggaHR0cC90ZXN0cy9hcHBjYWNoZS9hYm9ydC1jYWNoZS1vbnByb2dyZXNzLmh0bWwKICMgU2Ny
b2xsaW5nIGNvbnRlbnQgZHJhd3MgYmVuZWF0aCBzY3JvbGxiYXJzIGluIGNvbXBvc2l0ZWQgc2Ny
b2xsaW5nIG1vZGUuCiB3ZWJraXQub3JnL2IvMTAzMTU2IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1
YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvc2Nyb2xsYmFycy9jdXN0b20tc2Nyb2xsYmFyLXdp
dGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiAKKyMgUmVxdWly
ZXMgYW4gdXBkYXRlZCBiYXNlbGluZSBhZnRlciAxMDYxNDIuCit3ZWJraXQub3JnL2IvMTA2ODIw
IHBsYXRmb3JtL2Nocm9taXVtL3ZpcnR1YWwvZ3B1L2NvbXBvc2l0ZWRzY3JvbGxpbmcvb3ZlcmZs
b3cvb3ZlcmZsb3ctc2Nyb2xsLmh0bWwgWyBGYWlsdXJlIF0KKwogIyBGYWlscyBkdWUgdG8gQnVn
IDg1ODU2Lgogd2Via2l0Lm9yZy9iLzg1ODU2IFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9ibG9j
ay9mbG9hdC8wMjguaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzg1ODU2
IFsgV2luIE1hYyBBbmRyb2lkIF0gZmFzdC9ibG9jay9mbG9hdC8wMjYuaHRtbCBbIEltYWdlT25s
eUZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0
aW5nL292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250
YWluZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5n
L292ZXJmbG93L2NvbXBvc2l0ZWQtc2Nyb2xsaW5nLWNyZWF0ZXMtYS1zdGFja2luZy1jb250YWlu
ZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0YTJmOWI5YmFkNGI0YmNmN2MzYjQ1M2Y1OGZi
YjQ1YjhmNjJmMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
Y29tcG9zaXRpbmcvb3ZlcmZsb3cvY29tcG9zaXRlZC1zY3JvbGxpbmctY3JlYXRlcy1hLXN0YWNr
aW5nLWNvbnRhaW5lci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzOCBAQAorKEdyYXBoaWNzTGF5
ZXIKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4gMQorICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAgICAoY2hpbGRyZW4gMQor
ICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgIChwb3NpdGlvbiAyOC4wMCAyMC4wMCkK
KyAgICAgICAgICAoYm91bmRzIDIwMi4wMCAyMDIuMDApCisgICAgICAgICAgKGRyYXdzQ29udGVu
dCAxKQorICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAoR3JhcGhpY3NMYXllcgor
ICAgICAgICAgICAgICAocG9zaXRpb24gMS4wMCAxLjAwKQorICAgICAgICAgICAgICAoYm91bmRz
IDIwMC4wMCAyMDAuMDApCisgICAgICAgICAgICAgIChjaGlsZHJlbiAxCisgICAgICAgICAgICAg
ICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAgICAgICAgIChib3VuZHMgMjAwLjAwIDMwMC4w
MCkKKyAgICAgICAgICAgICAgICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAg
IChjaGlsZHJlbiAyCisgICAgICAgICAgICAgICAgICAgIChHcmFwaGljc0xheWVyCisgICAgICAg
ICAgICAgICAgICAgICAgKGJvdW5kcyAyMDIuMDAgMjAyLjAwKQorICAgICAgICAgICAgICAgICAg
ICAgIChkcmF3c0NvbnRlbnQgMSkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg
ICAgICAgICAoR3JhcGhpY3NMYXllcgorICAgICAgICAgICAgICAgICAgICAgIChib3VuZHMgMjAw
LjAwIDE1MC4wMCkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorICAgICAg
ICAgICkKKyAgICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>