<?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>47174</bug_id>
          
          <creation_ts>2010-10-05 06:48:26 -0700</creation_ts>
          <short_desc>Moving all bounding box related calculation to RenderSVGResourceFilterPrimitive</short_desc>
          <delta_ts>2010-10-22 03:57:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>31370</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>krit</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>289571</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-10-05 06:48:26 -0700</bug_when>
    <thetext>The whole logic should be in RenderSVGResourceFilterPrimitive. But one patch is not enough for the whole refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289576</commentid>
    <comment_count>1</comment_count>
      <attachid>69780</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-10-05 07:00:38 -0700</bug_when>
    <thetext>Created attachment 69780
patch

This patch is tested and working on mac leopard. I think this is a good first step, since it keeps the logic (in a refactored way). There is no more regression, and I think it is finally ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289577</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-05 07:01:58 -0700</bug_when>
    <thetext>Attachment 69780 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/RenderSVGResourceFilterPrimitive.cpp:61:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289578</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-05 07:05:27 -0700</bug_when>
    <thetext>Can you wait before you update the patch please? The patch on bug 31370 is nearly done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290836</commentid>
    <comment_count>4</comment_count>
      <attachid>69780</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-07 00:05:30 -0700</bug_when>
    <thetext>Comment on attachment 69780
patch

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

Good start. But you still forgot some of the things we spoke of, like calculating the subregions in buildPrimitives and not to make the functions in RenderSVGResourceFilterPrimitives static.

&gt; WebCore/platform/graphics/filters/Filter.h:50
&gt;          virtual bool effectBoundingBoxMode() const = 0;

Do we still need this function?

&gt; WebCore/rendering/RenderSVGResourceFilter.cpp:200
&gt; +    FloatRect subRegion = lastEffect-&gt;repaintRectInLocalCoordinates();
&gt;      // At least one FilterEffect has a too big image size,
&gt;      // recalculate the effect sizes with new scale factors.
&gt; -    if (!fitsInMaximumImageSize(filterData-&gt;filter-&gt;maxImageSize(), scale)) {
&gt; +    if (!fitsInMaximumImageSize(subRegion.size(), scale)) {

Interesting, sound like a good idea to take repaintRectInLocalCoordinates (alias absolutePaintRect). But please name the variable paintRect.

&gt; WebCore/rendering/RenderSVGResourceFilter.cpp:202
&gt; +        RenderSVGResourceFilterPrimitive::determineFilterPrimitiveSubregion(lastEffect, filterData-&gt;filter.get());

We already talked about it on IRC. I wouldn&apos;t make this static. Its better to manage it in the class.

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.cpp:47
&gt; +    if (effect-&gt;isSourceInput()) {
&gt; +        // For SourceAlpha and SourceGraphic
&gt; +        FloatRect clippedSourceRect = filter-&gt;sourceImageRect();
&gt; +        if (filter-&gt;sourceImageRect().x() &lt; filter-&gt;filterRegion().x())
&gt; +            clippedSourceRect.setX(filter-&gt;filterRegion().x());
&gt; +        if (filter-&gt;sourceImageRect().y() &lt; filter-&gt;filterRegion().y())
&gt; +            clippedSourceRect.setY(filter-&gt;filterRegion().y());
&gt; +        effect-&gt;setFilterPrimitiveSubregion(clippedSourceRect);
&gt; +        clippedSourceRect.scale(filter-&gt;filterResolution().width(), filter-&gt;filterResolution().height());
&gt; +        effect-&gt;setRepaintRectInLocalCoordinates(clippedSourceRect);
&gt; +        return filter-&gt;filterRegion();
&gt; +    }

This isn&apos;t needed anymore

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.cpp:64
&gt; +    if (!effect-&gt;isTile()) {
&gt; +        // FETurbulence, FEImage and FEFlood don&apos;t have input effects, take the filter region as unite rect.
&gt; +        if (unsigned numberOfInputEffects = effect-&gt;inputEffects().size()) {
&gt; +            for (unsigned i = 0; i &lt; numberOfInputEffects; ++i)
&gt; +                uniteRect.unite(determineFilterPrimitiveSubregion(effect-&gt;inputEffect(i), filter));
&gt; +        } else
&gt; +            uniteRect = filter-&gt;filterRegion();
&gt; +    }
&gt; +    else {
&gt; +        determineFilterPrimitiveSubregion(effect-&gt;inputEffect(0), filter);
&gt; +        uniteRect = filter-&gt;filterRegion();
&gt; +    }

Maybe we should move this to an inline

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.cpp:95
&gt; +    if (filter-&gt;effectBoundingBoxMode()) {
&gt; +        newSubRegion = uniteRect;
&gt; +        // Avoid the calling of a virtual method several times.
&gt; +        FloatRect targetBoundingBox = filter-&gt;sourceImageRect();
&gt; +
&gt; +        if (effect-&gt;hasX())
&gt; +            newSubRegion.setX(targetBoundingBox.x() + subRegionBoundingBox.x() * targetBoundingBox.width());
&gt; +
&gt; +       if (effect-&gt;hasY())
&gt; +            newSubRegion.setY(targetBoundingBox.y() + subRegionBoundingBox.y() * targetBoundingBox.height());
&gt; +
&gt; +        if (effect-&gt;hasWidth())
&gt; +            newSubRegion.setWidth(subRegionBoundingBox.width() * targetBoundingBox.width());
&gt; +
&gt; +        if (effect-&gt;hasHeight())
&gt; +            newSubRegion.setHeight(subRegionBoundingBox.height() * targetBoundingBox.height());
&gt; +    } else {
&gt; +        if (!effect-&gt;hasX())
&gt; +            newSubRegion.setX(uniteRect.x());
&gt; +
&gt; +        if (!effect-&gt;hasY())
&gt; +            newSubRegion.setY(uniteRect.y());
&gt; +
&gt; +        if (!effect-&gt;hasWidth())
&gt; +            newSubRegion.setWidth(uniteRect.width());
&gt; +
&gt; +        if (!effect-&gt;hasHeight())
&gt; +            newSubRegion.setHeight(uniteRect.height());
&gt; +    }
&gt; +

We really don&apos;t want the effects to store hasX, hasY and so on anymore. You can ask your node() directly now.

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.cpp:105
&gt; +    FloatRect scaledSubRegion(newSubRegion);
&gt; +    scaledSubRegion.scale(filter-&gt;filterResolution().width(), filter-&gt;filterResolution().height());
&gt; +    effect-&gt;setRepaintRectInLocalCoordinates(scaledSubRegion);
&gt; +    return newSubRegion;
&gt;  }

I already begun to give the variables better name. Maybe you can continue this here.

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.h:43
&gt; +    RenderSVGResourceFilterPrimitive(SVGFilterPrimitiveStandardAttributes* filterPrimitiveElement)
&gt; +        : RenderSVGHiddenContainer(filterPrimitiveElement)
&gt; +    {
&gt; +    }
&gt; +

I would move the ctor to the cpp. Looks more like the other classes. Not sure if we have a style rule for it yet. But still..

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.h:46
&gt; +    static FloatRect determineFilterPrimitiveSubregion(FilterEffect* effect, Filter* filter);

hm...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290855</commentid>
    <comment_count>5</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-10-07 01:20:58 -0700</bug_when>
    <thetext>&gt; We already talked about it on IRC. I wouldn&apos;t make this static. Its better to manage it in the class.

Me neither. But moving all the logic to one file caused enough regression fails to fix them in one patch. That is why I tried to stress that the static function is temporary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290887</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-07 02:39:49 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; We already talked about it on IRC. I wouldn&apos;t make this static. Its better to manage it in the class.
&gt; 
&gt; Me neither. But moving all the logic to one file caused enough regression fails to fix them in one patch. That is why I tried to stress that the static function is temporary.

If you have a followup that fixes this, I&apos;m fine with a temporary static function. Over read this in you ChangeLog, sorry.
To my last comment. You can&apos;t use absolutePaintRect, since it is calculated during the drawing phase (on calling FilterEffect::apply(Filter*)). You have to use maxEffectRect, the subregion in absolute coordinate space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296765</commentid>
    <comment_count>7</comment_count>
      <attachid>71283</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-10-20 06:32:48 -0700</bug_when>
    <thetext>Created attachment 71283
patch 2

Still keeping the static function for the first step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296979</commentid>
    <comment_count>8</comment_count>
      <attachid>71283</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-20 13:34:17 -0700</bug_when>
    <thetext>Comment on attachment 71283
patch 2

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

Just style issues remaining. Great Patch! Looking forward to see a fixed version of this patch and a followup with turning determineFilterPrimitiveSubregion into a member of the Renderer. r- for now.

&gt; WebCore/platform/graphics/filters/ImageBufferFilter.h:-46
&gt; -    virtual FloatSize maxImageSize() const { return FloatSize(); }

This file doesn&apos;t exist any longer. Revert this file in your local copy and update to trunk. Shouldn&apos;t cause any problems.

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.cpp:39
&gt; +    FloatRect subRegionBoundingBox = effect-&gt;effectBoundaries();
&gt; +    FloatRect newSubRegion = subRegionBoundingBox;

We use just subregion, not subRegion now.

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.cpp:49
&gt; +    }
&gt; +    else {

} else {

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.h:46
&gt; +    // These two arguments are depend on the RenderObject

s/depend/dependent/ or just they depend on...

&gt; WebCore/svg/graphics/filters/SVGFilter.cpp:@
&gt;  SVGFilter::SVGFilter(const AffineTransform&amp; absoluteTransform, const FloatRect&amp;

Remove the SVGFEImage.h include in this file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297862</commentid>
    <comment_count>9</comment_count>
      <attachid>71533</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-10-22 01:01:38 -0700</bug_when>
    <thetext>Created attachment 71533
patch

Thanks for the review. The updated patch is attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297868</commentid>
    <comment_count>10</comment_count>
      <attachid>71533</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-10-22 01:25:45 -0700</bug_when>
    <thetext>Comment on attachment 71533
patch

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

LGTM. r=me. Please fix the name of absoluteSubRegion. You can do it before uploading it.

&gt; WebCore/rendering/RenderSVGResourceFilterPrimitive.cpp:85
&gt; +    FloatRect absoluteSubRegion = filter-&gt;mapLocalRectToAbsoluteRect(subregion);

s/absoluteSubRegion/absoluteSubregion/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297897</commentid>
    <comment_count>11</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-10-22 03:57:00 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/70296

Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69780</attachid>
            <date>2010-10-05 07:00:38 -0700</date>
            <delta_ts>2010-10-20 06:32:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>20316</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA3ZWZiMWZmN2ZhMzA0ZmFjNjRhMTZlYTUyZDM3M2Q5NTExMDlhYmUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDUgT2N0IDIwMTAgMTU6NTU6MjMgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBmaWx0ZXItcmVuZGVyZXIKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVyY3pl
Z0BpbmYudS1zemVnZWQuaHU+Ci0tLQogV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDM0ICsrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgICAgICAgfCAgICA4IC0tCiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmggICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaCAgICAgICAgIHwgICAgNCAtCiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCB8ICAgMTcgLS0tLS0K
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaCAgIHwgICAg
NCArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuaCAg
fCAgICAxIC0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5j
cHAgIHwgICAxMyAtLS0tCiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
QWxwaGEuaCAgICB8ICAgIDIgLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
R3JhcGhpYy5jcHAgICAgfCAgIDEzIC0tLS0KIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmggIHwgICAgMiAtCiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAgICAgICB8ICAgIDggKystCiAuLi4vcmVuZGVyaW5nL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcCB8ICAgNzIgKysrKysrKysrKysrKysrKysr
Ky0KIC4uLi9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCAgIHwg
ICAgOSArKy0KIFdlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCAgICAg
ICAgIHwgICA0NyAtLS0tLS0tLS0tLS0tCiBXZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oICAgICAgICAgICB8ICAgIDQgLQogMTYgZmlsZXMgY2hhbmdlZCwgMTIwIGluc2Vy
dGlvbnMoKyksIDEyMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDlmNTE1OGMuLmVlYWZhYTAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTAtMTAtMDUgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZpbmcgYWxs
IGJvdW5kaW5nIGJveCByZWxhdGVkIGNhbGN1bGF0aW9uIHRvIFJlbmRlclNWR1Jlc291cmNlRmls
dGVyUHJpbWl0aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00NzE3NAorCisgICAgICAgIFRoZSBwcmltaXRpdmUgc3ViLXJlZ2lvbiBjYWxjdWxhdGlv
biB3YXMgc3ByZWFkIGluIG1hbnkKKyAgICAgICAgZmlsZXMgYWNyb3NzIGluIFdlYktpdCBzb3Vy
Y2UgY29kZSwgYW5kIGFsbCBvZiB0aGVtIGFyZSBtb3ZlZAorICAgICAgICB0byBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZSwgd2hlcmUgdGhleSBzaG91bGQgYmUuCisgICAgICAgIElu
IHRoaXMgcGF0Y2ggdGhlIGNhbGN1bGF0aW9uIGlzIGEgc3RhdGljIG1ldGhvZCB3aGljaCB3aWxs
CisgICAgICAgIGJlIHR1cm5lZCB0byBhIHJlYWwgbWVtYmVyIGZ1bmN0aW9uIGluIHRoZSBuZWFy
IGZ1dHVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6RkVUaWxlOjppc1RpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmlzVGlsZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKToKKyAgICAgICAg
KiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwOgorICAgICAgICAqIHN2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorCiAyMDEwLTEwLTA1ICBTYXRpc2ggU2FtcGF0aCAg
PHNhdGlzaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDQx
YWJkMzQuLmFmYjBkZmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwCkBAIC00MCwxNCArNDAsNiBAQCBQYXNzUmVmUHRyPEZFVGlsZT4gRkVUaWxlOjpj
cmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVUaWxlKTsKIH0KIAotRmxvYXRSZWN0
IEZFVGlsZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlciogZmlsdGVy
KQotewotICAgIGlucHV0RWZmZWN0KDApLT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oZmlsdGVyKTsKLQotICAgIGZpbHRlci0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKHRoaXMsIGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkpOwotICAgIHJldHVybiBmaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oKTsKLX0KLQogdm9pZCBGRVRpbGU6OmFwcGx5KEZpbHRlciogZmlsdGVy
KQogewogICAgIEZpbHRlckVmZmVjdCogaW4gPSBpbnB1dEVmZmVjdCgwKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAppbmRleCAyMGVmYmNkLi5hZGMwNDA1IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oCkBAIC0zNyw4ICsz
Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgVGV4dFN0cmVhbSYgZXh0ZXJuYWxSZXByZXNl
bnRhdGlvbihUZXh0U3RyZWFtJiwgaW50IGluZGVudGlvbikgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyKik7Ci0g
ICAgCisgICAgdmlydHVhbCBib29sIGlzVGlsZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwog
cHJpdmF0ZToKICAgICBGRVRpbGUoKTsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyLmgKaW5kZXggYmNlNGJlMy4uYWNkYTg2NiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtNDcsMTAgKzQ3LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0
ID0gMDsKIAotICAgICAgICAvLyBTVkcgc3BlY2lmaWMKLSAgICAgICAgdmlydHVhbCB2b2lkIGRl
dGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqLCBjb25zdCBGbG9h
dFJlY3QmKSB7IH0KLQotICAgICAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBtYXhJbWFnZVNpemUoKSBj
b25zdCA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBlZmZlY3RCb3VuZGluZ0JveE1vZGUoKSBj
b25zdCA9IDA7CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAppbmRleCA0NjFiMjJhLi4wMjRkNTI0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNw
cApAQCAtMzksMjMgKzM5LDYgQEAgRmlsdGVyRWZmZWN0Ojp+RmlsdGVyRWZmZWN0KCkKIHsKIH0K
IAotRmxvYXRSZWN0IEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKEZpbHRlciogZmlsdGVyKQotewotICAgIEZsb2F0UmVjdCB1bml0ZVJlY3Q7Ci0gICAgdW5z
aWduZWQgc2l6ZSA9IG1faW5wdXRFZmZlY3RzLnNpemUoKTsKLQotICAgIC8vIEZFVHVyYnVsZW5j
ZSwgRkVJbWFnZSBhbmQgRkVGbG9vZCBkb24ndCBoYXZlIGlucHV0IGVmZmVjdHMsIHRha2UgdGhl
IGZpbHRlciByZWdpb24gYXMgdW5pdGUgcmVjdC4KLSAgICBpZiAoIXNpemUpCi0gICAgICAgIHVu
aXRlUmVjdCA9IGZpbHRlci0+ZmlsdGVyUmVnaW9uKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAgICB1bml0ZVJlY3Qu
dW5pdGUobV9pbnB1dEVmZmVjdHMuYXQoaSktPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJl
Z2lvbihmaWx0ZXIpKTsKLSAgICB9Ci0KLSAgICBmaWx0ZXItPmRldGVybWluZUZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbih0aGlzLCB1bml0ZVJlY3QpOwotICAgIHJldHVybiBtX2ZpbHRlclByaW1p
dGl2ZVN1YnJlZ2lvbjsKLX0KLQogSW50UmVjdCBGaWx0ZXJFZmZlY3Q6OnJlcXVlc3RlZFJlZ2lv
bk9mSW5wdXRJbWFnZURhdGEoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RSZWN0KSBjb25zdAogewog
ICAgIEFTU0VSVChtX2VmZmVjdEJ1ZmZlcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmgKaW5kZXggZWJlMTg4MC4uOGUyMTBkYyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAt
NjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGR1bXAoKSA9IDA7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTb3VyY2VJbnB1dCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGlzVGlsZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2
aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGlu
dCBpbmRlbnRpb24gPSAwKSBjb25zdDsKIApAQCAtODcsOSArODgsNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoYXNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hhc0hlaWdodDsgfQogICAgIHZvaWQg
c2V0SGFzSGVpZ2h0KGJvb2wgdmFsdWUpIHsgbV9oYXNIZWlnaHQgPSB2YWx1ZTsgfQogCi0gICAg
Ly8gRklYTUU6IFBzZXVkbyBwcmltaXRpdmVzIGxpa2UgU291cmNlR3JhcGhpYyBhbmQgU291cmNl
QWxwaGEgYXMgd2VsbCBhcyBGRVRpbGUgc3RpbGwgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLgotICAg
IHZpcnR1YWwgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0
ZXIqKTsKLQogICAgIEZsb2F0UmVjdCBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKSBjb25zdCB7
IHJldHVybiBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbjsgfQogICAgIHZvaWQgc2V0RmlsdGVy
UHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKSB7IG1fZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uID0gZmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9J
bWFnZUJ1ZmZlckZpbHRlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0lt
YWdlQnVmZmVyRmlsdGVyLmgKaW5kZXggY2Q0YmMyZi4uZjQ5ZWU3NiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmgKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmgKQEAg
LTQzLDcgKzQzLDYgQEAgcHVibGljOgogICAgIC8vIFNWRyBzcGVjaWZpYwogICAgIHZpcnR1YWwg
Ym9vbCBlZmZlY3RCb3VuZGluZ0JveE1vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0g
ICAgdmlydHVhbCBGbG9hdFNpemUgbWF4SW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gRmxvYXRT
aXplKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRWZmZWN0U3ViUmVnaW9uKEZpbHRl
ckVmZmVjdCopIHsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5jcHAKaW5kZXggYmVhZjJlNy4uNWE1OGJhYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBA
IC00MiwxOSArNDIsNiBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFNvdXJjZUFscGhhOjplZmZlY3RO
YW1lKCkKICAgICByZXR1cm4gc19lZmZlY3ROYW1lOwogfQogCi1GbG9hdFJlY3QgU291cmNlQWxw
aGE6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXIqIGZpbHRlcikKLXsK
LSAgICBGbG9hdFJlY3QgY2xpcHBlZFNvdXJjZVJlY3QgPSBmaWx0ZXItPnNvdXJjZUltYWdlUmVj
dCgpOwotICAgIGlmIChmaWx0ZXItPnNvdXJjZUltYWdlUmVjdCgpLngoKSA8IGZpbHRlci0+Zmls
dGVyUmVnaW9uKCkueCgpKQotICAgICAgICBjbGlwcGVkU291cmNlUmVjdC5zZXRYKGZpbHRlci0+
ZmlsdGVyUmVnaW9uKCkueCgpKTsKLSAgICBpZiAoZmlsdGVyLT5zb3VyY2VJbWFnZVJlY3QoKS55
KCkgPCBmaWx0ZXItPmZpbHRlclJlZ2lvbigpLnkoKSkKLSAgICAgICAgY2xpcHBlZFNvdXJjZVJl
Y3Quc2V0WShmaWx0ZXItPmZpbHRlclJlZ2lvbigpLnkoKSk7Ci0gICAgc2V0RmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKGNsaXBwZWRTb3VyY2VSZWN0KTsKLSAgICBjbGlwcGVkU291cmNlUmVjdC5z
Y2FsZShmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXItPmZpbHRlclJl
c29sdXRpb24oKS5oZWlnaHQoKSk7Ci0gICAgc2V0UmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0
ZXMoY2xpcHBlZFNvdXJjZVJlY3QpOwotICAgIHJldHVybiBmaWx0ZXItPmZpbHRlclJlZ2lvbigp
OwotfQotCiB2b2lkIFNvdXJjZUFscGhhOjphcHBseShGaWx0ZXIqIGZpbHRlcikKIHsKICAgICBH
cmFwaGljc0NvbnRleHQqIGZpbHRlckNvbnRleHQgPSBlZmZlY3RDb250ZXh0KCk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCmluZGV4IGYwZmEz
MTkuLmIwMGRkN2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VBbHBoYS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VBbHBoYS5oCkBAIC0zNCw4ICszNCw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGVmZmVjdE5hbWUoKTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRl
dGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXIqKTsKLQogICAgIHZpcnR1YWwg
dm9pZCBhcHBseShGaWx0ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5k
ZXggYzAxNGU2OC4uMzE1OGNhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcApAQCAtNDEsMTkgKzQxLDYgQEAgY29uc3QgQXRv
bWljU3RyaW5nJiBTb3VyY2VHcmFwaGljOjplZmZlY3ROYW1lKCkKICAgICByZXR1cm4gc19lZmZl
Y3ROYW1lOwogfQogCi1GbG9hdFJlY3QgU291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKEZpbHRlciogZmlsdGVyKQotewotICAgIEZsb2F0UmVjdCBjbGlwcGVk
U291cmNlUmVjdCA9IGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCk7Ci0gICAgaWYgKGZpbHRlci0+
c291cmNlSW1hZ2VSZWN0KCkueCgpIDwgZmlsdGVyLT5maWx0ZXJSZWdpb24oKS54KCkpCi0gICAg
ICAgIGNsaXBwZWRTb3VyY2VSZWN0LnNldFgoZmlsdGVyLT5maWx0ZXJSZWdpb24oKS54KCkpOwot
ICAgIGlmIChmaWx0ZXItPnNvdXJjZUltYWdlUmVjdCgpLnkoKSA8IGZpbHRlci0+ZmlsdGVyUmVn
aW9uKCkueSgpKQotICAgICAgICBjbGlwcGVkU291cmNlUmVjdC5zZXRZKGZpbHRlci0+ZmlsdGVy
UmVnaW9uKCkueSgpKTsKLSAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oY2xpcHBlZFNv
dXJjZVJlY3QpOwotICAgIGNsaXBwZWRTb3VyY2VSZWN0LnNjYWxlKGZpbHRlci0+ZmlsdGVyUmVz
b2x1dGlvbigpLndpZHRoKCksIGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsK
LSAgICBzZXRSZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcyhjbGlwcGVkU291cmNlUmVjdCk7
Ci0gICAgcmV0dXJuIGZpbHRlci0+ZmlsdGVyUmVnaW9uKCk7Ci19Ci0KIHZvaWQgU291cmNlR3Jh
cGhpYzo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0
ZXJDb250ZXh0ID0gZWZmZWN0Q29udGV4dCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKaW5kZXggMjM3ODc5OC4uMjA2OWM2NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMu
aAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5o
CkBAIC0zNSw4ICszNSw2IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIGVmZmVjdE5hbWUoKTsKIAotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRldGVybWluZUZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXIqKTsKLQogICAgIHZpcnR1YWwgdm9pZCBhcHBseShG
aWx0ZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZHVtcCgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKaW5kZXggNGRjY2FkNi4uYzUwOTk0ZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisr
KyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgorI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR0ZpbHRlci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckVsZW1lbnQuaCIKQEAgLTE5MiwxMiAr
MTkzLDEzIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVu
ZGVyT2JqZWN0KiBvYmplY3QsIFJlbmRlclN0eWxlKiwKICAgICBpZiAoIWxhc3RFZmZlY3QpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBsYXN0RWZmZWN0LT5kZXRlcm1pbmVGaWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24oZmlsdGVyRGF0YS0+ZmlsdGVyLmdldCgpKTsKKyAgICBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKGxhc3RFZmZlY3QsIGZpbHRlckRhdGEtPmZpbHRlci5nZXQoKSk7CisgICAgRmxvYXRS
ZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QtPnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5hdGVz
KCk7CiAgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdl
IHNpemUsCiAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2Fs
ZSBmYWN0b3JzLgotICAgIGlmICghZml0c0luTWF4aW11bUltYWdlU2l6ZShmaWx0ZXJEYXRhLT5m
aWx0ZXItPm1heEltYWdlU2l6ZSgpLCBzY2FsZSkpIHsKKyAgICBpZiAoIWZpdHNJbk1heGltdW1J
bWFnZVNpemUoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7CiAgICAgICAgIGZpbHRlckRhdGEt
PmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7Ci0gICAgICAgIGxhc3RFZmZlY3Qt
PmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihmaWx0ZXJEYXRhLT5maWx0ZXIuZ2V0
KCkpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGxhc3RFZmZlY3QsIGZpbHRlckRhdGEtPmZpbHRlci5n
ZXQoKSk7CiAgICAgfQogCiAgICAgY2xpcHBlZFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lkdGgo
KSwgc2NhbGUuaGVpZ2h0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCmluZGV4IGY3MzgxZmEuLmQyMGRjNjkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZS5jcHAKQEAgLTMxLDkgKzMxLDc3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZmlsdGVyUHJp
bWl0aXZlRWxlbWVudCkKLSAgICA6IFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lcihmaWx0ZXJQcmlt
aXRpdmVFbGVtZW50KQorRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZlY3Qs
IEZpbHRlciogZmlsdGVyKQogeworICAgIGlmIChlZmZlY3QtPmlzU291cmNlSW5wdXQoKSkgewor
ICAgICAgICAvLyBGb3IgU291cmNlQWxwaGEgYW5kIFNvdXJjZUdyYXBoaWMKKyAgICAgICAgRmxv
YXRSZWN0IGNsaXBwZWRTb3VyY2VSZWN0ID0gZmlsdGVyLT5zb3VyY2VJbWFnZVJlY3QoKTsKKyAg
ICAgICAgaWYgKGZpbHRlci0+c291cmNlSW1hZ2VSZWN0KCkueCgpIDwgZmlsdGVyLT5maWx0ZXJS
ZWdpb24oKS54KCkpCisgICAgICAgICAgICBjbGlwcGVkU291cmNlUmVjdC5zZXRYKGZpbHRlci0+
ZmlsdGVyUmVnaW9uKCkueCgpKTsKKyAgICAgICAgaWYgKGZpbHRlci0+c291cmNlSW1hZ2VSZWN0
KCkueSgpIDwgZmlsdGVyLT5maWx0ZXJSZWdpb24oKS55KCkpCisgICAgICAgICAgICBjbGlwcGVk
U291cmNlUmVjdC5zZXRZKGZpbHRlci0+ZmlsdGVyUmVnaW9uKCkueSgpKTsKKyAgICAgICAgZWZm
ZWN0LT5zZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oY2xpcHBlZFNvdXJjZVJlY3QpOworICAg
ICAgICBjbGlwcGVkU291cmNlUmVjdC5zY2FsZShmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53
aWR0aCgpLCBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSk7CisgICAgICAgIGVm
ZmVjdC0+c2V0UmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoY2xpcHBlZFNvdXJjZVJlY3Qp
OworICAgICAgICByZXR1cm4gZmlsdGVyLT5maWx0ZXJSZWdpb24oKTsKKyAgICB9CisKKyAgICBG
bG9hdFJlY3QgdW5pdGVSZWN0OworICAgIEZsb2F0UmVjdCBzdWJSZWdpb25Cb3VuZGluZ0JveCA9
IGVmZmVjdC0+ZWZmZWN0Qm91bmRhcmllcygpOworICAgIEZsb2F0UmVjdCBuZXdTdWJSZWdpb24g
PSBzdWJSZWdpb25Cb3VuZGluZ0JveDsKKworICAgIGlmICghZWZmZWN0LT5pc1RpbGUoKSkgewor
ICAgICAgICAvLyBGRVR1cmJ1bGVuY2UsIEZFSW1hZ2UgYW5kIEZFRmxvb2QgZG9uJ3QgaGF2ZSBp
bnB1dCBlZmZlY3RzLCB0YWtlIHRoZSBmaWx0ZXIgcmVnaW9uIGFzIHVuaXRlIHJlY3QuCisgICAg
ICAgIGlmICh1bnNpZ25lZCBudW1iZXJPZklucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZl
Y3RzKCkuc2l6ZSgpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZJbnB1dEVmZmVjdHM7ICsraSkKKyAgICAgICAgICAgICAgICB1bml0ZVJlY3QudW5pdGUo
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSks
IGZpbHRlcikpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHVuaXRlUmVjdCA9IGZpbHRl
ci0+ZmlsdGVyUmVnaW9uKCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1dEVmZmVjdCgwKSwgZmlsdGVyKTsK
KyAgICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb24oKTsKKyAgICB9CisKKyAg
ICBpZiAoZmlsdGVyLT5lZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkgeworICAgICAgICBuZXdTdWJS
ZWdpb24gPSB1bml0ZVJlY3Q7CisgICAgICAgIC8vIEF2b2lkIHRoZSBjYWxsaW5nIG9mIGEgdmly
dHVhbCBtZXRob2Qgc2V2ZXJhbCB0aW1lcy4KKyAgICAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5k
aW5nQm94ID0gZmlsdGVyLT5zb3VyY2VJbWFnZVJlY3QoKTsKKworICAgICAgICBpZiAoZWZmZWN0
LT5oYXNYKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WCh0YXJnZXRCb3VuZGluZ0Jv
eC54KCkgKyBzdWJSZWdpb25Cb3VuZGluZ0JveC54KCkgKiB0YXJnZXRCb3VuZGluZ0JveC53aWR0
aCgpKTsKKworICAgICAgIGlmIChlZmZlY3QtPmhhc1koKSkKKyAgICAgICAgICAgIG5ld1N1YlJl
Z2lvbi5zZXRZKHRhcmdldEJvdW5kaW5nQm94LnkoKSArIHN1YlJlZ2lvbkJvdW5kaW5nQm94Lnko
KSAqIHRhcmdldEJvdW5kaW5nQm94LmhlaWdodCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT5o
YXNXaWR0aCgpKQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFdpZHRoKHN1YlJlZ2lvbkJv
dW5kaW5nQm94LndpZHRoKCkgKiB0YXJnZXRCb3VuZGluZ0JveC53aWR0aCgpKTsKKworICAgICAg
ICBpZiAoZWZmZWN0LT5oYXNIZWlnaHQoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRI
ZWlnaHQoc3ViUmVnaW9uQm91bmRpbmdCb3guaGVpZ2h0KCkgKiB0YXJnZXRCb3VuZGluZ0JveC5o
ZWlnaHQoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFlZmZlY3QtPmhhc1goKSkKKyAg
ICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRYKHVuaXRlUmVjdC54KCkpOworCisgICAgICAgIGlm
ICghZWZmZWN0LT5oYXNZKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WSh1bml0ZVJl
Y3QueSgpKTsKKworICAgICAgICBpZiAoIWVmZmVjdC0+aGFzV2lkdGgoKSkKKyAgICAgICAgICAg
IG5ld1N1YlJlZ2lvbi5zZXRXaWR0aCh1bml0ZVJlY3Qud2lkdGgoKSk7CisKKyAgICAgICAgaWYg
KCFlZmZlY3QtPmhhc0hlaWdodCgpKQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldEhlaWdo
dCh1bml0ZVJlY3QuaGVpZ2h0KCkpOworICAgIH0KKworICAgIC8vIGNsaXAgZXZlcnkgZmlsdGVy
IGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lvbgorICAgIG5ld1N1YlJlZ2lvbi5pbnRlcnNlY3Qo
ZmlsdGVyLT5maWx0ZXJSZWdpb24oKSk7CisKKyAgICBlZmZlY3QtPnNldEZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbihuZXdTdWJSZWdpb24pOworCisgICAgRmxvYXRSZWN0IHNjYWxlZFN1YlJlZ2lv
bihuZXdTdWJSZWdpb24pOworICAgIHNjYWxlZFN1YlJlZ2lvbi5zY2FsZShmaWx0ZXItPmZpbHRl
clJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQo
KSk7CisgICAgZWZmZWN0LT5zZXRSZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcyhzY2FsZWRT
dWJSZWdpb24pOworICAgIHJldHVybiBuZXdTdWJSZWdpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyUHJpbWl0aXZlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZS5oCmluZGV4IDRiMjM3MzcuLmE1ZDIyMDEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzYs
NyArMzYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZSA6IHB1YmxpYyBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIgewogcHVi
bGljOgotICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZmlsdGVyUHJpbWl0aXZlRWxlbWVudCk7CisgICAgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzKiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KQorICAgICAgICA6IFJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lcihmaWx0ZXJQcmltaXRpdmVFbGVtZW50KQorICAgIHsKKyAgICB9CisKKyAg
ICAvLyBUaGVzZSB0d28gYXJndW1lbnRzIGFyZSBkZXBlbmQgb24gdGhlIFJlbmRlck9iamVjdAor
ICAgIC8vIGFyZ3VtZW50IG9mIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNl
LgorICAgIHN0YXRpYyBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KEZpbHRlckVmZmVjdCogZWZmZWN0LCBGaWx0ZXIqIGZpbHRlcik7CiAKIHByaXZhdGU6CiAgICAg
dmlydHVhbCBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgeyByZXR1cm4gIlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlIjsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuY3BwCmluZGV4IGQ3MmRjM2QuLjU3MzNhZjAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAorKysgYi9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKQEAgLTMyLDUzICszMiw2IEBAIFNWR0ZpbHRl
cjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyCiB7CiB9CiAKLXZvaWQgU1ZHRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
dW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVnaW9ucykKLXsKLSAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uQkJveCA9IGVmZmVjdC0+ZWZmZWN0Qm91bmRhcmllcygpOwotICAgIEZsb2F0UmVjdCBu
ZXdTdWJSZWdpb24gPSBzdWJSZWdpb25CQm94OwotCi0gICAgaWYgKG1fZWZmZWN0QkJveE1vZGUp
IHsKLSAgICAgICAgbmV3U3ViUmVnaW9uID0gdW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVn
aW9uczsKLQotICAgICAgICBpZiAoZWZmZWN0LT5oYXNYKCkpCi0gICAgICAgICAgICBuZXdTdWJS
ZWdpb24uc2V0WChtX3RhcmdldEJvdW5kaW5nQm94LngoKSArIHN1YlJlZ2lvbkJCb3gueCgpICog
bV90YXJnZXRCb3VuZGluZ0JveC53aWR0aCgpKTsKLQotICAgICAgIGlmIChlZmZlY3QtPmhhc1ko
KSkKLSAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRZKG1fdGFyZ2V0Qm91bmRpbmdCb3gueSgp
ICsgc3ViUmVnaW9uQkJveC55KCkgKiBtX3RhcmdldEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLQot
ICAgICAgICBpZiAoZWZmZWN0LT5oYXNXaWR0aCgpKQotICAgICAgICAgICAgbmV3U3ViUmVnaW9u
LnNldFdpZHRoKHN1YlJlZ2lvbkJCb3gud2lkdGgoKSAqIG1fdGFyZ2V0Qm91bmRpbmdCb3gud2lk
dGgoKSk7Ci0KLSAgICAgICAgaWYgKGVmZmVjdC0+aGFzSGVpZ2h0KCkpCi0gICAgICAgICAgICBu
ZXdTdWJSZWdpb24uc2V0SGVpZ2h0KHN1YlJlZ2lvbkJCb3guaGVpZ2h0KCkgKiBtX3RhcmdldEJv
dW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWVmZmVjdC0+
aGFzWCgpKQotICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFgodW5pb25PZlByZXZpb3VzUHJp
bWl0aXZlU3VicmVnaW9ucy54KCkpOwotCi0gICAgICAgIGlmICghZWZmZWN0LT5oYXNZKCkpCi0g
ICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WSh1bmlvbk9mUHJldmlvdXNQcmltaXRpdmVTdWJy
ZWdpb25zLnkoKSk7Ci0KLSAgICAgICAgaWYgKCFlZmZlY3QtPmhhc1dpZHRoKCkpCi0gICAgICAg
ICAgICBuZXdTdWJSZWdpb24uc2V0V2lkdGgodW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVn
aW9ucy53aWR0aCgpKTsKLQotICAgICAgICBpZiAoIWVmZmVjdC0+aGFzSGVpZ2h0KCkpCi0gICAg
ICAgICAgICBuZXdTdWJSZWdpb24uc2V0SGVpZ2h0KHVuaW9uT2ZQcmV2aW91c1ByaW1pdGl2ZVN1
YnJlZ2lvbnMuaGVpZ2h0KCkpOwotICAgIH0KLQotICAgIC8vIGNsaXAgZXZlcnkgZmlsdGVyIGVm
ZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lvbgotICAgIG5ld1N1YlJlZ2lvbi5pbnRlcnNlY3QobV9m
aWx0ZXJSZWN0KTsKLQotICAgIGVmZmVjdC0+c2V0RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKG5l
d1N1YlJlZ2lvbik7Ci0gICAgCi0gICAgLy8gVE9ETzogRXZlcnl0aGluZyBhYm92ZSBzaG91bGQg
YmUgbW92ZWQgdG8gYSBmaXJzdCBwaGFzZSBvZiBsYXlvdXQgaW4gUmVuZGVyU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUuCi0gICAgLy8gVGhlIHNjYWxpbmcgb2YgdGhlIHN1YnJlZ2lvbiB0byB0
aGUgcmVwYWludCByZWN0IHNob3VsZCBiZSBtZXJnZWQgd2l0aCBhIG1vcmUgaW50ZWxsaWdlbnQg
cmVwYWludCBsb2dpYwotICAgIC8vIGFuZCBtb3ZlZCB0byB0aGUgc2Vjb25kIHBoYXNlIG9mIGxh
eW91dCBpbiBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS4KLSAgICAvLyBTZWUgYnVn
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTYxNC4KLSAgICBuZXdT
dWJSZWdpb24uc2NhbGUoZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlclJlc29sdXRp
b24oKS5oZWlnaHQoKSk7Ci0gICAgZWZmZWN0LT5zZXRSZXBhaW50UmVjdEluTG9jYWxDb29yZGlu
YXRlcyhuZXdTdWJSZWdpb24pOwotICAgIG1fbWF4SW1hZ2VTaXplID0gbV9tYXhJbWFnZVNpemUu
ZXhwYW5kZWRUbyhuZXdTdWJSZWdpb24uc2l6ZSgpKTsgCi19Ci0KIFBhc3NSZWZQdHI8U1ZHRmls
dGVyPiBTVkdGaWx0ZXI6OmNyZWF0ZShjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94
LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlY3QsIGJvb2wgZWZmZWN0QkJveE1vZGUpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGaWx0ZXIodGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRl
clJlY3QsIGVmZmVjdEJCb3hNb2RlKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5oIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuaAppbmRleCA2MzFmMWVlLi4xYTk3YzZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oCisrKyBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2Zp
bHRlcnMvU1ZHRmlsdGVyLmgKQEAgLTQyLDEzICs0Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KIAotICAgICAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBtYXhJbWFnZVNpemUoKSBjb25zdCB7IHJldHVybiBtX21heEltYWdlU2l6ZTsgfQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZp
bHRlckVmZmVjdCosIGNvbnN0IEZsb2F0UmVjdCYpOwotCiAgICAgcHJpdmF0ZToKICAgICAgICAg
U1ZHRmlsdGVyKGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0
UmVjdCYgZmlsdGVyUmVjdCwgYm9vbCBlZmZlY3RCQm94TW9kZSk7CiAKLSAgICAgICAgRmxvYXRT
aXplIG1fbWF4SW1hZ2VTaXplOwogICAgICAgICBGbG9hdFJlY3QgbV90YXJnZXRCb3VuZGluZ0Jv
eDsKICAgICAgICAgRmxvYXRSZWN0IG1fZmlsdGVyUmVjdDsKICAgICAgICAgYm9vbCBtX2VmZmVj
dEJCb3hNb2RlOwotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="59508"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71283</attachid>
            <date>2010-10-20 06:32:48 -0700</date>
            <delta_ts>2010-10-22 01:01:38 -0700</delta_ts>
            <desc>patch 2</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>18394</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAzZjU5ZWQwNDA0ODlmODBkNTE4YTEwZGJjOWRmNzEzNzlhNmFjN2U4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBXZWQsIDIwIE9jdCAyMDEwIDE1OjMwOjA1ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzMSArKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwICAgICAgIHwgICAgOCAtLQogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggICAgICAgICB8ICAgIDQgLQogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgfCAgIDE3IC0tLS0t
CiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggICB8ICAg
IDMgLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvSW1hZ2VCdWZmZXJGaWx0ZXIuaCAg
fCAgICAxIC0KIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCAg
ICAgIHwgICAxMyArKy0tCiAuLi4vcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmNwcCB8ICAgNjkgKysrKysrKysrKysrKysrKysrKy0KIC4uLi9yZW5kZXJpbmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCAgIHwgICAxMSArKystCiBXZWJDb3JlL3N2
Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAgICAgICAgICB8ICAgNTggLS0tLS0tLS0t
LS0tLS0tLQogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCAgICAgICAg
ICAgfCAgICA2ICstCiAxMiBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9ucygrKSwgMTA2IGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMTk1ZDdkOS4uMDUzMDMzOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0xMC0yMCAg
Wm9sdGFuIEhlcmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmluZyBhbGwgYm91bmRpbmcgYm94IHJl
bGF0ZWQgY2FsY3VsYXRpb24gdG8gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTc0CisKKyAg
ICAgICAgVGhlIHByaW1pdGl2ZSBzdWItcmVnaW9uIGNhbGN1bGF0aW9uIHdhcyBzcHJlYWQgaW4g
bWFueQorICAgICAgICBmaWxlcyBhY3Jvc3MgaW4gV2ViS2l0IHNvdXJjZSBjb2RlLCBhbmQgYWxs
IG9mIHRoZW0gYXJlIG1vdmVkCisgICAgICAgIHRvIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLCB3aGVyZSB0aGV5IHNob3VsZCBiZS4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCB0aGUg
Y2FsY3VsYXRpb24gaXMgYSBzdGF0aWMgbWV0aG9kIHdoaWNoIHdpbGwKKyAgICAgICAgYmUgdHVy
bmVkIHRvIGEgcmVhbCBtZW1iZXIgZnVuY3Rpb24gaW4gdGhlIG5lYXIgZnV0dXJlLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpGRVRp
bGU6OmZpbHRlckVmZmVjdFR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJF
ZmZlY3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9JbWFnZUJ1ZmZlckZp
bHRlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJj
ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVy
UHJpbWl0aXZlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
OgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRmlsdGVyOjptYXBMb2NhbFJlY3RUb0Fic29sdXRlUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGaWx0ZXI6OnRhcmdldEJvdW5kaW5nQm94KToKKwogMjAxMC0xMC0xOSAg
WW9uZ2p1biBaaGFuZyAgPHlvbmdqdW5femhhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVRpbGUuY3BwCmluZGV4IDU5OGZlOWUuLjc5NmQ1MGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC00MSwxNCArNDEsNiBAQCBQYXNzUmVm
UHRyPEZFVGlsZT4gRkVUaWxlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVU
aWxlKTsKIH0KIAotRmxvYXRSZWN0IEZFVGlsZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKEZpbHRlciogZmlsdGVyKQotewotICAgIGlucHV0RWZmZWN0KDApLT5kZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZmlsdGVyKTsKLQotICAgIGZpbHRlci0+ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKHRoaXMsIGZpbHRlci0+ZmlsdGVyUmVnaW9uSW5Vc2Vy
U3BhY2UoKSk7Ci0gICAgcmV0dXJuIGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOwotfQotCiB2
b2lkIEZFVGlsZTo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiB7CiAvLyBGSVhNRTogU2VlIGJ1ZyA0
NzMxNS4gVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgYSBjb21waWxlIGZhaWx1cmUsIGJ1
dCBpcyBpbmNvcnJlY3QgYmVoYXZpb3Igb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5oCmluZGV4IDg1NjJjOTAuLjVmMjE0MzMgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKQEAgLTM3LDEwICszNywxMCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoRmls
dGVyKikgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChtYXhFZmZlY3RSZWN0KCkpOyB9CiAKKyAgICB2
aXJ0dWFsIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJu
IEZpbHRlckVmZmVjdFR5cGVUaWxlOyB9CisKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVy
bmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0OwogCi0g
ICAgdmlydHVhbCBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZp
bHRlciopOwotICAgIAogcHJpdmF0ZToKICAgICBGRVRpbGUoKTsKIH07CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXggMTIxZTM4OS4uMzNjZjcyNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtNTIsMTIgKzUy
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCBGbG9h
dFBvaW50IG1hcEFic29sdXRlUG9pbnRUb0xvY2FsUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNv
bnN0IHsgcmV0dXJuIEZsb2F0UG9pbnQoKTsgfQogCi0gICAgICAgIC8vIFNWRyBzcGVjaWZpYwot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZp
bHRlckVmZmVjdCosIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQotICAgICAgICAKICAgICAgICAgdmly
dHVhbCBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBjb25zdCB7IHJldHVybiBG
bG9hdFJlY3QoKTsgfQogCi0gICAgICAgIHZpcnR1YWwgRmxvYXRTaXplIG1heEltYWdlU2l6ZSgp
IGNvbnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGVmZmVjdEJvdW5kaW5nQm94TW9kZSgp
IGNvbnN0ID0gMDsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IGI2YzdlMTguLjE2MWEwYzIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwCkBAIC0zOSwyMyArMzksNiBAQCBGaWx0ZXJFZmZlY3Q6On5GaWx0ZXJFZmZlY3QoKQogewog
fQogCi1GbG9hdFJlY3QgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJy
ZWdpb24oRmlsdGVyKiBmaWx0ZXIpCi17Ci0gICAgRmxvYXRSZWN0IHVuaXRlUmVjdDsKLSAgICB1
bnNpZ25lZCBzaXplID0gbV9pbnB1dEVmZmVjdHMuc2l6ZSgpOwotCi0gICAgLy8gRkVUdXJidWxl
bmNlLCBGRUltYWdlIGFuZCBGRUZsb29kIGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0cywgdGFrZSB0
aGUgZmlsdGVyIHJlZ2lvbiBhcyB1bml0ZSByZWN0LgotICAgIGlmICghc2l6ZSkKLSAgICAgICAg
dW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpOwotICAgIGVsc2Ug
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAg
ICAgdW5pdGVSZWN0LnVuaXRlKG1faW5wdXRFZmZlY3RzLmF0KGkpLT5kZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oZmlsdGVyKSk7Ci0gICAgfQotCi0gICAgZmlsdGVyLT5kZXRlcm1p
bmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24odGhpcywgdW5pdGVSZWN0KTsKLSAgICByZXR1cm4g
bV9maWx0ZXJQcmltaXRpdmVTdWJyZWdpb247Ci19Ci0KIHZvaWQgRmlsdGVyRWZmZWN0OjpkZXRl
cm1pbmVBYnNvbHV0ZVBhaW50UmVjdChGaWx0ZXIqKQogewogICAgIG1fYWJzb2x1dGVQYWludFJl
Y3QgPSBJbnRSZWN0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRWZmZWN0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggYTYxNGI1OS4uMjVkYjU3YiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtOTksOSArOTksNiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBoYXNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hhc0hlaWdo
dDsgfQogICAgIHZvaWQgc2V0SGFzSGVpZ2h0KGJvb2wgdmFsdWUpIHsgbV9oYXNIZWlnaHQgPSB2
YWx1ZTsgfQogCi0gICAgLy8gRklYTUU6IEZFVGlsZSBzdGlsbCBuZWVkcyBzcGVjaWFsIGhhbmRs
aW5nLgotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJl
Z2lvbihGaWx0ZXIqKTsKLQogICAgIEZsb2F0UmVjdCBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24o
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbjsgfQogICAgIHZvaWQg
c2V0RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKSB7IG1fZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uID0gZmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9JbWFnZUJ1ZmZlckZpbHRlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVyLmgKaW5kZXggNWEzNzIxNC4uMTEyYWVhYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmlsdGVy
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ltYWdlQnVmZmVyRmls
dGVyLmgKQEAgLTQzLDcgKzQzLDYgQEAgcHVibGljOgogICAgIC8vIFNWRyBzcGVjaWZpYwogICAg
IHZpcnR1YWwgYm9vbCBlZmZlY3RCb3VuZGluZ0JveE1vZGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogCi0gICAgdmlydHVhbCBGbG9hdFNpemUgbWF4SW1hZ2VTaXplKCkgY29uc3QgeyByZXR1
cm4gRmxvYXRTaXplKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRWZmZWN0U3ViUmVn
aW9uKEZpbHRlckVmZmVjdCopIHsgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IGE4Zjc4NWIuLmZhY2MzODkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlclByaW1pdGl2ZS5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJT
VkdGaWx0ZXIuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJFbGVtZW50LmgiCkBAIC0yMDUsMTMgKzIw
NiwxMyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBSZW5kZXJTdHlsZSosCiAgICAgaWYgKCFsYXN0RWZmZWN0KQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBEZXRlcm1pbmUgdGhlIGZpbHRlciBwcmltaXRp
dmUgc3VicmVnaW9ucyBvZiBldmVyeSBlZmZlY3QuCi0gICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGZpbHRlckRhdGEtPmZpbHRlci5nZXQoKSk7Ci0gICAg
aWYgKCFmaXRzSW5NYXhpbXVtSW1hZ2VTaXplKGZpbHRlckRhdGEtPmZpbHRlci0+bWF4SW1hZ2VT
aXplKCksIHNjYWxlKSkgewotICAgICAgICAvLyBBdCBsZWFzdCBvbmUgRmlsdGVyRWZmZWN0IGhh
cyBhIHRvbyBiaWcgaW1hZ2Ugc2l6ZSwKLSAgICAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVmZmVj
dCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3IuCisgICAgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXJQcmltaXRpdmU6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihsYXN0RWZmZWN0
LCBmaWx0ZXJEYXRhLT5maWx0ZXIuZ2V0KCkpOworICAgIEZsb2F0UmVjdCBzdWJSZWdpb24gPSBs
YXN0RWZmZWN0LT5tYXhFZmZlY3RSZWN0KCk7CisgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVm
ZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCisgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVm
ZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgorICAgIGlmICghZml0c0luTWF4aW11
bUltYWdlU2l6ZShzdWJSZWdpb24uc2l6ZSgpLCBzY2FsZSkpIHsKICAgICAgICAgZmlsdGVyRGF0
YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNjYWxlKTsKLSAgICAgICAgbGFzdEVmZmVj
dC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGZpbHRlckRhdGEtPmZpbHRlci5n
ZXQoKSk7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1p
bmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCwgZmlsdGVyRGF0YS0+ZmlsdGVy
LmdldCgpKTsKICAgICB9CiAKICAgICAvLyBJZiB0aGUgZHJhd2luZ1JlZ2lvbiBpcyBlbXB0eSwg
d2UgaGF2ZSBzb21ldGhpbmcgbGlrZSA8ZyBmaWx0ZXI9Ii4uIi8+LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3BwCmluZGV4
IGY3MzgxZmEuLmJjNmViMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5jcHAKQEAgLTI4LDEyICsyOCw3NyBAQAogCiAj
aWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJTFRFUlMpCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKKyNpbmNsdWRlICJTVkdGRUltYWdlLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcyogZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKLSAgICA6IFJlbmRlclNWR0hpZGRlbkNv
bnRhaW5lcihmaWx0ZXJQcmltaXRpdmVFbGVtZW50KQorRmxvYXRSZWN0IFJlbmRlclNWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmls
dGVyRWZmZWN0KiBlZmZlY3QsIFNWR0ZpbHRlciogZmlsdGVyKQogeworICAgIEZsb2F0UmVjdCB1
bml0ZVJlY3Q7CisgICAgRmxvYXRSZWN0IHN1YlJlZ2lvbkJvdW5kaW5nQm94ID0gZWZmZWN0LT5l
ZmZlY3RCb3VuZGFyaWVzKCk7CisgICAgRmxvYXRSZWN0IG5ld1N1YlJlZ2lvbiA9IHN1YlJlZ2lv
bkJvdW5kaW5nQm94OworCisgICAgaWYgKGVmZmVjdC0+ZmlsdGVyRWZmZWN0VHlwZSgpICE9IEZp
bHRlckVmZmVjdFR5cGVUaWxlKSB7CisgICAgICAgIC8vIEZFVHVyYnVsZW5jZSwgRkVJbWFnZSBh
bmQgRkVGbG9vZCBkb24ndCBoYXZlIGlucHV0IGVmZmVjdHMsIHRha2UgdGhlIGZpbHRlciByZWdp
b24gYXMgdW5pdGUgcmVjdC4KKyAgICAgICAgaWYgKHVuc2lnbmVkIG51bWJlck9mSW5wdXRFZmZl
Y3RzID0gZWZmZWN0LT5pbnB1dEVmZmVjdHMoKS5zaXplKCkpIHsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZklucHV0RWZmZWN0czsgKytpKQorICAgICAgICAg
ICAgICAgIHVuaXRlUmVjdC51bml0ZShkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24o
ZWZmZWN0LT5pbnB1dEVmZmVjdChpKSwgZmlsdGVyKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpOworICAg
IH0KKyAgICBlbHNlIHsKKyAgICAgICAgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KGVmZmVjdC0+aW5wdXRFZmZlY3QoMCksIGZpbHRlcik7CisgICAgICAgIHVuaXRlUmVjdCA9IGZp
bHRlci0+ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsKKyAgICB9CisKKyAgICBpZiAoZmlsdGVy
LT5lZmZlY3RCb3VuZGluZ0JveE1vZGUoKSkgeworICAgICAgICBuZXdTdWJSZWdpb24gPSB1bml0
ZVJlY3Q7CisgICAgICAgIC8vIEF2b2lkIHRoZSBjYWxsaW5nIG9mIGEgdmlydHVhbCBtZXRob2Qg
c2V2ZXJhbCB0aW1lcy4KKyAgICAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94ID0gZmls
dGVyLT50YXJnZXRCb3VuZGluZ0JveCgpOworCisgICAgICAgIGlmIChlZmZlY3QtPmhhc1goKSkK
KyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRYKHRhcmdldEJvdW5kaW5nQm94LngoKSArIHN1
YlJlZ2lvbkJvdW5kaW5nQm94LngoKSAqIHRhcmdldEJvdW5kaW5nQm94LndpZHRoKCkpOworCisg
ICAgICAgIGlmIChlZmZlY3QtPmhhc1koKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRZ
KHRhcmdldEJvdW5kaW5nQm94LnkoKSArIHN1YlJlZ2lvbkJvdW5kaW5nQm94LnkoKSAqIHRhcmdl
dEJvdW5kaW5nQm94LmhlaWdodCgpKTsKKworICAgICAgICBpZiAoZWZmZWN0LT5oYXNXaWR0aCgp
KQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFdpZHRoKHN1YlJlZ2lvbkJvdW5kaW5nQm94
LndpZHRoKCkgKiB0YXJnZXRCb3VuZGluZ0JveC53aWR0aCgpKTsKKworICAgICAgICBpZiAoZWZm
ZWN0LT5oYXNIZWlnaHQoKSkKKyAgICAgICAgICAgIG5ld1N1YlJlZ2lvbi5zZXRIZWlnaHQoc3Vi
UmVnaW9uQm91bmRpbmdCb3guaGVpZ2h0KCkgKiB0YXJnZXRCb3VuZGluZ0JveC5oZWlnaHQoKSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFlZmZlY3QtPmhhc1goKSkKKyAgICAgICAgICAg
IG5ld1N1YlJlZ2lvbi5zZXRYKHVuaXRlUmVjdC54KCkpOworCisgICAgICAgIGlmICghZWZmZWN0
LT5oYXNZKCkpCisgICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WSh1bml0ZVJlY3QueSgpKTsK
KworICAgICAgICBpZiAoIWVmZmVjdC0+aGFzV2lkdGgoKSkKKyAgICAgICAgICAgIG5ld1N1YlJl
Z2lvbi5zZXRXaWR0aCh1bml0ZVJlY3Qud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKCFlZmZlY3Qt
Pmhhc0hlaWdodCgpKQorICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldEhlaWdodCh1bml0ZVJl
Y3QuaGVpZ2h0KCkpOworICAgIH0KKworICAgIGVmZmVjdC0+c2V0RmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uKG5ld1N1YlJlZ2lvbik7CisKKyAgICBGbG9hdFJlY3QgYWJzb2x1dGVTdWJSZWdpb24g
PSBmaWx0ZXItPm1hcExvY2FsUmVjdFRvQWJzb2x1dGVSZWN0KG5ld1N1YlJlZ2lvbik7CisgICAg
RmxvYXRTaXplIGZpbHRlclJlc29sdXRpb24gPSBmaWx0ZXItPmZpbHRlclJlc29sdXRpb24oKTsK
KyAgICBhYnNvbHV0ZVN1YlJlZ2lvbi5zY2FsZShmaWx0ZXJSZXNvbHV0aW9uLndpZHRoKCksIGZp
bHRlclJlc29sdXRpb24uaGVpZ2h0KCkpOworCisgICAgLy8gRkVJbWFnZSBuZWVkcyB0aGUgdW5j
bGlwcGVkIHN1YnJlZ2lvbiBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcyB0byBkZXRlcm1pbmUgdGhl
IGNvcnJlY3QKKyAgICAvLyBkZXN0aW5hdGlvbiByZWN0IGluIGNvbWJpbmF0aW9uIHdpdGggcHJl
c2VydmVBc3BlY3RSYXRpby4KKyAgICBpZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgPT0g
RmlsdGVyRWZmZWN0VHlwZUltYWdlKQorICAgICAgICByZWludGVycHJldF9jYXN0PEZFSW1hZ2Uq
PihlZmZlY3QpLT5zZXRBYnNvbHV0ZVN1YnJlZ2lvbihhYnNvbHV0ZVN1YlJlZ2lvbik7CisKKyAg
ICAvLyBDbGlwIGV2ZXJ5IGZpbHRlciBlZmZlY3QgdG8gdGhlIGZpbHRlciByZWdpb24uCisgICAg
RmxvYXRSZWN0IGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gZmlsdGVyLT5maWx0ZXJSZWdp
b24oKTsKKyAgICBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbi5zY2FsZShmaWx0ZXJSZXNvbHV0
aW9uLndpZHRoKCksIGZpbHRlclJlc29sdXRpb24uaGVpZ2h0KCkpOworICAgIGFic29sdXRlU3Vi
UmVnaW9uLmludGVyc2VjdChhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbik7CisKKyAgICBlZmZl
Y3QtPnNldE1heEVmZmVjdFJlY3QoZW5jbG9zaW5nSW50UmVjdChhYnNvbHV0ZVN1YlJlZ2lvbikp
OworICAgIHJldHVybiBuZXdTdWJSZWdpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZS5oCmluZGV4IGIwNTQyMDMuLjJkMDczOWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaApAQCAtMzEsMTIgKzMxLDIx
IEBACiAKICNpbmNsdWRlICJSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCIKICNpbmNsdWRlICJT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCIKKyNpbmNsdWRlICJTVkdGaWx0
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZSA6IHB1YmxpYyBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIgewogcHVibGlj
OgotICAgIGV4cGxpY2l0IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyogZmlsdGVyUHJpbWl0aXZlRWxlbWVudCk7CisK
KyAgICBleHBsaWNpdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZShTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpCisgICAg
ICAgIDogUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyKGZpbHRlclByaW1pdGl2ZUVsZW1lbnQpCisg
ICAgeworICAgIH0KKworICAgIC8vIFRoZXNlIHR3byBhcmd1bWVudHMgYXJlIGRlcGVuZCBvbiB0
aGUgUmVuZGVyT2JqZWN0CisgICAgLy8gYXJndW1lbnQgb2YgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OmFwcGx5UmVzb3VyY2UuCisgICAgc3RhdGljIEZsb2F0UmVjdCBkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZmZWN0KiBlZmZlY3QsIFNWR0ZpbHRlciogZmlsdGVy
KTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25z
dCB7IHJldHVybiAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUiOyB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAgYi9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKaW5kZXggZGZkY2NkNy4uMmU2NGVm
OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CisrKyBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMzgs
NjQgKzM4LDYgQEAgU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JgogICAgIG1fYWJzb2x1dGVGaWx0ZXJS
ZWdpb24gPSBhYnNvbHV0ZVRyYW5zZm9ybS5tYXBSZWN0KGZpbHRlclJlZ2lvbik7CiB9CiAKLXZv
aWQgU1ZHRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVyRWZm
ZWN0KiBlZmZlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3Vi
cmVnaW9ucykKLXsKLSAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uQkJveCA9IGVmZmVjdC0+ZWZmZWN0
Qm91bmRhcmllcygpOwotICAgIEZsb2F0UmVjdCBuZXdTdWJSZWdpb24gPSBzdWJSZWdpb25CQm94
OwotCi0gICAgaWYgKG1fZWZmZWN0QkJveE1vZGUpIHsKLSAgICAgICAgbmV3U3ViUmVnaW9uID0g
dW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVnaW9uczsKLQotICAgICAgICBpZiAoZWZmZWN0
LT5oYXNYKCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WChtX3RhcmdldEJvdW5kaW5n
Qm94LngoKSArIHN1YlJlZ2lvbkJCb3gueCgpICogbV90YXJnZXRCb3VuZGluZ0JveC53aWR0aCgp
KTsKLQotICAgICAgIGlmIChlZmZlY3QtPmhhc1koKSkKLSAgICAgICAgICAgIG5ld1N1YlJlZ2lv
bi5zZXRZKG1fdGFyZ2V0Qm91bmRpbmdCb3gueSgpICsgc3ViUmVnaW9uQkJveC55KCkgKiBtX3Rh
cmdldEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLQotICAgICAgICBpZiAoZWZmZWN0LT5oYXNXaWR0
aCgpKQotICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFdpZHRoKHN1YlJlZ2lvbkJCb3gud2lk
dGgoKSAqIG1fdGFyZ2V0Qm91bmRpbmdCb3gud2lkdGgoKSk7Ci0KLSAgICAgICAgaWYgKGVmZmVj
dC0+aGFzSGVpZ2h0KCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0SGVpZ2h0KHN1YlJl
Z2lvbkJCb3guaGVpZ2h0KCkgKiBtX3RhcmdldEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBpZiAoIWVmZmVjdC0+aGFzWCgpKQotICAgICAgICAgICAgbmV3U3Vi
UmVnaW9uLnNldFgodW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVnaW9ucy54KCkpOwotCi0g
ICAgICAgIGlmICghZWZmZWN0LT5oYXNZKCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0
WSh1bmlvbk9mUHJldmlvdXNQcmltaXRpdmVTdWJyZWdpb25zLnkoKSk7Ci0KLSAgICAgICAgaWYg
KCFlZmZlY3QtPmhhc1dpZHRoKCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0V2lkdGgo
dW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVnaW9ucy53aWR0aCgpKTsKLQotICAgICAgICBp
ZiAoIWVmZmVjdC0+aGFzSGVpZ2h0KCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0SGVp
Z2h0KHVuaW9uT2ZQcmV2aW91c1ByaW1pdGl2ZVN1YnJlZ2lvbnMuaGVpZ2h0KCkpOwotICAgIH0K
LQotICAgIGVmZmVjdC0+c2V0RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKG5ld1N1YlJlZ2lvbik7
Ci0gICAgLy8gVE9ETzogRXZlcnl0aGluZyBhYm92ZSBzaG91bGQgYmUgbW92ZWQgdG8gYSBmaXJz
dCBwaGFzZSBvZiBsYXlvdXQgaW4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuCi0g
ICAgLy8gVGhlIHNjYWxpbmcgb2YgdGhlIHN1YnJlZ2lvbiB0byB0aGUgcmVwYWludCByZWN0IHNo
b3VsZCBiZSBtZXJnZWQgd2l0aCBhIG1vcmUgaW50ZWxsaWdlbnQgcmVwYWludCBsb2dpYwotICAg
IC8vIGFuZCBtb3ZlZCB0byB0aGUgc2Vjb25kIHBoYXNlIG9mIGxheW91dCBpbiBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZS4KLSAgICAvLyBTZWUgYnVnIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTYxNC4KLSAgICBuZXdTdWJSZWdpb24gPSBtX2Fic29s
dXRlVHJhbnNmb3JtLm1hcFJlY3QobmV3U3ViUmVnaW9uKTsKLSAgICBuZXdTdWJSZWdpb24uc2Nh
bGUoZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQo
KSk7Ci0KLSAgICAvLyBGRUltYWdlIG5lZWRzIHRoZSB1bmNsaXBwZWQgc3VicmVnaW9uIGluIGFi
c29sdXRlIGNvb3JkaW5hdGVzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdAotICAgIC8vIGRlc3Rp
bmF0aW9uIHJlY3QgaW4gY29tYmluYXRpb24gd2l0aCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLgotICAg
IGlmIChlZmZlY3QtPmZpbHRlckVmZmVjdFR5cGUoKSA9PSBGaWx0ZXJFZmZlY3RUeXBlSW1hZ2Up
IHsKLSAgICAgICAgRkVJbWFnZSogaW1hZ2VFZmZlY3QgPSBzdGF0aWNfY2FzdDxGRUltYWdlKj4o
ZWZmZWN0KTsKLSAgICAgICAgaW1hZ2VFZmZlY3QtPnNldEFic29sdXRlU3VicmVnaW9uKG5ld1N1
YlJlZ2lvbik7Ci0gICAgfQotCi0gICAgLy8gQ2xpcCBldmVyeSBmaWx0ZXIgZWZmZWN0IHRvIHRo
ZSBmaWx0ZXIgcmVnaW9uLgotICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lv
biA9IG1fYWJzb2x1dGVGaWx0ZXJSZWdpb247Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdp
b24uc2NhbGUoZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlclJlc29sdXRpb24oKS5o
ZWlnaHQoKSk7Ci0gICAgbmV3U3ViUmVnaW9uLmludGVyc2VjdChhYnNvbHV0ZVNjYWxlZEZpbHRl
clJlZ2lvbik7Ci0KLSAgICBlZmZlY3QtPnNldE1heEVmZmVjdFJlY3QoZW5jbG9zaW5nSW50UmVj
dChuZXdTdWJSZWdpb24pKTsKLSAgICBpZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkgIT0g
RmlsdGVyRWZmZWN0VHlwZVNvdXJjZUlucHV0KQotICAgICAgICBtX21heEltYWdlU2l6ZSA9IG1f
bWF4SW1hZ2VTaXplLmV4cGFuZGVkVG8obmV3U3ViUmVnaW9uLnNpemUoKSk7IAotfQotCiBmbG9h
dCBTVkdGaWx0ZXI6OmFwcGx5SG9yaXpvbnRhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdAogewog
ICAgIGlmIChtX2VmZmVjdEJCb3hNb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RmlsdGVyLmgKaW5kZXggMWIxOWU5Zi4uNjQ2NWY5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAorKysgYi9XZWJDb3JlL3N2Zy9ncmFwaGljcy9m
aWx0ZXJzL1NWR0ZpbHRlci5oCkBAIC00MywxNCArNDMsMTMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVGaWx0
ZXJSZWdpb247IH0KIAogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50VG9M
b2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVybiBtX2Fic29s
dXRlVHJhbnNmb3JtLmludmVyc2UoKS5tYXBQb2ludChwb2ludCk7IH0KKyAgICBGbG9hdFJlY3Qg
bWFwTG9jYWxSZWN0VG9BYnNvbHV0ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdCB7
IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QocmVjdCk7IH0KIAogICAgIHZpcnR1
YWwgZmxvYXQgYXBwbHlIb3Jpem9udGFsU2NhbGUoZmxvYXQgdmFsdWUpIGNvbnN0OwogICAgIHZp
cnR1YWwgZmxvYXQgYXBwbHlWZXJ0aWNhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYWJz
b2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9Ci0gICAgCi0gICAgdmlydHVhbCBGbG9hdFNpemUg
bWF4SW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhJbWFnZVNpemU7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCos
IGNvbnN0IEZsb2F0UmVjdCYpOworICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgpIGNv
bnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KIAogcHJpdmF0ZToKICAgICBTVkdG
aWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxv
YXRSZWN0JiBhYnNvbHV0ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVj
dEJCb3hNb2RlKTsKQEAgLTYxLDcgKzYwLDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9h
YnNvbHV0ZUZpbHRlclJlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAgICAg
Ym9vbCBtX2VmZmVjdEJCb3hNb2RlOwotICAgIEZsb2F0U2l6ZSBtX21heEltYWdlU2l6ZTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="61308"
          type_id="1"
          status="-"
          setter="krit"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71533</attachid>
            <date>2010-10-22 01:01:38 -0700</date>
            <delta_ts>2010-10-22 01:25:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-filter-renderer.patch</filename>
            <type>text/plain</type>
            <size>17998</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA2NDYyMWMwNWQyOTZjOWQzMTJiNDU1YTY5ODc5MWJjNTIwOTYwM2UwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBGcmksIDIyIE9jdCAyMDEwIDA4OjM4OjAzICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gZmlsdGVyLXJlbmRlcmVyCgpTaWduZWQgb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6
ZWdAaW5mLnUtc3plZ2VkLmh1PgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAzMCArKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwICAgICAgIHwgICAgOCAtLQogV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggICAgICAgICB8ICAgIDQgLQogV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAgfCAgIDE3IC0tLS0t
CiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmggICB8ICAg
IDMgLQogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwICAgICAg
fCAgIDEzICsrLS0KIC4uLi9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmUuY3BwIHwgICA2OCArKysrKysrKysrKysrKysrKysrLQogLi4uL3JlbmRlcmluZy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oICAgfCAgIDEwICsrKy0KIFdlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcCAgICAgICAgIHwgICA2MCAtLS0tLS0tLS0tLS0t
LS0tLQogV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCAgICAgICAgICAg
fCAgICA2ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0
aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMTU1OTc3Yy4uOWFlM2RmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMC0yMSAgWm9s
dGFuIEhlcmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmluZyBhbGwgYm91bmRpbmcgYm94IHJlbGF0
ZWQgY2FsY3VsYXRpb24gdG8gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MTc0CisKKyAgICAg
ICAgVGhlIHByaW1pdGl2ZSBzdWItcmVnaW9uIGNhbGN1bGF0aW9uIHdhcyBzcHJlYWQgaW4gbWFu
eQorICAgICAgICBmaWxlcyBhY3Jvc3MgaW4gV2ViS2l0IHNvdXJjZSBjb2RlLCBhbmQgYWxsIG9m
IHRoZW0gYXJlIG1vdmVkCisgICAgICAgIHRvIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0
aXZlLCB3aGVyZSB0aGV5IHNob3VsZCBiZS4KKyAgICAgICAgSW4gdGhpcyBwYXRjaCB0aGUgY2Fs
Y3VsYXRpb24gaXMgYSBzdGF0aWMgbWV0aG9kIHdoaWNoIHdpbGwKKyAgICAgICAgYmUgdHVybmVk
IHRvIGEgcmVhbCBtZW1iZXIgZnVuY3Rpb24gaW4gdGhlIG5lYXIgZnV0dXJlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6
OmZpbHRlckVmZmVjdFR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmU6OmRl
dGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUpOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6Cisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGaWx0ZXI6Om1hcExvY2FsUmVjdFRvQWJzb2x1dGVSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlcjo6dGFyZ2V0Qm91bmRpbmdCb3gpOgorCiAyMDEwLTEwLTIxICBLd2Fu
ZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
S2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVUaWxlLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwCmluZGV4IGE2OTVkM2IuLjU3MTYwZWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwCkBAIC00MSwxNCArNDEsNiBAQCBQYXNzUmVmUHRyPEZFVGls
ZT4gRkVUaWxlOjpjcmVhdGUoKQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgRkVUaWxlKTsKIH0K
IAotRmxvYXRSZWN0IEZFVGlsZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZp
bHRlciogZmlsdGVyKQotewotICAgIGlucHV0RWZmZWN0KDApLT5kZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oZmlsdGVyKTsKLQotICAgIGZpbHRlci0+ZGV0ZXJtaW5lRmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uKHRoaXMsIGZpbHRlci0+ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSk7
Ci0gICAgcmV0dXJuIGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOwotfQotCiB2b2lkIEZFVGls
ZTo6YXBwbHkoRmlsdGVyKiBmaWx0ZXIpCiB7CiAvLyBGSVhNRTogU2VlIGJ1ZyA0NzMxNS4gVGhp
cyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgYSBjb21waWxlIGZhaWx1cmUsIGJ1dCBpcyBpbmNv
cnJlY3QgYmVoYXZpb3Igb3RoZXJ3aXNlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5oCmluZGV4IDg1NjJjOTAuLjVmMjE0MzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmgKQEAgLTM3LDEwICszNywxMCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoRmlsdGVyKikgeyBz
ZXRBYnNvbHV0ZVBhaW50UmVjdChtYXhFZmZlY3RSZWN0KCkpOyB9CiAKKyAgICB2aXJ0dWFsIEZp
bHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIEZpbHRlckVm
ZmVjdFR5cGVUaWxlOyB9CisKICAgICB2aXJ0dWFsIFRleHRTdHJlYW0mIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24oVGV4dFN0cmVhbSYsIGludCBpbmRlbnRpb24pIGNvbnN0OwogCi0gICAgdmlydHVh
bCBGbG9hdFJlY3QgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlciopOwot
ICAgIAogcHJpdmF0ZToKICAgICBGRVRpbGUoKTsKIH07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyLmgKaW5kZXggMTIxZTM4OS4uMzNjZjcyNCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaApAQCAtNTIsMTIgKzUyLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCBGbG9hdFBvaW50IG1h
cEFic29sdXRlUG9pbnRUb0xvY2FsUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0IHsgcmV0
dXJuIEZsb2F0UG9pbnQoKTsgfQogCi0gICAgICAgIC8vIFNWRyBzcGVjaWZpYwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVj
dCosIGNvbnN0IEZsb2F0UmVjdCYpIHsgfQotICAgICAgICAKICAgICAgICAgdmlydHVhbCBGbG9h
dFJlY3QgZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBjb25zdCB7IHJldHVybiBGbG9hdFJlY3Qo
KTsgfQogCi0gICAgICAgIHZpcnR1YWwgRmxvYXRTaXplIG1heEltYWdlU2l6ZSgpIGNvbnN0ID0g
MDsKICAgICAgICAgdmlydHVhbCBib29sIGVmZmVjdEJvdW5kaW5nQm94TW9kZSgpIGNvbnN0ID0g
MDsKIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJFZmZlY3QuY3BwCmluZGV4IDEyMWI5MjEuLmFkMzUxYTUgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCkBAIC0z
OSwyMyArMzksNiBAQCBGaWx0ZXJFZmZlY3Q6On5GaWx0ZXJFZmZlY3QoKQogewogfQogCi1GbG9h
dFJlY3QgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmls
dGVyKiBmaWx0ZXIpCi17Ci0gICAgRmxvYXRSZWN0IHVuaXRlUmVjdDsKLSAgICB1bnNpZ25lZCBz
aXplID0gbV9pbnB1dEVmZmVjdHMuc2l6ZSgpOwotCi0gICAgLy8gRkVUdXJidWxlbmNlLCBGRUlt
YWdlIGFuZCBGRUZsb29kIGRvbid0IGhhdmUgaW5wdXQgZWZmZWN0cywgdGFrZSB0aGUgZmlsdGVy
IHJlZ2lvbiBhcyB1bml0ZSByZWN0LgotICAgIGlmICghc2l6ZSkKLSAgICAgICAgdW5pdGVSZWN0
ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpOwotICAgIGVsc2UgewotICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICAgICAgdW5pdGVS
ZWN0LnVuaXRlKG1faW5wdXRFZmZlY3RzLmF0KGkpLT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVT
dWJyZWdpb24oZmlsdGVyKSk7Ci0gICAgfQotCi0gICAgZmlsdGVyLT5kZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24odGhpcywgdW5pdGVSZWN0KTsKLSAgICByZXR1cm4gbV9maWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb247Ci19Ci0KIHZvaWQgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdChGaWx0ZXIqKQogewogICAgIG1fYWJzb2x1dGVQYWludFJlY3QgPSBJbnRS
ZWN0KCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZm
ZWN0LmgKaW5kZXggYTYxNGI1OS4uMjVkYjU3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuaApAQCAtOTksOSArOTksNiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hhc0hlaWdodDsgfQogICAg
IHZvaWQgc2V0SGFzSGVpZ2h0KGJvb2wgdmFsdWUpIHsgbV9oYXNIZWlnaHQgPSB2YWx1ZTsgfQog
Ci0gICAgLy8gRklYTUU6IEZFVGlsZSBzdGlsbCBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nLgotICAg
IHZpcnR1YWwgRmxvYXRSZWN0IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0
ZXIqKTsKLQogICAgIEZsb2F0UmVjdCBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKSBjb25zdCB7
IHJldHVybiBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbjsgfQogICAgIHZvaWQgc2V0RmlsdGVy
UHJpbWl0aXZlU3VicmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uKSB7IG1fZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uID0gZmlsdGVyUHJpbWl0aXZlU3VicmVn
aW9uOyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAppbmRleCAzMjAzZGRmLi41MGNmNjhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSW1hZ2VE
YXRhLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCIKICNpbmNs
dWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyLmgiCiAjaW5jbHVkZSAiU1ZH
RmlsdGVyRWxlbWVudC5oIgpAQCAtMjA1LDEzICsyMDYsMTMgQEAgYm9vbCBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJPYmplY3QqIG9iamVjdCwgUmVuZGVyU3R5
bGUqLAogICAgIGlmICghbGFzdEVmZmVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gRGV0ZXJtaW5lIHRoZSBmaWx0ZXIgcHJpbWl0aXZlIHN1YnJlZ2lvbnMgb2YgZXZlcnkgZWZm
ZWN0LgotICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihm
aWx0ZXJEYXRhLT5maWx0ZXIuZ2V0KCkpOwotICAgIGlmICghZml0c0luTWF4aW11bUltYWdlU2l6
ZShmaWx0ZXJEYXRhLT5maWx0ZXItPm1heEltYWdlU2l6ZSgpLCBzY2FsZSkpIHsKLSAgICAgICAg
Ly8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCi0g
ICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMgd2l0aCBuZXcgc2NhbGUgZmFj
dG9yLgorICAgIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpkZXRlcm1pbmVGaWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24obGFzdEVmZmVjdCwgZmlsdGVyRGF0YS0+ZmlsdGVyLmdldCgp
KTsKKyAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgp
OworICAgIC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBz
aXplLAorICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMgd2l0aCBuZXcgc2NhbGUg
ZmFjdG9ycy4KKyAgICBpZiAoIWZpdHNJbk1heGltdW1JbWFnZVNpemUoc3ViUmVnaW9uLnNpemUo
KSwgc2NhbGUpKSB7CiAgICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1
dGlvbihzY2FsZSk7Ci0gICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbihmaWx0ZXJEYXRhLT5maWx0ZXIuZ2V0KCkpOworICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KGxhc3RFZmZlY3QsIGZpbHRlckRhdGEtPmZpbHRlci5nZXQoKSk7CiAgICAgfQogCiAgICAgLy8g
SWYgdGhlIGRyYXdpbmdSZWdpb24gaXMgZW1wdHksIHdlIGhhdmUgc29tZXRoaW5nIGxpa2UgPGcg
ZmlsdGVyPSIuLiIvPi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlLmNwcAppbmRleCBmNzM4MWZhLi5kYTA4NmE4IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5j
cHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRp
dmUuY3BwCkBAIC0yOCwxMiArMjgsNzYgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShG
SUxURVJTKQogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgiCisj
aW5jbHVkZSAiU1ZHRkVJbWFnZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlbmRlclNW
R1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlOjpSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZShTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMqIGZpbHRlclByaW1pdGl2ZUVs
ZW1lbnQpCi0gICAgOiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIoZmlsdGVyUHJpbWl0aXZlRWxl
bWVudCkKK0Zsb2F0UmVjdCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZTo6ZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVjdCogZWZmZWN0LCBTVkdGaWx0
ZXIqIGZpbHRlcikKIHsKKyAgICBGbG9hdFJlY3QgdW5pdGVSZWN0OworICAgIEZsb2F0UmVjdCBz
dWJyZWdpb25Cb3VuZGluZ0JveCA9IGVmZmVjdC0+ZWZmZWN0Qm91bmRhcmllcygpOworICAgIEZs
b2F0UmVjdCBzdWJyZWdpb24gPSBzdWJyZWdpb25Cb3VuZGluZ0JveDsKKworICAgIGlmIChlZmZl
Y3QtPmZpbHRlckVmZmVjdFR5cGUoKSAhPSBGaWx0ZXJFZmZlY3RUeXBlVGlsZSkgeworICAgICAg
ICAvLyBGRVR1cmJ1bGVuY2UsIEZFSW1hZ2UgYW5kIEZFRmxvb2QgZG9uJ3QgaGF2ZSBpbnB1dCBl
ZmZlY3RzLCB0YWtlIHRoZSBmaWx0ZXIgcmVnaW9uIGFzIHVuaXRlIHJlY3QuCisgICAgICAgIGlm
ICh1bnNpZ25lZCBudW1iZXJPZklucHV0RWZmZWN0cyA9IGVmZmVjdC0+aW5wdXRFZmZlY3RzKCku
c2l6ZSgpKSB7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZJ
bnB1dEVmZmVjdHM7ICsraSkKKyAgICAgICAgICAgICAgICB1bml0ZVJlY3QudW5pdGUoZGV0ZXJt
aW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKGVmZmVjdC0+aW5wdXRFZmZlY3QoaSksIGZpbHRl
cikpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHVuaXRlUmVjdCA9IGZpbHRlci0+Zmls
dGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZXRlcm1pbmVG
aWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oZWZmZWN0LT5pbnB1dEVmZmVjdCgwKSwgZmlsdGVyKTsK
KyAgICAgICAgdW5pdGVSZWN0ID0gZmlsdGVyLT5maWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpOwor
ICAgIH0KKworICAgIGlmIChmaWx0ZXItPmVmZmVjdEJvdW5kaW5nQm94TW9kZSgpKSB7CisgICAg
ICAgIHN1YnJlZ2lvbiA9IHVuaXRlUmVjdDsKKyAgICAgICAgLy8gQXZvaWQgdGhlIGNhbGxpbmcg
b2YgYSB2aXJ0dWFsIG1ldGhvZCBzZXZlcmFsIHRpbWVzLgorICAgICAgICBGbG9hdFJlY3QgdGFy
Z2V0Qm91bmRpbmdCb3ggPSBmaWx0ZXItPnRhcmdldEJvdW5kaW5nQm94KCk7CisKKyAgICAgICAg
aWYgKGVmZmVjdC0+aGFzWCgpKQorICAgICAgICAgICAgc3VicmVnaW9uLnNldFgodGFyZ2V0Qm91
bmRpbmdCb3gueCgpICsgc3VicmVnaW9uQm91bmRpbmdCb3gueCgpICogdGFyZ2V0Qm91bmRpbmdC
b3gud2lkdGgoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdC0+aGFzWSgpKQorICAgICAgICAgICAg
c3VicmVnaW9uLnNldFkodGFyZ2V0Qm91bmRpbmdCb3gueSgpICsgc3VicmVnaW9uQm91bmRpbmdC
b3gueSgpICogdGFyZ2V0Qm91bmRpbmdCb3guaGVpZ2h0KCkpOworCisgICAgICAgIGlmIChlZmZl
Y3QtPmhhc1dpZHRoKCkpCisgICAgICAgICAgICBzdWJyZWdpb24uc2V0V2lkdGgoc3VicmVnaW9u
Qm91bmRpbmdCb3gud2lkdGgoKSAqIHRhcmdldEJvdW5kaW5nQm94LndpZHRoKCkpOworCisgICAg
ICAgIGlmIChlZmZlY3QtPmhhc0hlaWdodCgpKQorICAgICAgICAgICAgc3VicmVnaW9uLnNldEhl
aWdodChzdWJyZWdpb25Cb3VuZGluZ0JveC5oZWlnaHQoKSAqIHRhcmdldEJvdW5kaW5nQm94Lmhl
aWdodCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIWVmZmVjdC0+aGFzWCgpKQorICAg
ICAgICAgICAgc3VicmVnaW9uLnNldFgodW5pdGVSZWN0LngoKSk7CisKKyAgICAgICAgaWYgKCFl
ZmZlY3QtPmhhc1koKSkKKyAgICAgICAgICAgIHN1YnJlZ2lvbi5zZXRZKHVuaXRlUmVjdC55KCkp
OworCisgICAgICAgIGlmICghZWZmZWN0LT5oYXNXaWR0aCgpKQorICAgICAgICAgICAgc3VicmVn
aW9uLnNldFdpZHRoKHVuaXRlUmVjdC53aWR0aCgpKTsKKworICAgICAgICBpZiAoIWVmZmVjdC0+
aGFzSGVpZ2h0KCkpCisgICAgICAgICAgICBzdWJyZWdpb24uc2V0SGVpZ2h0KHVuaXRlUmVjdC5o
ZWlnaHQoKSk7CisgICAgfQorCisgICAgZWZmZWN0LT5zZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oc3VicmVnaW9uKTsKKworICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVN1YlJlZ2lvbiA9IGZpbHRl
ci0+bWFwTG9jYWxSZWN0VG9BYnNvbHV0ZVJlY3Qoc3VicmVnaW9uKTsKKyAgICBGbG9hdFNpemUg
ZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlci0+ZmlsdGVyUmVzb2x1dGlvbigpOworICAgIGFic29s
dXRlU3ViUmVnaW9uLnNjYWxlKGZpbHRlclJlc29sdXRpb24ud2lkdGgoKSwgZmlsdGVyUmVzb2x1
dGlvbi5oZWlnaHQoKSk7CisKKyAgICAvLyBGRUltYWdlIG5lZWRzIHRoZSB1bmNsaXBwZWQgc3Vi
cmVnaW9uIGluIGFic29sdXRlIGNvb3JkaW5hdGVzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdAor
ICAgIC8vIGRlc3RpbmF0aW9uIHJlY3QgaW4gY29tYmluYXRpb24gd2l0aCBwcmVzZXJ2ZUFzcGVj
dFJhdGlvLgorICAgIGlmIChlZmZlY3QtPmZpbHRlckVmZmVjdFR5cGUoKSA9PSBGaWx0ZXJFZmZl
Y3RUeXBlSW1hZ2UpCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8RkVJbWFnZSo+KGVmZmVjdCkt
PnNldEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3ViUmVnaW9uKTsKKworICAgIC8vIENsaXAg
ZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lvbi4KKyAgICBGbG9hdFJlY3Qg
YWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24gPSBmaWx0ZXItPmZpbHRlclJlZ2lvbigpOworICAg
IGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uLnNjYWxlKGZpbHRlclJlc29sdXRpb24ud2lkdGgo
KSwgZmlsdGVyUmVzb2x1dGlvbi5oZWlnaHQoKSk7CisgICAgYWJzb2x1dGVTdWJSZWdpb24uaW50
ZXJzZWN0KGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uKTsKKworICAgIGVmZmVjdC0+c2V0TWF4
RWZmZWN0UmVjdChlbmNsb3NpbmdJbnRSZWN0KGFic29sdXRlU3ViUmVnaW9uKSk7CisgICAgcmV0
dXJuIHN1YnJlZ2lvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaCBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlLmgKaW5kZXgg
YjA1NDIwMy4uYzg5MGZmZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oCkBAIC0zMSwxMiArMzEsMjAgQEAKIAogI2luY2x1
ZGUgIlJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgorI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZl
IDogcHVibGljIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lciB7CiBwdWJsaWM6Ci0gICAgZXhwbGlj
aXQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzKiBmaWx0ZXJQcmltaXRpdmVFbGVtZW50KTsKKworICAgIGV4cGxpY2l0
IFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcyogZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKKyAgICAgICAgOiBSZW5kZXJT
VkdIaWRkZW5Db250YWluZXIoZmlsdGVyUHJpbWl0aXZlRWxlbWVudCkKKyAgICB7CisgICAgfQor
CisgICAgLy8gVGhleSBkZXBlbmQgb24gdGhlIFJlbmRlck9iamVjdCBhcmd1bWVudCBvZiBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZS4KKyAgICBzdGF0aWMgRmxvYXRSZWN0
IGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbihGaWx0ZXJFZmZlY3QqIGVmZmVjdCwg
U1ZHRmlsdGVyKiBmaWx0ZXIpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciog
cmVuZGVyTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJSZW5kZXJTVkdSZXNvdXJjZUZpbHRlclByaW1p
dGl2ZSI7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmls
dGVyLmNwcCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAppbmRl
eCBkZmRjY2Q3Li5lN2I2MWRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXIuY3BwCkBAIC0yMyw4ICsyMyw2IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKEZJ
TFRFUlMpCiAjaW5jbHVkZSAiU1ZHRmlsdGVyLmgiCiAKLSNpbmNsdWRlICJTVkdGRUltYWdlLmgi
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0
ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gs
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQpAQCAt
MzgsNjQgKzM2LDYgQEAgU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JgogICAgIG1fYWJzb2x1dGVGaWx0
ZXJSZWdpb24gPSBhYnNvbHV0ZVRyYW5zZm9ybS5tYXBSZWN0KGZpbHRlclJlZ2lvbik7CiB9CiAK
LXZvaWQgU1ZHRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oRmlsdGVy
RWZmZWN0KiBlZmZlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdW5pb25PZlByZXZpb3VzUHJpbWl0aXZl
U3VicmVnaW9ucykKLXsKLSAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uQkJveCA9IGVmZmVjdC0+ZWZm
ZWN0Qm91bmRhcmllcygpOwotICAgIEZsb2F0UmVjdCBuZXdTdWJSZWdpb24gPSBzdWJSZWdpb25C
Qm94OwotCi0gICAgaWYgKG1fZWZmZWN0QkJveE1vZGUpIHsKLSAgICAgICAgbmV3U3ViUmVnaW9u
ID0gdW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVnaW9uczsKLQotICAgICAgICBpZiAoZWZm
ZWN0LT5oYXNYKCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0WChtX3RhcmdldEJvdW5k
aW5nQm94LngoKSArIHN1YlJlZ2lvbkJCb3gueCgpICogbV90YXJnZXRCb3VuZGluZ0JveC53aWR0
aCgpKTsKLQotICAgICAgIGlmIChlZmZlY3QtPmhhc1koKSkKLSAgICAgICAgICAgIG5ld1N1YlJl
Z2lvbi5zZXRZKG1fdGFyZ2V0Qm91bmRpbmdCb3gueSgpICsgc3ViUmVnaW9uQkJveC55KCkgKiBt
X3RhcmdldEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLQotICAgICAgICBpZiAoZWZmZWN0LT5oYXNX
aWR0aCgpKQotICAgICAgICAgICAgbmV3U3ViUmVnaW9uLnNldFdpZHRoKHN1YlJlZ2lvbkJCb3gu
d2lkdGgoKSAqIG1fdGFyZ2V0Qm91bmRpbmdCb3gud2lkdGgoKSk7Ci0KLSAgICAgICAgaWYgKGVm
ZmVjdC0+aGFzSGVpZ2h0KCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0SGVpZ2h0KHN1
YlJlZ2lvbkJCb3guaGVpZ2h0KCkgKiBtX3RhcmdldEJvdW5kaW5nQm94LmhlaWdodCgpKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBpZiAoIWVmZmVjdC0+aGFzWCgpKQotICAgICAgICAgICAgbmV3
U3ViUmVnaW9uLnNldFgodW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVnaW9ucy54KCkpOwot
Ci0gICAgICAgIGlmICghZWZmZWN0LT5oYXNZKCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24u
c2V0WSh1bmlvbk9mUHJldmlvdXNQcmltaXRpdmVTdWJyZWdpb25zLnkoKSk7Ci0KLSAgICAgICAg
aWYgKCFlZmZlY3QtPmhhc1dpZHRoKCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0V2lk
dGgodW5pb25PZlByZXZpb3VzUHJpbWl0aXZlU3VicmVnaW9ucy53aWR0aCgpKTsKLQotICAgICAg
ICBpZiAoIWVmZmVjdC0+aGFzSGVpZ2h0KCkpCi0gICAgICAgICAgICBuZXdTdWJSZWdpb24uc2V0
SGVpZ2h0KHVuaW9uT2ZQcmV2aW91c1ByaW1pdGl2ZVN1YnJlZ2lvbnMuaGVpZ2h0KCkpOwotICAg
IH0KLQotICAgIGVmZmVjdC0+c2V0RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKG5ld1N1YlJlZ2lv
bik7Ci0gICAgLy8gVE9ETzogRXZlcnl0aGluZyBhYm92ZSBzaG91bGQgYmUgbW92ZWQgdG8gYSBm
aXJzdCBwaGFzZSBvZiBsYXlvdXQgaW4gUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUu
Ci0gICAgLy8gVGhlIHNjYWxpbmcgb2YgdGhlIHN1YnJlZ2lvbiB0byB0aGUgcmVwYWludCByZWN0
IHNob3VsZCBiZSBtZXJnZWQgd2l0aCBhIG1vcmUgaW50ZWxsaWdlbnQgcmVwYWludCBsb2dpYwot
ICAgIC8vIGFuZCBtb3ZlZCB0byB0aGUgc2Vjb25kIHBoYXNlIG9mIGxheW91dCBpbiBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS4KLSAgICAvLyBTZWUgYnVnIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTYxNC4KLSAgICBuZXdTdWJSZWdpb24gPSBtX2Fi
c29sdXRlVHJhbnNmb3JtLm1hcFJlY3QobmV3U3ViUmVnaW9uKTsKLSAgICBuZXdTdWJSZWdpb24u
c2NhbGUoZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlclJlc29sdXRpb24oKS5oZWln
aHQoKSk7Ci0KLSAgICAvLyBGRUltYWdlIG5lZWRzIHRoZSB1bmNsaXBwZWQgc3VicmVnaW9uIGlu
IGFic29sdXRlIGNvb3JkaW5hdGVzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdAotICAgIC8vIGRl
c3RpbmF0aW9uIHJlY3QgaW4gY29tYmluYXRpb24gd2l0aCBwcmVzZXJ2ZUFzcGVjdFJhdGlvLgot
ICAgIGlmIChlZmZlY3QtPmZpbHRlckVmZmVjdFR5cGUoKSA9PSBGaWx0ZXJFZmZlY3RUeXBlSW1h
Z2UpIHsKLSAgICAgICAgRkVJbWFnZSogaW1hZ2VFZmZlY3QgPSBzdGF0aWNfY2FzdDxGRUltYWdl
Kj4oZWZmZWN0KTsKLSAgICAgICAgaW1hZ2VFZmZlY3QtPnNldEFic29sdXRlU3VicmVnaW9uKG5l
d1N1YlJlZ2lvbik7Ci0gICAgfQotCi0gICAgLy8gQ2xpcCBldmVyeSBmaWx0ZXIgZWZmZWN0IHRv
IHRoZSBmaWx0ZXIgcmVnaW9uLgotICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVNjYWxlZEZpbHRlclJl
Z2lvbiA9IG1fYWJzb2x1dGVGaWx0ZXJSZWdpb247Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJS
ZWdpb24uc2NhbGUoZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlclJlc29sdXRpb24o
KS5oZWlnaHQoKSk7Ci0gICAgbmV3U3ViUmVnaW9uLmludGVyc2VjdChhYnNvbHV0ZVNjYWxlZEZp
bHRlclJlZ2lvbik7Ci0KLSAgICBlZmZlY3QtPnNldE1heEVmZmVjdFJlY3QoZW5jbG9zaW5nSW50
UmVjdChuZXdTdWJSZWdpb24pKTsKLSAgICBpZiAoZWZmZWN0LT5maWx0ZXJFZmZlY3RUeXBlKCkg
IT0gRmlsdGVyRWZmZWN0VHlwZVNvdXJjZUlucHV0KQotICAgICAgICBtX21heEltYWdlU2l6ZSA9
IG1fbWF4SW1hZ2VTaXplLmV4cGFuZGVkVG8obmV3U3ViUmVnaW9uLnNpemUoKSk7IAotfQotCiBm
bG9hdCBTVkdGaWx0ZXI6OmFwcGx5SG9yaXpvbnRhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdAog
ewogICAgIGlmIChtX2VmZmVjdEJCb3hNb2RlKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaCBiL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmgKaW5kZXggMWIxOWU5Zi4uNjQ2NWY5ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAorKysgYi9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZpbHRlci5oCkBAIC00MywxNCArNDMsMTMgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVG
aWx0ZXJSZWdpb247IH0KIAogICAgIHZpcnR1YWwgRmxvYXRQb2ludCBtYXBBYnNvbHV0ZVBvaW50
VG9Mb2NhbFBvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdCB7IHJldHVybiBtX2Fi
c29sdXRlVHJhbnNmb3JtLmludmVyc2UoKS5tYXBQb2ludChwb2ludCk7IH0KKyAgICBGbG9hdFJl
Y3QgbWFwTG9jYWxSZWN0VG9BYnNvbHV0ZVJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25z
dCB7IHJldHVybiBtX2Fic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QocmVjdCk7IH0KIAogICAgIHZp
cnR1YWwgZmxvYXQgYXBwbHlIb3Jpem9udGFsU2NhbGUoZmxvYXQgdmFsdWUpIGNvbnN0OwogICAg
IHZpcnR1YWwgZmxvYXQgYXBwbHlWZXJ0aWNhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdDsKIAog
ICAgIHZpcnR1YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9Ci0gICAgCi0gICAgdmlydHVhbCBGbG9hdFNp
emUgbWF4SW1hZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9tYXhJbWFnZVNpemU7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKEZpbHRlckVmZmVj
dCosIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIEZsb2F0UmVjdCB0YXJnZXRCb3VuZGluZ0JveCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0Qm91bmRpbmdCb3g7IH0KIAogcHJpdmF0ZToKICAgICBT
VkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVm
ZmVjdEJCb3hNb2RlKTsKQEAgLTYxLDcgKzYwLDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFJlY3Qg
bV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAg
ICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwotICAgIEZsb2F0U2l6ZSBtX21heEltYWdlU2l6ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="61607"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>