<?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>161856</bug_id>
          
          <creation_ts>2016-09-11 22:08:51 -0700</creation_ts>
          <short_desc>Replace RGBA32 with Color in member variables</short_desc>
          <delta_ts>2016-10-09 15:59:48 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>160520</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1228678</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-11 22:08:51 -0700</bug_when>
    <thetext>Replace RGBA32 with Color in member variables</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228679</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-09-11 22:09:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/28254324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228680</commentid>
    <comment_count>2</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-11 22:10:58 -0700</bug_when>
    <thetext>As part of https://bugs.webkit.org/show_bug.cgi?id=160520

Replace the use of RGBA32 values with actual Color instances. Now that colors can be outside of sRGB a simple 32 bit value isn&apos;t sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228681</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-09-11 22:11:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/28254338&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228682</commentid>
    <comment_count>4</comment_count>
      <attachid>288550</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-11 22:13:21 -0700</bug_when>
    <thetext>Created attachment 288550
WIP Patch - NFR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229039</commentid>
    <comment_count>5</comment_count>
      <attachid>288656</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-12 19:13:25 -0700</bug_when>
    <thetext>Created attachment 288656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229283</commentid>
    <comment_count>6</comment_count>
      <attachid>288656</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-13 13:10:13 -0700</bug_when>
    <thetext>Comment on attachment 288656
Patch

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

&gt; Source/WebCore/html/canvas/CanvasStyle.cpp:87
&gt; +CanvasStyle::CanvasStyle(Color color)
&gt; +    : m_color(color)

Should we pass by reference now that Color contains a RefPtr? Copying will result in ref churn.

&gt; Source/WebCore/page/PageOverlay.cpp:139
&gt; +void PageOverlay::setBackgroundColor(const Color backgroundColor)

Why const here?

&gt; Source/WebCore/page/PageOverlay.h:110
&gt; +    void setBackgroundColor(const Color);

Why const?

&gt; Source/WebCore/rendering/RenderTheme.h:415
&gt; +    static NeverDestroyed&lt;const Color&gt; defaultTapHighlightColor = 0x66000000;

Don&apos;t think the const gives you anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229296</commentid>
    <comment_count>7</comment_count>
      <attachid>288656</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-13 13:26:11 -0700</bug_when>
    <thetext>Comment on attachment 288656
Patch

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

&gt;&gt; Source/WebCore/html/canvas/CanvasStyle.cpp:87
&gt;&gt; +    : m_color(color)
&gt; 
&gt; Should we pass by reference now that Color contains a RefPtr? Copying will result in ref churn.

I&apos;m going to do that separately because there are many hundreds of places to fix :(

&gt;&gt; Source/WebCore/page/PageOverlay.cpp:139
&gt;&gt; +void PageOverlay::setBackgroundColor(const Color backgroundColor)
&gt; 
&gt; Why const here?

No reason.

&gt;&gt; Source/WebCore/page/PageOverlay.h:110
&gt;&gt; +    void setBackgroundColor(const Color);
&gt; 
&gt; Why const?

No reason.

&gt;&gt; Source/WebCore/rendering/RenderTheme.h:415
&gt;&gt; +    static NeverDestroyed&lt;const Color&gt; defaultTapHighlightColor = 0x66000000;
&gt; 
&gt; Don&apos;t think the const gives you anything.

That&apos;s just the pattern that NeverDestroyed uses. I can remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229311</commentid>
    <comment_count>8</comment_count>
      <attachid>288729</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-13 14:30:38 -0700</bug_when>
    <thetext>Created attachment 288729
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229328</commentid>
    <comment_count>9</comment_count>
      <attachid>288734</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-13 15:13:32 -0700</bug_when>
    <thetext>Created attachment 288734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229358</commentid>
    <comment_count>10</comment_count>
      <attachid>288741</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-13 15:55:23 -0700</bug_when>
    <thetext>Created attachment 288741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229384</commentid>
    <comment_count>11</comment_count>
      <attachid>288751</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-13 17:07:39 -0700</bug_when>
    <thetext>Created attachment 288751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229398</commentid>
    <comment_count>12</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-13 17:42:32 -0700</bug_when>
    <thetext>Committed r205892: &lt;http://trac.webkit.org/changeset/205892&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238125</commentid>
    <comment_count>13</comment_count>
      <attachid>288741</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-09 15:58:48 -0700</bug_when>
    <thetext>Comment on attachment 288741
Patch

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

Looks like you landed this already. I have a lot of comments that may be different from the initial ones you got.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1261
&gt; +    setShadow(FloatSize(width, height), blur, Color(grayLevel, grayLevel, grayLevel, alpha));

In a new call site like this where there is no type conversion, I suggest the following syntax:

    setShadow({ width, height }, blur, { grayLevel, grayLevel, grayLevel, alpha });

This will give an error if types aren’t exactly right rather than converting types. If you want to be explicit about the aggregate types you could include them:

    setShadow(FloatSize { width, height }, blur, Color { grayLevel, grayLevel, grayLevel, alpha });

I think both of these are better than the syntax that looks like a function call.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.h:319
&gt; +    void setShadow(const FloatSize&amp; offset, float blur, Color);

What are the performance implications of using Color here rather than const Color&amp;? Why make a different choice for this argument than the one we made for FloatSize, which uses const FloatSize&amp;?

&gt; Source/WebCore/html/canvas/CanvasStyle.cpp:93
&gt; +    : m_color(Color(grayLevel, grayLevel, grayLevel, alpha))

Should be:

    : m_color { grayLevel, grayLevel, grayLevel, alpha }

No need for a temporary Color when creating a Color and best to use the { } syntax rather than () in new code.

&gt; Source/WebCore/html/canvas/CanvasStyle.cpp:99
&gt; +    : m_color(Color(r, g, b, a))

Should be:

    : m_color { r, g, b, a }

Same reason as above.

&gt; Source/WebCore/html/canvas/CanvasStyle.cpp:105
&gt; +    : m_cmyka(new CMYKAValues(Color(c, m, y, k, a), c, m, y, k, a))

Should be:

    : m_cmyka { new CMYKAValues { { c, m, y, k, a }, c, m, y, k, a } }

&gt; Source/WebCore/html/canvas/CanvasStyle.cpp:203
&gt; +    return m_color == Color(r, g, b, a);

Should be:

    return m_color == Color { r, g, b, a };

But also, is this a sufficiently efficient algorithm for this?

&gt; Source/WebCore/html/canvas/CanvasStyle.h:45
&gt; +        explicit CanvasStyle(Color);

This should take a Color&amp;&amp; and use WTFMove to avoid reference count churn.

&gt; Source/WebCore/html/canvas/CanvasStyle.h:85
&gt; +            CMYKAValues()
&gt; +                : color(), c(0), m(0), y(0), k(0), a(0)
&gt; +            { }

No need to mention color() directly; will work by just not mentioning it. Also, the other values could be specified below where the data members are defined rather than here in the constructor. I suggest writing this:

    CMYKAValues() = default;

And doing it all below with initialization syntax:

    float c { 0 };

&gt; Source/WebCore/html/canvas/CanvasStyle.h:87
&gt; +            CMYKAValues(Color color, float cyan, float magenta, float yellow, float black, float alpha)

First argument should be Color&amp;&amp; and use WTFMove to avoid reference count churn.

&gt; Source/WebCore/html/canvas/CanvasStyle.h:107
&gt;          union {
&gt; -            RGBA32 m_rgba;
&gt; +            Color m_color;

Changing this union so that it now has a member that has a destructor requires a more changes to the code using these fields to call the destructor and constructor when setting the value of the union. The compiler won’t call the constructor and destructor automatically and we have to carefully do it ourselves. To quote &lt;http://en.cppreference.com/w/cpp/language/union&gt;:

&quot;If members of a union are classes with user-defined constructors and destructors, to switch the active member, explicit destructor and placement new are generally needed&quot;

We might get away with this if Color doesn’t yet have a destructor, but as soon as we add one we will need to deal with it.

Cleanest design would be to replace the union and m_type with a std::experimental::variant. That will probably have some other significant advantages. We won’t need to allocate everything on the heap and do all the manual reference counting.

&gt; Source/WebCore/html/track/TextTrackCueGeneric.h:64
&gt;      Color foregroundColor() const { return m_foregroundColor; }

Return type should be const Color&amp;.

&gt; Source/WebCore/html/track/TextTrackCueGeneric.h:65
&gt; +    void setForegroundColor(Color color) { m_foregroundColor = color; }

Type should be Color&amp;&amp; and use WTFMove.

&gt; Source/WebCore/html/track/TextTrackCueGeneric.h:67
&gt;      Color backgroundColor() const { return m_backgroundColor; }

Ditto.

&gt; Source/WebCore/html/track/TextTrackCueGeneric.h:68
&gt; +    void setBackgroundColor(Color color) { m_backgroundColor = color; }

Ditto.

&gt; Source/WebCore/html/track/TextTrackCueGeneric.h:70
&gt;      Color highlightColor() const { return m_highlightColor; }

Ditto.

&gt; Source/WebCore/html/track/TextTrackCueGeneric.h:71
&gt; +    void setHighlightColor(Color color) { m_highlightColor = color; }

Ditto.

&gt; Source/WebCore/page/PageOverlay.h:109
&gt; +    Color backgroundColor() const { return m_backgroundColor; }

Return type should be const Color&amp;.

&gt; Source/WebCore/page/PageOverlay.h:110
&gt; +    void setBackgroundColor(Color);

Type should be Color&amp;&amp; and use WTFMove.

&gt; Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h:89
&gt;      Color foregroundColor() const { return m_foregroundColor; }

Return type should be const Color&amp;.

&gt; Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h:90
&gt; +    void setForegroundColor(Color color) { m_foregroundColor = color; }

Type should be Color&amp;&amp; and use WTFMove.

&gt; Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h:92
&gt;      Color backgroundColor() const { return m_backgroundColor; }

Ditto.

&gt; Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h:93
&gt; +    void setBackgroundColor(Color color) { m_backgroundColor = color; }

Ditto.

&gt; Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h:95
&gt;      Color highlightColor() const { return m_highlightColor; }

Ditto.

&gt; Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h:96
&gt; +    void setHighlightColor(Color color) { m_highlightColor = color; }

Ditto.

&gt; Source/WebCore/platform/graphics/mac/ColorMac.h:50
&gt; +    Color oldAquaFocusRingColor();

Consider having the return type be const Color&amp;.

&gt; Source/WebCore/platform/graphics/mac/ColorMac.mm:37
&gt; +Color oldAquaFocusRingColor()

Consider having the return type be const Color&amp; and using a NeverDestroyed global.

&gt; Source/WebCore/rendering/RenderTheme.cpp:1340
&gt; +Color RenderTheme::platformTapHighlightColor() const

Since return type is Color rather than const Color&amp;, we will run the constructor and destructor every time. Would be better to have a more efficient.

&gt; Source/WebCore/rendering/RenderTheme.cpp:1344
&gt; +    static NeverDestroyed&lt;const Color&gt; defaultTapHighlightColor = Color(0, 0, 0, 102);

Probably can use a modern syntax with { } instead of function call style and maybe even omit the second mention of the name Color.

&gt; Source/WebCore/rendering/style/BorderValue.h:36
&gt;      BorderValue()

Should convert file to use #pragma once when touching it.

&gt; Source/WebCore/rendering/style/BorderValue.h:67
&gt;      void setColor(const Color&amp; color)

Should change type to Color&amp;&amp; and use WTFMove.

&gt; Source/WebCore/rendering/style/BorderValue.h:72
&gt; +    Color color() const { return m_color; }

Should change type to const Color&amp;.

&gt; Source/WebCore/rendering/style/CollapsedBorderValue.h:42
&gt;      CollapsedBorderValue(const BorderValue&amp; border, const Color&amp; color, EBorderPrecedence precedence)

Should change argument type to Color&amp;&amp; and use WTFMove.

&gt; Source/WebCore/rendering/style/CollapsedBorderValue.h:54
&gt; +    Color color() const { return m_color; }

Should change type to const Color&amp;.

&gt; Source/WebKit/mac/Misc/WebKitNSStringExtras.mm:106
&gt; +        graphicsContext.setFillColor(Color(static_cast&lt;float&gt;(red * 255), static_cast&lt;float&gt;(green * 255.0f), static_cast&lt;float&gt;(blue * 255.0f), static_cast&lt;float&gt;(alpha * 255.0f)));

I suggest you try this:

    graphicsContext.setFillColor({ static_cast&lt;float&gt;(red * 255), static_cast&lt;float&gt;(green * 255), static_cast&lt;float&gt;(blue * 255), static_cast&lt;float&gt;(alpha * 255) });

No reason to use a float 255 to multiple by a float or a double; the integer 255 will do the same thing.

Too bad we have to do all that casting, but I can’t think of a cleaner way to convert &quot;either double or float&quot; to float. I thought at one time we had some kind of &quot;narrow&quot; function, but I don’t remember what it was called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238126</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-09 15:59:26 -0700</bug_when>
    <thetext>Looks like some of the comments were things you planned to fix later anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238127</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-09 15:59:48 -0700</bug_when>
    <thetext>I just realized this patch is a month old. Oops!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288550</attachid>
            <date>2016-09-11 22:13:21 -0700</date>
            <delta_ts>2016-09-12 19:12:41 -0700</delta_ts>
            <desc>WIP Patch - NFR</desc>
            <filename>bug-161856-20160912151048.patch</filename>
            <type>text/plain</type>
            <size>20448</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1NzkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTczZDBhOWFmZTdlZGEx
NzA3NDFjOGIxMDQ1NWIyYzhmZWRkMjA4OC4uMWUyNjlkNjY5ZTQ2ODAwNjljMzRkM2VjYTEyYWJk
MDcyMmRiOGYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUxIEBACiAyMDE2LTA5LTExICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXBsYWNlIFJHQkEzMiB3aXRo
IENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyNTQz
MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQ
LgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxkRHJhd1No
YWRvd3MpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkaWRE
cmF3KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaDoK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5
bGU6OmlzRXF1aXZhbGVudENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpp
c0VxdWl2YWxlbnRSR0JBKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseVN0
cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xv
cik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1N0eWxlOjpDTVlLQVZhbHVlczo6Q01ZS0FWYWx1ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzU3R5bGU6OmNvbG9yKToKKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUdlbmVyaWMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0
Rm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRC
YWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEhp
Z2hsaWdodENvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAg
IChXZWJDb3JlOjpvbGRBcXVhRm9jdXNSaW5nQ29sb3IpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6OkJvcmRlclZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJvcmRlclZhbHVlOjppc1RyYW5zcGFyZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkJvcmRlclZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlclZh
bHVlOjpzZXRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6Y29sb3IpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWU6OkNvbGxhcHNlZEJvcmRlclZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbGxhcHNlZEJvcmRlclZhbHVlOjpjb2xvcik6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6T3V0
bGluZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwOgorCisyMDE2LTA5LTExICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4K
KwogICAgICAgICBBZGQgcmVmLWNvdW50ZWQgQ29sb3JJbXBsIHRvIENvbG9yCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4NTUKICAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI4MjUzODkwPgpAQCAtMTMsNyArNTksNyBAQAogICAgICAgICBtYWtpbmcg
Q29sb3IgYmlnZ2VyLCBzbyB0aGlzIHBhdGNoIHdvbid0IGxhbmQgdW50aWwKICAgICAgICAgb3Ro
ZXIgcGFydHMgYXJlIHJlYWR5LgogCi0gICAgICAgICogQ01ha2VMaXN0cy50eHQKKyAgICAgICAg
KiBDTWFrZUxpc3RzLnR4dDoKICAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CiAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaDoKICAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Db2xvckltcGwuY3BwOiBBZGRlZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCmluZGV4
IDdmOTUxYzZlYWYwOWU4ZmU2YzBhM2RlZWJhN2YwYjFlZThmOWVlOTYuLmViMmRiNTVmOGJiZjNm
MDhlYWI4YmFjNzU3NDU4M2ViMDEyYzRjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApAQCAtMTI1OCwxNyAr
MTI1OCwxNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsCiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1
ciwgZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKIHsKLSAgICBzZXRTaGFkb3coRmxvYXRT
aXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBtYWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWws
IGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpOworICAgIHNldFNoYWRvdyhGbG9hdFNpemUo
d2lkdGgsIGhlaWdodCksIGJsdXIsIENvbG9yKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2
ZWwsIGFscGhhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFk
b3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgZmxvYXQgYmx1ciwgZmxvYXQgciwgZmxvYXQg
ZywgZmxvYXQgYiwgZmxvYXQgYSkKIHsKLSAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpLCBibHVyLCBtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSk7CisgICAgc2V0
U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgQ29sb3IociwgZywgYiwgYSkp
OwogfQogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHks
IGZsb2F0IGssIGZsb2F0IGEpCiB7Ci0gICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVp
Z2h0KSwgYmx1ciwgbWFrZVJHQkFGcm9tQ01ZS0EoYywgbSwgeSwgaywgYSkpOworICAgIHNldFNo
YWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIENvbG9yKGMsIG0sIHksIGssIGEp
KTsKIH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KCkKQEAg
LTEyNzYsNyArMTI3Niw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjbGVhclNo
YWRvdygpCiAgICAgc2V0U2hhZG93KEZsb2F0U2l6ZSgpLCAwLCBDb2xvcjo6dHJhbnNwYXJlbnQp
OwogfQogCi12b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGNvbnN0IEZs
b2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBSR0JBMzIgY29sb3IpCit2b2lkIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBDb2xvciBjb2xvcikKIHsKICAgICBpZiAoc3RhdGUoKS5zaGFkb3dPZmZzZXQgPT0g
b2Zmc2V0ICYmIHN0YXRlKCkuc2hhZG93Qmx1ciA9PSBibHVyICYmIHN0YXRlKCkuc2hhZG93Q29s
b3IgPT0gY29sb3IpCiAgICAgICAgIHJldHVybjsKQEAgLTEzMDYsNyArMTMwNiw3IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjphcHBseVNoYWRvdygpCiAKIGJvb2wgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpzaG91bGREcmF3U2hhZG93cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGFscGhhQ2hhbm5lbChzdGF0ZSgpLnNoYWRvd0NvbG9yKSAmJiAoc3RhdGUoKS5zaGFkb3dCbHVy
IHx8ICFzdGF0ZSgpLnNoYWRvd09mZnNldC5pc1plcm8oKSk7CisgICAgcmV0dXJuIHN0YXRlKCku
c2hhZG93Q29sb3IuYWxwaGEoKSAmJiAoc3RhdGUoKS5zaGFkb3dCbHVyIHx8ICFzdGF0ZSgpLnNo
YWRvd09mZnNldC5pc1plcm8oKSk7CiB9CiAKIGVudW0gSW1hZ2VTaXplVHlwZSB7CkBAIC0xODgy
LDcgKzE4ODIsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZGlkRHJhdyhjb25z
dCBGbG9hdFJlY3QmIHIsIHVuc2lnbmVkIG9wdGlvbnMpCiAgICAgICAgIGRpcnR5UmVjdCA9IGN0
bS5tYXBSZWN0KHIpOwogICAgIH0KIAotICAgIGlmIChvcHRpb25zICYgQ2FudmFzRGlkRHJhd0Fw
cGx5U2hhZG93ICYmIGFscGhhQ2hhbm5lbChzdGF0ZSgpLnNoYWRvd0NvbG9yKSkgeworICAgIGlm
IChvcHRpb25zICYgQ2FudmFzRGlkRHJhd0FwcGx5U2hhZG93ICYmIHN0YXRlKCkuc2hhZG93Q29s
b3IuYWxwaGEoKSkgewogICAgICAgICAvLyBUaGUgc2hhZG93IGdldHMgYXBwbGllZCBhZnRlciB0
cmFuc2Zvcm1hdGlvbgogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdChkaXJ0eVJlY3QpOwog
ICAgICAgICBzaGFkb3dSZWN0Lm1vdmUoc3RhdGUoKS5zaGFkb3dPZmZzZXQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApp
bmRleCA3OTAyNmY2M2I3MDk0ZTgxNDlkYmVhMjMyNzM1MmZlNDBkNmUzZDFjLi5mNGFiMWI0OTNh
NzBkODUyMDE2MjVhMTkwNDEyMjViODAxMTEzYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaApAQCAtMjg0LDcgKzI4
NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0IG1pdGVyTGltaXQ7CiAgICAgICAgIEZsb2F0
U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgICAgIGZsb2F0IHNoYWRvd0JsdXI7Ci0gICAgICAgIFJH
QkEzMiBzaGFkb3dDb2xvcjsKKyAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAgICAgICAgIGZs
b2F0IGdsb2JhbEFscGhhOwogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBnbG9iYWxDb21wb3Np
dGU7CiAgICAgICAgIEJsZW5kTW9kZSBnbG9iYWxCbGVuZDsKQEAgLTMxNiw3ICszMTYsNyBAQCBw
cml2YXRlOgogICAgIGNvbnN0IFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVT
dGFjay5sYXN0KCk7IH0KIAogICAgIHZvaWQgYXBwbHlMaW5lRGFzaCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCBibHVyLCBSR0JBMzIg
Y29sb3IpOworICAgIHZvaWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9h
dCBibHVyLCBDb2xvciBjb2xvcik7CiAgICAgdm9pZCBhcHBseVNoYWRvdygpOwogICAgIGJvb2wg
c2hvdWxkRHJhd1NoYWRvd3MoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzU3R5bGUuY3BwCmluZGV4IDFjOGIyMDM1Nzg1YjUzYjA3YTUyYjQ4YmEwOGIzOWU5YWJh
ZGU3ZWYuLjhjYjRjOTA0MmQ3ZGZiOTQ2YmYxMWNmNjkwODYwYzE1YmJmYzMyZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKQEAgLTgzLDI2ICs4MywyNiBA
QCBib29sIHBhcnNlQ29sb3JPckN1cnJlbnRDb2xvcihSR0JBMzImIHBhcnNlZENvbG9yLCBjb25z
dCBTdHJpbmcmIGNvbG9yU3RyaW5nLCBIVAogICAgIH0KIH0KIAotQ2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKFJHQkEzMiByZ2JhKQotICAgIDogbV9yZ2JhKHJnYmEpCitDYW52YXNTdHlsZTo6Q2Fu
dmFzU3R5bGUoQ29sb3IgY29sb3IpCisgICAgOiBtX2NvbG9yKGNvbG9yKQogICAgICwgbV90eXBl
KFJHQkEpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWws
IGZsb2F0IGFscGhhKQotICAgIDogbV9yZ2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZl
bCwgZ3JheUxldmVsLCBncmF5TGV2ZWwsIGFscGhhKSkKKyAgICA6IG1fY29sb3IoQ29sb3IoZ3Jh
eUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpKQogICAgICwgbV90eXBlKFJHQkEp
CiB7CiB9CiAKIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShmbG9hdCByLCBmbG9hdCBnLCBmbG9h
dCBiLCBmbG9hdCBhKQotICAgIDogbV9yZ2JhKG1ha2VSR0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIs
IGEpKQorICAgIDogbV9jb2xvcihDb2xvcihyLCBnLCBiLCBhKSkKICAgICAsIG1fdHlwZShSR0JB
KQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoZmxvYXQgYywgZmxvYXQgbSwgZmxv
YXQgeSwgZmxvYXQgaywgZmxvYXQgYSkKLSAgICA6IG1fY215a2EobmV3IENNWUtBVmFsdWVzKG1h
a2VSR0JBRnJvbUNNWUtBKGMsIG0sIHksIGssIGEpLCBjLCBtLCB5LCBrLCBhKSkKKyAgICA6IG1f
Y215a2EobmV3IENNWUtBVmFsdWVzKENvbG9yKGMsIG0sIHksIGssIGEpLCBjLCBtLCB5LCBrLCBh
KSkKICAgICAsIG1fdHlwZShDTVlLQSkKIHsKIH0KQEAgLTE3NSw3ICsxNzUsNyBAQCBib29sIENh
bnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcihjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpIGNv
bnN0CiAKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgUkdCQToKLSAgICAgICAgcmV0
dXJuIG1fcmdiYSA9PSBvdGhlci5tX3JnYmE7CisgICAgICAgIHJldHVybiBtX2NvbG9yID09IG90
aGVyLm1fY29sb3I7CiAgICAgY2FzZSBDTVlLQToKICAgICAgICAgcmV0dXJuIG1fY215a2EtPmMg
PT0gb3RoZXIubV9jbXlrYS0+YwogICAgICAgICAgICAgJiYgbV9jbXlrYS0+bSA9PSBvdGhlci5t
X2NteWthLT5tCkBAIC0yMDAsNyArMjAwLDcgQEAgYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVpdmFs
ZW50UkdCQShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhKSBjb25zdAogICAgIGlm
IChtX3R5cGUgIT0gUkdCQSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIG1f
cmdiYSA9PSBtYWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKTsKKyAgICByZXR1cm4gbV9j
b2xvciA9PSBDb2xvcihyLCBnLCBiLCBhKTsKIH0KIAogYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVp
dmFsZW50Q01ZS0EoZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkg
Y29uc3QKQEAgLTIyMyw3ICsyMjMsNyBAQCBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoY29uc3Qg
Q2FudmFzU3R5bGUmIG90aGVyKQogICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBJbWFnZVBhdHRlcm4p
CiAgICAgICAgIG1fcGF0dGVybi0+cmVmKCk7CiAgICAgZWxzZSBpZiAobV90eXBlID09IENNWUtB
KQotICAgICAgICBtX2NteWthID0gbmV3IENNWUtBVmFsdWVzKG90aGVyLm1fY215a2EtPnJnYmEs
IG90aGVyLm1fY215a2EtPmMsIG90aGVyLm1fY215a2EtPm0sIG90aGVyLm1fY215a2EtPnksIG90
aGVyLm1fY215a2EtPmssIG90aGVyLm1fY215a2EtPmEpOworICAgICAgICBtX2NteWthID0gbmV3
IENNWUtBVmFsdWVzKG90aGVyLm1fY215a2EtPmNvbG9yLCBvdGhlci5tX2NteWthLT5jLCBvdGhl
ci5tX2NteWthLT5tLCBvdGhlci5tX2NteWthLT55LCBvdGhlci5tX2NteWthLT5rLCBvdGhlci5t
X2NteWthLT5hKTsKIH0KIAogQ2FudmFzU3R5bGUmIENhbnZhc1N0eWxlOjpvcGVyYXRvcj0oY29u
c3QgQ2FudmFzU3R5bGUmIG90aGVyKQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgQ2FudmFzU3R5
bGU6OmFwcGx5U3Ryb2tlQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAg
ICAgICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFJHQkE6Ci0gICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKG1fcmdiYSk7CisgICAgICAgIGNvbnRleHQtPnNl
dFN0cm9rZUNvbG9yKG1fY29sb3IpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENNWUtBOiB7
CiAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQg
R3JhcGhpY3NDb250ZXh0IEFQSS4KQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIENhbnZhc1N0eWxl
OjphcHBseUZpbGxDb2xvcihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAg
IHJldHVybjsKICAgICBzd2l0Y2ggKG1fdHlwZSkgewogICAgIGNhc2UgUkdCQToKLSAgICAgICAg
Y29udGV4dC0+c2V0RmlsbENvbG9yKG1fcmdiYSk7CisgICAgICAgIGNvbnRleHQtPnNldEZpbGxD
b2xvcihtX2NvbG9yKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDTVlLQTogewogICAgICAg
ICAvLyBGSVhNRTogRG8gdGhpcyB0aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNz
Q29udGV4dCBBUEkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAppbmRl
eCBhZTlkYWE4NDUyYmFiMzZjMzI2YmQxMTM2ODk3ZjA4NTc4YmU4ZDkwLi44YzNiMzhjZDZkMTE0
MDQyMWU3ZjliZGUwMzEwYmJmZjVkYTlmM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmgKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIENhbnZhc1N0eWxlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIENhbnZhc1N0eWxlKCk7
Ci0gICAgICAgIGV4cGxpY2l0IENhbnZhc1N0eWxlKFJHQkEzMik7CisgICAgICAgIGV4cGxpY2l0
IENhbnZhc1N0eWxlKENvbG9yKTsKICAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVs
LCBmbG9hdCBhbHBoYSk7CiAgICAgICAgIENhbnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZs
b2F0IGIsIGZsb2F0IGFscGhhKTsKICAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgYywgZmxvYXQg
bSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYWxwaGEpOwpAQCAtODAsOSArODAsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENNWUtBVmFsdWVzKTsKICAgICAgICAgcHVi
bGljOgotICAgICAgICAgICAgQ01ZS0FWYWx1ZXMoKSA6IHJnYmEoMCksIGMoMCksIG0oMCksIHko
MCksIGsoMCksIGEoMCkgeyB9Ci0gICAgICAgICAgICBDTVlLQVZhbHVlcyhSR0JBMzIgcmdiYSwg
ZmxvYXQgY3lhbiwgZmxvYXQgbWFnZW50YSwgZmxvYXQgeWVsbG93LCBmbG9hdCBibGFjaywgZmxv
YXQgYWxwaGEpIDogcmdiYShyZ2JhKSwgYyhjeWFuKSwgbShtYWdlbnRhKSwgeSh5ZWxsb3cpLCBr
KGJsYWNrKSwgYShhbHBoYSkgeyB9Ci0gICAgICAgICAgICBSR0JBMzIgcmdiYTsKKyAgICAgICAg
ICAgIENNWUtBVmFsdWVzKCkgOiBjb2xvcigpLCBjKDApLCBtKDApLCB5KDApLCBrKDApLCBhKDAp
IHsgfQorICAgICAgICAgICAgQ01ZS0FWYWx1ZXMoQ29sb3IgY29sb3IsIGZsb2F0IGN5YW4sIGZs
b2F0IG1hZ2VudGEsIGZsb2F0IHllbGxvdywgZmxvYXQgYmxhY2ssIGZsb2F0IGFscGhhKSA6IGNv
bG9yKGNvbG9yKSwgYyhjeWFuKSwgbShtYWdlbnRhKSwgeSh5ZWxsb3cpLCBrKGJsYWNrKSwgYShh
bHBoYSkgeyB9CisgICAgICAgICAgICBDb2xvciBjb2xvcjsKICAgICAgICAgICAgIGZsb2F0IGM7
CiAgICAgICAgICAgICBmbG9hdCBtOwogICAgICAgICAgICAgZmxvYXQgeTsKQEAgLTk5LDcgKzk5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgdW5pb24gewot
ICAgICAgICAgICAgUkdCQTMyIG1fcmdiYTsKKyAgICAgICAgICAgIENvbG9yIG1fY29sb3I7CiAg
ICAgICAgICAgICBmbG9hdCBtX292ZXJyaWRlQWxwaGE7CiAgICAgICAgICAgICBDYW52YXNHcmFk
aWVudCogbV9ncmFkaWVudDsKICAgICAgICAgICAgIENhbnZhc1BhdHRlcm4qIG1fcGF0dGVybjsK
QEAgLTEzNCw4ICsxMzQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgewogICAgICAgICBB
U1NFUlQobV90eXBlID09IFJHQkEgfHwgbV90eXBlID09IENNWUtBKTsKICAgICAgICAgaWYgKG1f
dHlwZSA9PSBSR0JBKQotICAgICAgICAgICAgcmV0dXJuIENvbG9yKG1fcmdiYSkuc2VyaWFsaXpl
ZCgpOwotICAgICAgICByZXR1cm4gQ29sb3IobV9jbXlrYS0+cmdiYSkuc2VyaWFsaXplZCgpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fY29sb3Iuc2VyaWFsaXplZCgpOworICAgICAgICByZXR1cm4g
bV9jbXlrYS0+Y29sb3Iuc2VyaWFsaXplZCgpOwogICAgIH0KIAogICAgIGlubGluZSBDYW52YXNT
dHlsZTo6Q2FudmFzU3R5bGUoQ2FudmFzU3R5bGUmJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKaW5kZXggM2YzNTY3MmRhNGYzNWMy
MmI0ZjkyODQxMzQyOTM3ZDhiNDQ3N2MwMi4uNTM2Y2IwYTc0ZDBmYzkzYzI3OWUwMzU0ZDdmNzBj
MjcxMzhhYWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tDdWVHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tD
dWVHZW5lcmljLmgKQEAgLTYyLDEzICs2MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250
TmFtZShTdHJpbmcgbmFtZSkgeyBtX2ZvbnROYW1lID0gbmFtZTsgfQogCiAgICAgQ29sb3IgZm9y
ZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kQ29sb3I7IH0KLSAgICB2
b2lkIHNldEZvcmVncm91bmRDb2xvcihSR0JBMzIgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3Iu
c2V0UkdCKGNvbG9yKTsgfQorICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKENvbG9yIGNvbG9y
KSB7IG1fZm9yZWdyb3VuZENvbG9yID0gY29sb3I7IH0KICAgICAKICAgICBDb2xvciBiYWNrZ3Jv
dW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQg
c2V0QmFja2dyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvci5zZXRS
R0IoY29sb3IpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsg
bV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIAogICAgIENvbG9yIGhpZ2hsaWdodENv
bG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0SGln
aGxpZ2h0Q29sb3IoUkdCQTMyIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3Iuc2V0UkdCKGNvbG9y
KTsgfQorICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoQ29sb3IgY29sb3IpIHsgbV9oaWdobGln
aHRDb2xvciA9IGNvbG9yOyB9CiAgICAgCiAgICAgdm9pZCBzZXRGb250U2l6ZShpbnQsIGNvbnN0
IEludFNpemUmLCBib29sIGltcG9ydGFudCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZh
dGVDbGllbnQuaAppbmRleCAwNzYwMmQyN2U2ZTQwMWE1ZDY5YzQ4ZTlkZTNkNjBiNDE3MzJhZjY0
Li4zMmE3NDNiYTViOGQ0ZDg2MThlNDFlMTM4NTQ0MmFkODZhNjA3N2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudC5oCkBAIC04NywxMyArODcsMTMgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UmVsYXRpdmVGb250U2l6ZShkb3VibGUgcmVsYXRpdmVGb250U2l6ZSkgeyBtX3JlbGF0aXZl
Rm9udFNpemUgPSByZWxhdGl2ZUZvbnRTaXplOyB9CiAKICAgICBDb2xvciBmb3JlZ3JvdW5kQ29s
b3IoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9y
ZWdyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvci5zZXRSR0IoY29s
b3IpOyB9CisgICAgdm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsgbV9mb3Jl
Z3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogCiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRD
b2xvcihSR0JBMzIgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQor
ICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKENvbG9yIGNvbG9yKSB7IG1fYmFja2dyb3VuZENv
bG9yID0gY29sb3I7IH0KICAgICAKICAgICBDb2xvciBoaWdobGlnaHRDb2xvcigpIGNvbnN0IHsg
cmV0dXJuIG1faGlnaGxpZ2h0Q29sb3I7IH0KLSAgICB2b2lkIHNldEhpZ2hsaWdodENvbG9yKFJH
QkEzMiBjb2xvcikgeyBtX2hpZ2hsaWdodENvbG9yLnNldFJHQihjb2xvcik7IH0KKyAgICB2b2lk
IHNldEhpZ2hsaWdodENvbG9yKENvbG9yIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3IgPSBjb2xv
cjsgfQogICAgIAogICAgIGVudW0gU3RhdHVzIHsKICAgICAgICAgVW5pbml0aWFsaXplZCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKaW5kZXgg
Mzc2Zjc5ZjgzOTgyZTJhYmNlZTE1M2M3ZjZhOWMwMDE3OWMzN2EzMC4uOTdmNDRjMTcxNjZkZTJk
YjIxZmNlNWEzZjRiYzlhNzJhZWQ5NjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5n
Q29sb3IoYm9vbCk7CiAgICAgCiAgICAgLy8gRm9jdXMgcmluZyBjb2xvciB1c2VkIGZvciB0ZXN0
aW5nIHB1cnBvc2VzLgotICAgIFJHQkEzMiBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKTsKKyAgICBD
b2xvciBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KaW5kZXggMzkzYjNjNjQ4MTI1OTI1
Y2FlOTlmMmIzMTNhZWIzN2NmMjBlMDY5Ni4uY2RjYzZmNjdiZjU0NjRhYmJkOGQzZGZmOTAzZjgx
MjBhOTAyNGU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
bWFjL0NvbG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9Db2xvck1hYy5tbQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0
YXRpYyBib29sIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsKIAotUkdCQTMyIG9sZEFxdWFGb2N1
c1JpbmdDb2xvcigpCitDb2xvciBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKQogewogICAgIHJldHVy
biAweEZGN0RBREQ5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAppbmRleCA0ZDM4OWJjOTFmMTZkNDE5M2ZjMWJkNjZkYzVlZDU4MmJlMTk4NjhjLi44
OWQ4ODFjOTc3NjNkMjgwOGEwMjBiOThiYTNiNjc2YzkxMTQ1MjQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1
Y3QgU2FtZVNpemVBc1JlbmRlclRhYmxlQ2VsbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewog
fTsKIAogQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRlclRhYmxlQ2VsbCkgPT0gc2l6ZW9mKFNh
bWVTaXplQXNSZW5kZXJUYWJsZUNlbGwpLCBSZW5kZXJUYWJsZUNlbGxfc2hvdWxkX3N0YXlfc21h
bGwpOwotQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAxMiwg
Q29sbGFwc2VkQm9yZGVyVmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NFUlQo
c2l6ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAzMiwgQ29sbGFwc2VkQm9yZGVyVmFsdWVf
c2hvdWxkX3N0YXlfc21hbGwpOwogCiBSZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tG
bG93KGVsZW1lbnQsIFdURk1vdmUoc3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQm9yZGVyVmFsdWUuaAppbmRleCBjZjM0MGQwZjY4MmU3NGFlNDkyY2NlZmNmYWNjYTEx
NjcyNzdhNGJkLi42YmJkYmQyM2U0OGJiNzFjNGYyYTMzYzhkYzkzYTI1NjQzYTYyYTM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApAQCAtMzQsMTAg
KzM0LDcgQEAgY2xhc3MgQm9yZGVyVmFsdWUgewogZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwog
cHVibGljOgogICAgIEJvcmRlclZhbHVlKCkKLSAgICAgICAgOiBtX3dpZHRoKDMpCi0gICAgICAg
ICwgbV9jb2xvcigwKQotICAgICAgICAsIG1fY29sb3JJc1ZhbGlkKGZhbHNlKQotICAgICAgICAs
IG1fc3R5bGUoQk5PTkUpCisgICAgICAgIDogbV9zdHlsZShCTk9ORSkKICAgICAgICAgLCBtX2lz
QXV0byhBVVRPX09GRikKICAgICB7CiAgICAgfQpAQCAtNDksNyArNDYsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
Y29sb3JJc1ZhbGlkICYmICFhbHBoYUNoYW5uZWwobV9jb2xvcik7CisgICAgICAgIHJldHVybiBt
X2NvbG9yLmlzVmFsaWQoKSAmJiAhbV9jb2xvci5hbHBoYSgpOwogICAgIH0KIAogICAgIGJvb2wg
aXNWaXNpYmxlKGJvb2wgY2hlY2tTdHlsZSA9IHRydWUpIGNvbnN0CkBAIC01OSw3ICs1Niw3IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3JkZXJWYWx1ZSYgbykgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX3N0eWxl
ID09IG8ubV9zdHlsZSAmJiBtX2NvbG9yID09IG8ubV9jb2xvciAmJiBtX2NvbG9ySXNWYWxpZCA9
PSBvLm1fY29sb3JJc1ZhbGlkOworICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGgg
JiYgbV9zdHlsZSA9PSBvLm1fc3R5bGUgJiYgbV9jb2xvciA9PSBvLm1fY29sb3I7CiAgICAgfQog
CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJvcmRlclZhbHVlJiBvKSBjb25zdApAQCAtNjks
MTkgKzY2LDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgIHsKLSAgICAgICAgbV9jb2xvciA9IGNvbG9yLnJnYigpOwotICAgICAgICBtX2Nv
bG9ySXNWYWxpZCA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICAgICAgbV9jb2xvciA9IGNvbG9yOwog
ICAgIH0KIAotICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9jb2xvciwg
bV9jb2xvcklzVmFsaWQpOyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2Nv
bG9yOyB9CiAKICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAg
ICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVy
U3R5bGU+KG1fc3R5bGUpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBmbG9hdCBtX3dpZHRoOwotICAg
IFJHQkEzMiBtX2NvbG9yOwotICAgIHVuc2lnbmVkIG1fY29sb3JJc1ZhbGlkIDogMTsKKyAgICBm
bG9hdCBtX3dpZHRoIHsgMyB9OworICAgIENvbG9yIG1fY29sb3I7CiAKICAgICB1bnNpZ25lZCBt
X3N0eWxlIDogNDsgLy8gRUJvcmRlclN0eWxlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKaW5kZXggNmU5YjMyODdlZjBj
NDI4ZWUxOWIxZDI0Yjk0ZWZiNDYwYjYxMGEzOS4uMTFjM2Y4NDJmMTIwOTgwZmFiZGMwZTQxOTA4
YTQ4OGMwNDhmMjlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKQEAgLTMzLDggKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29sbGFwc2VkQm9yZGVyVmFsdWUgewogcHVibGljOgogICAgIENvbGxh
cHNlZEJvcmRlclZhbHVlKCkKLSAgICAgICAgOiBtX2NvbG9ySXNWYWxpZChmYWxzZSkKLSAgICAg
ICAgLCBtX3N0eWxlKEJOT05FKQorICAgICAgICA6IG1fc3R5bGUoQk5PTkUpCiAgICAgICAgICwg
bV9wcmVjZWRlbmNlKEJPRkYpCiAgICAgICAgICwgbV90cmFuc3BhcmVudChmYWxzZSkKICAgICB7
CkBAIC00Miw4ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlKGNv
bnN0IEJvcmRlclZhbHVlJiBib3JkZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgRUJvcmRlclByZWNl
ZGVuY2UgcHJlY2VkZW5jZSkKICAgICAgICAgOiBtX3dpZHRoKExheW91dFVuaXQoYm9yZGVyLm5v
blplcm8oKSA/IGJvcmRlci53aWR0aCgpIDogMCkpCi0gICAgICAgICwgbV9jb2xvcihjb2xvci5y
Z2IoKSkKLSAgICAgICAgLCBtX2NvbG9ySXNWYWxpZChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAg
ICwgbV9jb2xvcihjb2xvcikKICAgICAgICAgLCBtX3N0eWxlKGJvcmRlci5zdHlsZSgpKQogICAg
ICAgICAsIG1fcHJlY2VkZW5jZShwcmVjZWRlbmNlKQogICAgICAgICAsIG1fdHJhbnNwYXJlbnQo
Ym9yZGVyLmlzVHJhbnNwYXJlbnQoKSkKQEAgLTUzLDcgKzUxLDcgQEAgcHVibGljOgogICAgIExh
eW91dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlID4gQkhJRERFTiA/IG1fd2lk
dGggOiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7IH0KICAgICBFQm9yZGVyU3R5bGUgc3R5bGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyU3R5bGU+KG1fc3R5bGUpOyB9CiAg
ICAgYm9vbCBleGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3ByZWNlZGVuY2UgIT0gQk9GRjsgfQot
ICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9jb2xvciwgbV9jb2xvcklz
VmFsaWQpOyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAg
ICAgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc3BhcmVudDsgfQog
ICAgIEVCb3JkZXJQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxFQm9yZGVyUHJlY2VkZW5jZT4obV9wcmVjZWRlbmNlKTsgfQogCkBAIC02Niw4ICs2NCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG1fd2lkdGg7Ci0gICAgUkdC
QTMyIG1fY29sb3IgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9jb2xvcklzVmFsaWQgOiAxOworICAg
IENvbG9yIG1fY29sb3I7CiAgICAgdW5zaWduZWQgbV9zdHlsZSA6IDQ7IC8vIEVCb3JkZXJTdHls
ZQogICAgIHVuc2lnbmVkIG1fcHJlY2VkZW5jZSA6IDM7IC8vIEVCb3JkZXJQcmVjZWRlbmNlCiAg
ICAgdW5zaWduZWQgbV90cmFuc3BhcmVudCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvT3V0bGluZVZhbHVlLmgKaW5kZXggMGFmZTVhODEyZjI5OTE4NWE3NWMzNWI0Yjgz
NTQyOGNhODU3NGM5NS4uZDU4YjBhMTJmYmZjYTY1ZWM1OTYyYzBkYTI0MjZkM2VmMjkzNzQ0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaApAQCAt
MzQsNyArMzQsNyBAQCBmcmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7CiBwdWJsaWM6CiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE91dGxpbmVWYWx1ZSYgbykgY29uc3QKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX3N0eWxlID09IG8ubV9zdHlsZSAmJiBt
X2NvbG9yID09IG8ubV9jb2xvciAmJiBtX2NvbG9ySXNWYWxpZCA9PSBvLm1fY29sb3JJc1ZhbGlk
ICYmIG1fb2Zmc2V0ID09IG8ubV9vZmZzZXQgJiYgbV9pc0F1dG8gPT0gby5tX2lzQXV0bzsKKyAg
ICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1fc3R5bGUgPT0gby5tX3N0eWxl
ICYmIG1fY29sb3IgPT0gby5tX2NvbG9yICYmIG1fb2Zmc2V0ID09IG8ubV9vZmZzZXQgJiYgbV9p
c0F1dG8gPT0gby5tX2lzQXV0bzsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNv
bnN0IE91dGxpbmVWYWx1ZSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGM3ZjMxMDU1MjYzYTYwMzViZjYxNzA5ODQyNzk3
M2M3N2RhMWEzYWEuLmFjOTMwMTVkY2JkYzk4MmU4YjA3Yzk2N2MzODI1ZjE2NWQzY2QwN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAt
NjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzQm9y
ZGVyVmFsdWUgewogICAgIGZsb2F0IG1fd2lkdGg7Ci0gICAgUkdCQTMyIG1fY29sb3I7CisgICAg
Q29sb3IgbV9jb2xvcjsKICAgICBpbnQgbV9yZXN0Qml0czsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288656</attachid>
            <date>2016-09-12 19:13:25 -0700</date>
            <delta_ts>2016-09-13 14:30:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161856-20160913121049.patch</filename>
            <type>text/plain</type>
            <size>25687</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UxZDIzMjcxZjFjMjI5
NGM3MWI0MGUxYTEyNDAxYmUwODUxNjBiOS4uZTBkNDM3M2FlNjJiMzA5ZGZmYWI4YTY2NmY2ZTM2
M2I1NTkzZjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE2LTA5LTEyICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB3aXRo
IENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyNTQz
MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
cHJlcGFyYXRpb24gZm9yIHRoZSBDb2xvciBjbGFzcyB0byBiZWNvbWUgbW9yZSB0aGFuCisgICAg
ICAgIGp1c3QgYSA0LWJ5dGUgUkdCQSB2YWx1ZSwgSSB3ZW50IHRocm91Z2ggYSBmZXcgcGxhY2Vz
CisgICAgICAgIHRoYXQgd2VyZSB1c2luZyB0aGUgUkdCQTMyIHR5cGUgZGlyZWN0bHksIGFuZCBy
ZXBsYWNlZAorICAgICAgICB0aGVtIHdpdGggQ29sb3IuIFRoaXMgd2lsbCBtYWtlIHNvbWUgb2Jq
ZWN0cyBhIGxpdHRsZQorICAgICAgICBiaWdnZXIgZS5nLiBCb3JkZXJWYWx1ZSBhbmQgaXRzIGZy
aWVuZHMuCisKKyAgICAgICAgSSBtb3N0bHkgbG9va2VkIGF0IHRoZSBwbGFjZXMgdGhhdCB3ZXJl
IHVzaW5nIFJHQkEzMiBhcworICAgICAgICBhIG1lbWJlciB2YXJpYWJsZS4gVGhlcmUgaXMgc3Rp
bGwgYSBsb3Qgb2YgUkdCQTMyIHVzZQorICAgICAgICBhcm91bmQgdGhlIHByb2plY3QsIGluIHBh
cnRpY3VsYXIgdGhlIENTUyBwYXJzZXIuCisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGJl
aGF2aW91ciBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwOiBTaGFkb3dzIG5vdyB1c2UgQ29sb3IuCisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNob3VsZERyYXdTaGFkb3dzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZGlkRHJhdyk6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuY3BwOiBDYW52YXMgc3R5bGUgdXNlcyBDb2xvciBmb3IgZmlsbHMgYW5k
IHN0cm9rZXMuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRSR0JBKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDTVlLQVZhbHVlczo6
Q01ZS0FWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNvbG9yKToKKwor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOiBGb3JlZ3JvdW5kLCBi
YWNrZ3JvdW5kIGFuZAorICAgICAgICBoaWdobGlnaHQgY29sb3JzLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0SGlnaGxpZ2h0Q29sb3IpOgorCisgICAgICAgICogcGFn
ZS9QYWdlT3ZlcmxheS5jcHA6IEJhY2tncm91bmQgY29sb3IuCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlT3ZlcmxheTo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VPdmVy
bGF5Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaDogUmFu
ZG9tIGZ1bmN0aW9uIHRoYXQgcmV0dXJuZWQgUkdCQTMyLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9sZEFxdWFGb2N1c1Jp
bmdDb2xvcik6CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDogVXBk
YXRlIHRoZSBzaXplIG9mIENvbGxhcHNlZEJvcmRlclZhbHVlLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmg6IFVzZSBhIE5ldmVyRGVzdHJveWVkIENvbG9yIHJhdGhlciB0aGFu
IGEgc3RhdGljIFJHQkEzMi4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1
ZS5oOiBVc2UgYSBDb2xvci4KKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlclZhbHVlOjpCb3JkZXJW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6aXNUcmFuc3BhcmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJWYWx1ZTo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFs
dWU6OmNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbGxhcHNlZEJvcmRlclZhbHVlOjpDb2xsYXBzZWRC
b3JkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6Y29s
b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok91dGxpbmVWYWx1ZTo6b3BlcmF0b3I9PSk6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOiBVcGRhdGUgdG8gbWF0Y2ggbmV3IEJvcmRlclZhbHVl
LgorCiAyMDE2LTA5LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVVJMUGFyc2VyOiBDb3JyZWN0bHkgaGFuZGxlIHJlbGF0aXZlIFVSTHMg
dGhhdCBhcmUganVzdCBhIHNjaGVtZSBhbmQgYSBjb2xvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGY5
YmM3MzdiZDg2ZjQ4MmI5NmZlZTk2M2NmMDZhZjU0YTAxZTUxMjMuLjRiMWQ0NjM0ODNmYTM3YTVl
ZDZkM2JlZTg0NDZkMGYzOTBkMjkwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBA
QAorMjAxNi0wOS0xMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBSR0JBMzIgd2l0aCBDb2xvciBpbiBtZW1iZXIgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4NTYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI4MjU0MzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluIHByZXBhcmF0aW9uIGZvciB0aGUgQ29sb3IgY2xhc3MgdG8gYmVj
b21lIG1vcmUgdGhhbgorICAgICAgICBqdXN0IGEgNC1ieXRlIFJHQkEgdmFsdWUsIEkgd2VudCB0
aHJvdWdoIGEgZmV3IHBsYWNlcworICAgICAgICB0aGF0IHdlcmUgdXNpbmcgdGhlIFJHQkEzMiB0
eXBlIGRpcmVjdGx5LCBhbmQgcmVwbGFjZWQKKyAgICAgICAgdGhlbSB3aXRoIENvbG9yLiBUaGlz
IHdpbGwgbWFrZSBzb21lIG9iamVjdHMgYSBsaXR0bGUKKyAgICAgICAgYmlnZ2VyIGUuZy4gQm9y
ZGVyVmFsdWUgYW5kIGl0cyBmcmllbmRzLgorCisgICAgICAgIEkgbW9zdGx5IGxvb2tlZCBhdCB0
aGUgcGxhY2VzIHRoYXQgd2VyZSB1c2luZyBSR0JBMzIgYXMKKyAgICAgICAgYSBtZW1iZXIgdmFy
aWFibGUuIFRoZXJlIGlzIHN0aWxsIGEgbG90IG9mIFJHQkEzMiB1c2UKKyAgICAgICAgYXJvdW5k
IHRoZSBwcm9qZWN0LCBpbiBwYXJ0aWN1bGFyIHRoZSBDU1MgcGFyc2VyLgorCisgICAgICAgIFRo
ZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgICogTWlzYy9XZWJL
aXROU1N0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQb2lu
dDpmb250OnRleHRDb2xvcjphbGxvd2luZ0ZvbnRTbW9vdGhpbmc6XSk6IEV4cGxpY2l0bHkKKyAg
ICAgICAgY2FsbCBhIENvbG9yIGNvbnN0cnVjdG9yLCByYXRoZXIgdGhhbiBwYXNzaW5nIGFuIFJH
QkEzMi4KKwogMjAxNi0wOS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN3aXRjaCByZW1haW5pbmcgdXNlcnMgb2YgRG9jdW1lbnQ6OmluUGFnZUNhY2hlKCkg
dG8gcGFnZUNhY2hlU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2Y5NTFjNmVhZjA5ZThmZTZj
MGEzZGVlYmE3ZjBiMWVlOGY5ZWU5Ni4uZWIyZGI1NWY4YmJmM2YwOGVhYjhiYWM3NTc0NTgzZWIw
MTJjNGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xMjU4LDE3ICsxMjU4LDE3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRv
dyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWws
IGZsb2F0IGFscGhhKQogewotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCks
IGJsdXIsIG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2
ZWwsIGFscGhhKSk7CisgICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1
ciwgQ29sb3IoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpKTsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBh
KQogewotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIG1ha2VS
R0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIsIGEpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdp
ZHRoLCBoZWlnaHQpLCBibHVyLCBDb2xvcihyLCBnLCBiLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkK
IHsKLSAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBtYWtlUkdC
QUZyb21DTVlLQShjLCBtLCB5LCBrLCBhKSk7CisgICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0
aCwgaGVpZ2h0KSwgYmx1ciwgQ29sb3IoYywgbSwgeSwgaywgYSkpOwogfQogCiB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3coKQpAQCAtMTI3Niw3ICsxMjc2LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KCkKICAgICBzZXRTaGFk
b3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7CiB9CiAKLXZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZs
b2F0IGJsdXIsIFJHQkEzMiBjb2xvcikKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIENvbG9yIGNvbG9y
KQogewogICAgIGlmIChzdGF0ZSgpLnNoYWRvd09mZnNldCA9PSBvZmZzZXQgJiYgc3RhdGUoKS5z
aGFkb3dCbHVyID09IGJsdXIgJiYgc3RhdGUoKS5zaGFkb3dDb2xvciA9PSBjb2xvcikKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmFwcGx5U2hhZG93KCkKIAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNo
b3VsZERyYXdTaGFkb3dzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWxwaGFDaGFubmVsKHN0YXRl
KCkuc2hhZG93Q29sb3IpICYmIChzdGF0ZSgpLnNoYWRvd0JsdXIgfHwgIXN0YXRlKCkuc2hhZG93
T2Zmc2V0LmlzWmVybygpKTsKKyAgICByZXR1cm4gc3RhdGUoKS5zaGFkb3dDb2xvci5hbHBoYSgp
ICYmIChzdGF0ZSgpLnNoYWRvd0JsdXIgfHwgIXN0YXRlKCkuc2hhZG93T2Zmc2V0LmlzWmVybygp
KTsKIH0KIAogZW51bSBJbWFnZVNpemVUeXBlIHsKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5z
aWduZWQgb3B0aW9ucykKICAgICAgICAgZGlydHlSZWN0ID0gY3RtLm1hcFJlY3Qocik7CiAgICAg
fQogCi0gICAgaWYgKG9wdGlvbnMgJiBDYW52YXNEaWREcmF3QXBwbHlTaGFkb3cgJiYgYWxwaGFD
aGFubmVsKHN0YXRlKCkuc2hhZG93Q29sb3IpKSB7CisgICAgaWYgKG9wdGlvbnMgJiBDYW52YXNE
aWREcmF3QXBwbHlTaGFkb3cgJiYgc3RhdGUoKS5zaGFkb3dDb2xvci5hbHBoYSgpKSB7CiAgICAg
ICAgIC8vIFRoZSBzaGFkb3cgZ2V0cyBhcHBsaWVkIGFmdGVyIHRyYW5zZm9ybWF0aW9uCiAgICAg
ICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KGRpcnR5UmVjdCk7CiAgICAgICAgIHNoYWRvd1JlY3Qu
bW92ZShzdGF0ZSgpLnNoYWRvd09mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDc5MDI2ZjYzYjcwOTRl
ODE0OWRiZWEyMzI3MzUyZmU0MGQ2ZTNkMWMuLmNjYjIxZTUxZGY1YjJkNzRjYWJkYWRmOTg0ZGNm
ODI2NDgyNDc0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0yODQsNyArMjg0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgZmxvYXQgbWl0ZXJMaW1pdDsKICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsK
ICAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKLSAgICAgICAgUkdCQTMyIHNoYWRvd0NvbG9yOwor
ICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICAgICAgZmxvYXQgZ2xvYmFsQWxwaGE7CiAg
ICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGdsb2JhbENvbXBvc2l0ZTsKICAgICAgICAgQmxlbmRN
b2RlIGdsb2JhbEJsZW5kOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogCiAg
ICAgdm9pZCBhcHBseUxpbmVEYXNoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIFJHQkEzMiBjb2xvcik7CisgICAgdm9pZCBz
ZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIENvbG9yKTsKICAg
ICB2b2lkIGFwcGx5U2hhZG93KCk7CiAgICAgYm9vbCBzaG91bGREcmF3U2hhZG93cygpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggMWM4
YjIwMzU3ODViNTNiMDdhNTJiNDhiYTA4YjM5ZTlhYmFkZTdlZi4uOGNiNGM5MDQyZDdkZmI5NDZi
ZjExY2Y2OTA4NjBjMTViYmZjMzJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1N0eWxlLmNwcApAQCAtODMsMjYgKzgzLDI2IEBAIGJvb2wgcGFyc2VDb2xvck9yQ3VycmVu
dENvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3IsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcsIEhU
CiAgICAgfQogfQogCi1DYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUkdCQTMyIHJnYmEpCi0gICAg
OiBtX3JnYmEocmdiYSkKK0NhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShDb2xvciBjb2xvcikKKyAg
ICA6IG1fY29sb3IoY29sb3IpCiAgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFzU3R5
bGU6OkNhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCi0gICAgOiBtX3Jn
YmEobWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
YWxwaGEpKQorICAgIDogbV9jb2xvcihDb2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxl
dmVsLCBhbHBoYSkpCiAgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNh
bnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCi0gICAgOiBtX3Jn
YmEobWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSkpCisgICAgOiBtX2NvbG9yKENvbG9y
KHIsIGcsIGIsIGEpKQogICAgICwgbV90eXBlKFJHQkEpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpD
YW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQot
ICAgIDogbV9jbXlrYShuZXcgQ01ZS0FWYWx1ZXMobWFrZVJHQkFGcm9tQ01ZS0EoYywgbSwgeSwg
aywgYSksIGMsIG0sIHksIGssIGEpKQorICAgIDogbV9jbXlrYShuZXcgQ01ZS0FWYWx1ZXMoQ29s
b3IoYywgbSwgeSwgaywgYSksIGMsIG0sIHksIGssIGEpKQogICAgICwgbV90eXBlKENNWUtBKQog
ewogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENv
bG9yKGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikgY29uc3QKIAogICAgIHN3aXRjaCAobV90eXBl
KSB7CiAgICAgY2FzZSBSR0JBOgotICAgICAgICByZXR1cm4gbV9yZ2JhID09IG90aGVyLm1fcmdi
YTsKKyAgICAgICAgcmV0dXJuIG1fY29sb3IgPT0gb3RoZXIubV9jb2xvcjsKICAgICBjYXNlIENN
WUtBOgogICAgICAgICByZXR1cm4gbV9jbXlrYS0+YyA9PSBvdGhlci5tX2NteWthLT5jCiAgICAg
ICAgICAgICAmJiBtX2NteWthLT5tID09IG90aGVyLm1fY215a2EtPm0KQEAgLTIwMCw3ICsyMDAs
NyBAQCBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRSR0JBKGZsb2F0IHIsIGZsb2F0IGcs
IGZsb2F0IGIsIGZsb2F0IGEpIGNvbnN0CiAgICAgaWYgKG1fdHlwZSAhPSBSR0JBKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9yZ2JhID09IG1ha2VSR0JBMzJGcm9tRmxv
YXRzKHIsIGcsIGIsIGEpOworICAgIHJldHVybiBtX2NvbG9yID09IENvbG9yKHIsIGcsIGIsIGEp
OwogfQogCiBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDTVlLQShmbG9hdCBjLCBmbG9h
dCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKSBjb25zdApAQCAtMjIzLDcgKzIyMyw3IEBA
IENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpCiAgICAg
ZWxzZSBpZiAobV90eXBlID09IEltYWdlUGF0dGVybikKICAgICAgICAgbV9wYXR0ZXJuLT5yZWYo
KTsKICAgICBlbHNlIGlmIChtX3R5cGUgPT0gQ01ZS0EpCi0gICAgICAgIG1fY215a2EgPSBuZXcg
Q01ZS0FWYWx1ZXMob3RoZXIubV9jbXlrYS0+cmdiYSwgb3RoZXIubV9jbXlrYS0+Yywgb3RoZXIu
bV9jbXlrYS0+bSwgb3RoZXIubV9jbXlrYS0+eSwgb3RoZXIubV9jbXlrYS0+aywgb3RoZXIubV9j
bXlrYS0+YSk7CisgICAgICAgIG1fY215a2EgPSBuZXcgQ01ZS0FWYWx1ZXMob3RoZXIubV9jbXlr
YS0+Y29sb3IsIG90aGVyLm1fY215a2EtPmMsIG90aGVyLm1fY215a2EtPm0sIG90aGVyLm1fY215
a2EtPnksIG90aGVyLm1fY215a2EtPmssIG90aGVyLm1fY215a2EtPmEpOwogfQogCiBDYW52YXNT
dHlsZSYgQ2FudmFzU3R5bGU6Om9wZXJhdG9yPShjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpCkBA
IC0yNDEsNyArMjQxLDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2gg
KG1fdHlwZSkgewogICAgIGNhc2UgUkdCQToKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IobV9yZ2JhKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9jb2xvcik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6IERvIHRo
aXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9y
Z2JhKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91
Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCmluZGV4IGFlOWRhYTg0NTJiYWIzNmMzMjZiZDEx
MzY4OTdmMDg1NzhiZThkOTAuLjM5MDhlODU2NjMzOTQ3NzY1NGJlMWVlNmY2OTgxN2ZkZGY3ZTYy
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtNDIsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FudmFzU3R5bGUgewogICAg
IHB1YmxpYzoKICAgICAgICAgQ2FudmFzU3R5bGUoKTsKLSAgICAgICAgZXhwbGljaXQgQ2FudmFz
U3R5bGUoUkdCQTMyKTsKKyAgICAgICAgZXhwbGljaXQgQ2FudmFzU3R5bGUoQ29sb3IpOwogICAg
ICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKTsKICAgICAgICAg
Q2FudmFzU3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYWxwaGEpOwogICAg
ICAgICBDYW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9h
dCBhbHBoYSk7CkBAIC04MCw5ICs4MCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENNWUtBVmFsdWVzKTsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgQ01ZS0FW
YWx1ZXMoKSA6IHJnYmEoMCksIGMoMCksIG0oMCksIHkoMCksIGsoMCksIGEoMCkgeyB9Ci0gICAg
ICAgICAgICBDTVlLQVZhbHVlcyhSR0JBMzIgcmdiYSwgZmxvYXQgY3lhbiwgZmxvYXQgbWFnZW50
YSwgZmxvYXQgeWVsbG93LCBmbG9hdCBibGFjaywgZmxvYXQgYWxwaGEpIDogcmdiYShyZ2JhKSwg
YyhjeWFuKSwgbShtYWdlbnRhKSwgeSh5ZWxsb3cpLCBrKGJsYWNrKSwgYShhbHBoYSkgeyB9Ci0g
ICAgICAgICAgICBSR0JBMzIgcmdiYTsKKyAgICAgICAgICAgIENNWUtBVmFsdWVzKCkKKyAgICAg
ICAgICAgICAgICA6IGNvbG9yKCksIGMoMCksIG0oMCksIHkoMCksIGsoMCksIGEoMCkKKyAgICAg
ICAgICAgIHsgfQorCisgICAgICAgICAgICBDTVlLQVZhbHVlcyhDb2xvciBjb2xvciwgZmxvYXQg
Y3lhbiwgZmxvYXQgbWFnZW50YSwgZmxvYXQgeWVsbG93LCBmbG9hdCBibGFjaywgZmxvYXQgYWxw
aGEpCisgICAgICAgICAgICAgICAgOiBjb2xvcihjb2xvciksIGMoY3lhbiksIG0obWFnZW50YSks
IHkoeWVsbG93KSwgayhibGFjayksIGEoYWxwaGEpCisgICAgICAgICAgICB7IH0KKyAgICAgICAg
ICAgIENvbG9yIGNvbG9yOwogICAgICAgICAgICAgZmxvYXQgYzsKICAgICAgICAgICAgIGZsb2F0
IG07CiAgICAgICAgICAgICBmbG9hdCB5OwpAQCAtOTksNyArMTA0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgdW5pb24gewotICAgICAgICAgICAgUkdCQTMy
IG1fcmdiYTsKKyAgICAgICAgICAgIENvbG9yIG1fY29sb3I7CiAgICAgICAgICAgICBmbG9hdCBt
X292ZXJyaWRlQWxwaGE7CiAgICAgICAgICAgICBDYW52YXNHcmFkaWVudCogbV9ncmFkaWVudDsK
ICAgICAgICAgICAgIENhbnZhc1BhdHRlcm4qIG1fcGF0dGVybjsKQEAgLTEzNCw4ICsxMzksOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFJH
QkEgfHwgbV90eXBlID09IENNWUtBKTsKICAgICAgICAgaWYgKG1fdHlwZSA9PSBSR0JBKQotICAg
ICAgICAgICAgcmV0dXJuIENvbG9yKG1fcmdiYSkuc2VyaWFsaXplZCgpOwotICAgICAgICByZXR1
cm4gQ29sb3IobV9jbXlrYS0+cmdiYSkuc2VyaWFsaXplZCgpOworICAgICAgICAgICAgcmV0dXJu
IG1fY29sb3Iuc2VyaWFsaXplZCgpOworICAgICAgICByZXR1cm4gbV9jbXlrYS0+Y29sb3Iuc2Vy
aWFsaXplZCgpOwogICAgIH0KIAogICAgIGlubGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUo
Q2FudmFzU3R5bGUmJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmgKaW5kZXggM2YzNTY3MmRhNGYzNWMyMmI0ZjkyODQxMzQyOTM3ZDhi
NDQ3N2MwMi4uNTM2Y2IwYTc0ZDBmYzkzYzI3OWUwMzU0ZDdmNzBjMjcxMzhhYWQ2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTYy
LDEzICs2MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250TmFtZShTdHJpbmcgbmFtZSkg
eyBtX2ZvbnROYW1lID0gbmFtZTsgfQogCiAgICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEZvcmVncm91bmRD
b2xvcihSR0JBMzIgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQor
ICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKENvbG9yIGNvbG9yKSB7IG1fZm9yZWdyb3VuZENv
bG9yID0gY29sb3I7IH0KICAgICAKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KFJHQkEzMiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsgfQogICAgIAogICAgIENvbG9yIGhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoUkdCQTMy
IGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3Iuc2V0UkdCKGNvbG9yKTsgfQorICAgIHZvaWQgc2V0
SGlnaGxpZ2h0Q29sb3IoQ29sb3IgY29sb3IpIHsgbV9oaWdobGlnaHRDb2xvciA9IGNvbG9yOyB9
CiAgICAgCiAgICAgdm9pZCBzZXRGb250U2l6ZShpbnQsIGNvbnN0IEludFNpemUmLCBib29sIGlt
cG9ydGFudCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAKaW5kZXgg
NjRkMDdlNDhiMmFmZWExOWYyYzIxODc2MjBjM2E2OTQ3MTU0ZjM5NC4uZGMzMmU2ZWExNTRlNTFi
Mzg4OTNiMDliNzY4OWZlNjljMDcxNmJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5j
cHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBJbnRTaXplIFBhZ2VPdmVybGF5Ojp2aWV3VG9PdmVybGF5
T2Zmc2V0KCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZSgpOwogfQogCi12b2lkIFBhZ2VPdmVy
bGF5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoUkdCQTMyIGJhY2tncm91bmRDb2xvcikKK3ZvaWQgUGFn
ZU92ZXJsYXk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29sb3Ip
CiB7CiAgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09IGJhY2tncm91bmRDb2xvcikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5oCmluZGV4IGY5MGQwYzM2NGEwODZj
MzRiZDZlYWIxMjE1N2Q0ZmVjNzg2OGE5OGQuLmI2YzVjNDU4MWNkYjBmMjZkZmVlODNkMmFmZDg2
YWU2M2ViMGFjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmgKQEAgLTEwNiw4ICsxMDYs
OCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIHZpZXdUb092ZXJsYXlP
ZmZzZXQoKSBjb25zdDsKIAotICAgIFJHQkEzMiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFJH
QkEzMik7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
Z3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvcik7
CiAKICAgICB2b2lkIHNldFNob3VsZElnbm9yZU1vdXNlRXZlbnRzT3V0c2lkZUJvdW5kcyhib29s
IGZsYWcpIHsgbV9zaG91bGRJZ25vcmVNb3VzZUV2ZW50c091dHNpZGVCb3VuZHMgPSBmbGFnOyB9
CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIE92ZXJsYXlUeXBlIG1fb3Zlcmxh
eVR5cGU7CiAgICAgSW50UmVjdCBtX292ZXJyaWRlRnJhbWU7CiAKLSAgICBSR0JBMzIgbV9iYWNr
Z3JvdW5kQ29sb3IgeyBDb2xvcjo6dHJhbnNwYXJlbnQgfTsKKyAgICBDb2xvciBtX2JhY2tncm91
bmRDb2xvciB7IENvbG9yOjp0cmFuc3BhcmVudCB9OwogICAgIFBhZ2VPdmVybGF5SUQgbV9wYWdl
T3ZlcmxheUlEOwogCiAgICAgYm9vbCBtX3Nob3VsZElnbm9yZU1vdXNlRXZlbnRzT3V0c2lkZUJv
dW5kcyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCAwNzYwMmQy
N2U2ZTQwMWE1ZDY5YzQ4ZTlkZTNkNjBiNDE3MzJhZjY0Li4zMmE3NDNiYTViOGQ0ZDg2MThlNDFl
MTM4NTQ0MmFkODZhNjA3N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBAIC04
NywxMyArODcsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVsYXRpdmVGb250U2l6ZShkb3Vi
bGUgcmVsYXRpdmVGb250U2l6ZSkgeyBtX3JlbGF0aXZlRm9udFNpemUgPSByZWxhdGl2ZUZvbnRT
aXplOyB9CiAKICAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2Zv
cmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKFJHQkEzMiBjb2xv
cikgeyBtX2ZvcmVncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAgdm9pZCBzZXRGb3Jl
Z3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQog
CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
Q29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihSR0JBMzIgY29sb3IpIHsgbV9i
YWNrZ3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENv
bG9yKENvbG9yIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KICAgICAKICAg
ICBDb2xvciBoaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGlnaGxpZ2h0Q29sb3I7
IH0KLSAgICB2b2lkIHNldEhpZ2hsaWdodENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2hpZ2hsaWdo
dENvbG9yLnNldFJHQihjb2xvcik7IH0KKyAgICB2b2lkIHNldEhpZ2hsaWdodENvbG9yKENvbG9y
IGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsgfQogICAgIAogICAgIGVudW0gU3Rh
dHVzIHsKICAgICAgICAgVW5pbml0aWFsaXplZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKaW5kZXggMzc2Zjc5ZjgzOTgyZTJhYmNlZTE1M2M3
ZjZhOWMwMDE3OWMzN2EzMC4uOTdmNDRjMTcxNjZkZTJkYjIxZmNlNWEzZjRiYzlhNzJhZWQ5NjAy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFj
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoYm9vbCk7CiAgICAgCiAgICAg
Ly8gRm9jdXMgcmluZyBjb2xvciB1c2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgotICAgIFJHQkEz
MiBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKTsKKyAgICBDb2xvciBvbGRBcXVhRm9jdXNSaW5nQ29s
b3IoKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29sb3JNYWMubW0KaW5kZXggMzkzYjNjNjQ4MTI1OTI1Y2FlOTlmMmIzMTNhZWIzN2NmMjBlMDY5
Ni4uY2RjYzZmNjdiZjU0NjRhYmJkOGQzZGZmOTAzZjgxMjBhOTAyNGU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHVzZU9sZEFxdWFGb2N1
c1JpbmdDb2xvcjsKIAotUkdCQTMyIG9sZEFxdWFGb2N1c1JpbmdDb2xvcigpCitDb2xvciBvbGRB
cXVhRm9jdXNSaW5nQ29sb3IoKQogewogICAgIHJldHVybiAweEZGN0RBREQ5OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCA0ZDM4OWJjOTFm
MTZkNDE5M2ZjMWJkNjZkYzVlZDU4MmJlMTk4NjhjLi40NWQ4YzdiZWI0MWU2YmI4ZDQwZWYzM2Y3
ZGFjNGM0N2QyNGJjYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclRhYmxl
Q2VsbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlbmRlclRhYmxlQ2VsbCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJUYWJsZUNlbGwp
LCBSZW5kZXJUYWJsZUNlbGxfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAxMiwgQ29sbGFwc2VkQm9yZGVyVmFsdWVfc2hv
dWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENvbGxhcHNlZEJvcmRlclZh
bHVlKSA9PSAxNiwgQ29sbGFwc2VkQm9yZGVyVmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOwogCiBS
ZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCAxNmYwMDI3MGM5
Yzc3ZTY4OTUzNjFhOWE0OTVlMDY0MjIxYzBiZjcwLi4yZTk0YjM1ZDQ4MjNhODk4NTJhNjg2YWM3
NGExNzVkYThmZjJiZTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApA
QCAtNDEyLDcgKzQxMiw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAg
ICAvLyBUaGlzIGNvbG9yIGlzIGV4cGVjdGVkIHRvIGJlIGRyYXduIG9uIGEgc2VtaS10cmFuc3Bh
cmVudCBvdmVybGF5LAogICAgIC8vIG1ha2luZyBpdCBtb3JlIHRyYW5zcGFyZW50IHRoYW4gaXRz
IGFscGhhIHZhbHVlIGluZGljYXRlcy4KLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGRlZmF1bHRU
YXBIaWdobGlnaHRDb2xvciA9IDB4NjYwMDAwMDA7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IENvbG9yPiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSAweDY2MDAwMDAwOwogI2Vu
ZGlmCiAKICNpZiBVU0UoTkVXX1RIRU1FKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQm9yZGVyVmFsdWUuaAppbmRleCBjZjM0MGQwZjY4MmU3NGFlNDkyY2NlZmNmYWNjYTExNjcy
NzdhNGJkLi42YmJkYmQyM2U0OGJiNzFjNGYyYTMzYzhkYzkzYTI1NjQzYTYyYTM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApAQCAtMzQsMTAgKzM0
LDcgQEAgY2xhc3MgQm9yZGVyVmFsdWUgewogZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwogcHVi
bGljOgogICAgIEJvcmRlclZhbHVlKCkKLSAgICAgICAgOiBtX3dpZHRoKDMpCi0gICAgICAgICwg
bV9jb2xvcigwKQotICAgICAgICAsIG1fY29sb3JJc1ZhbGlkKGZhbHNlKQotICAgICAgICAsIG1f
c3R5bGUoQk5PTkUpCisgICAgICAgIDogbV9zdHlsZShCTk9ORSkKICAgICAgICAgLCBtX2lzQXV0
byhBVVRPX09GRikKICAgICB7CiAgICAgfQpAQCAtNDksNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzVHJhbnNwYXJlbnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY29s
b3JJc1ZhbGlkICYmICFhbHBoYUNoYW5uZWwobV9jb2xvcik7CisgICAgICAgIHJldHVybiBtX2Nv
bG9yLmlzVmFsaWQoKSAmJiAhbV9jb2xvci5hbHBoYSgpOwogICAgIH0KIAogICAgIGJvb2wgaXNW
aXNpYmxlKGJvb2wgY2hlY2tTdHlsZSA9IHRydWUpIGNvbnN0CkBAIC01OSw3ICs1Niw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3JkZXJWYWx1ZSYgbykgY29uc3QK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX3N0eWxlID09
IG8ubV9zdHlsZSAmJiBtX2NvbG9yID09IG8ubV9jb2xvciAmJiBtX2NvbG9ySXNWYWxpZCA9PSBv
Lm1fY29sb3JJc1ZhbGlkOworICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYg
bV9zdHlsZSA9PSBvLm1fc3R5bGUgJiYgbV9jb2xvciA9PSBvLm1fY29sb3I7CiAgICAgfQogCiAg
ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEJvcmRlclZhbHVlJiBvKSBjb25zdApAQCAtNjksMTkg
KzY2LDE3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQogICAgIHsKLSAgICAgICAgbV9jb2xvciA9IGNvbG9yLnJnYigpOwotICAgICAgICBtX2NvbG9y
SXNWYWxpZCA9IGNvbG9yLmlzVmFsaWQoKTsKKyAgICAgICAgbV9jb2xvciA9IGNvbG9yOwogICAg
IH0KIAotICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9jb2xvciwgbV9j
b2xvcklzVmFsaWQpOyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9y
OyB9CiAKICAgICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBF
Qm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyU3R5
bGU+KG1fc3R5bGUpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBmbG9hdCBtX3dpZHRoOwotICAgIFJH
QkEzMiBtX2NvbG9yOwotICAgIHVuc2lnbmVkIG1fY29sb3JJc1ZhbGlkIDogMTsKKyAgICBmbG9h
dCBtX3dpZHRoIHsgMyB9OworICAgIENvbG9yIG1fY29sb3I7CiAKICAgICB1bnNpZ25lZCBtX3N0
eWxlIDogNDsgLy8gRUJvcmRlclN0eWxlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKaW5kZXggNmU5YjMyODdlZjBjNDI4
ZWUxOWIxZDI0Yjk0ZWZiNDYwYjYxMGEzOS4uMTFjM2Y4NDJmMTIwOTgwZmFiZGMwZTQxOTA4YTQ4
OGMwNDhmMjlkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Nv
bGxhcHNlZEJvcmRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKQEAgLTMzLDggKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ29sbGFwc2VkQm9yZGVyVmFsdWUgewogcHVibGljOgogICAgIENvbGxhcHNl
ZEJvcmRlclZhbHVlKCkKLSAgICAgICAgOiBtX2NvbG9ySXNWYWxpZChmYWxzZSkKLSAgICAgICAg
LCBtX3N0eWxlKEJOT05FKQorICAgICAgICA6IG1fc3R5bGUoQk5PTkUpCiAgICAgICAgICwgbV9w
cmVjZWRlbmNlKEJPRkYpCiAgICAgICAgICwgbV90cmFuc3BhcmVudChmYWxzZSkKICAgICB7CkBA
IC00Miw4ICs0MSw3IEBAIHB1YmxpYzoKIAogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbnN0
IEJvcmRlclZhbHVlJiBib3JkZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgRUJvcmRlclByZWNlZGVu
Y2UgcHJlY2VkZW5jZSkKICAgICAgICAgOiBtX3dpZHRoKExheW91dFVuaXQoYm9yZGVyLm5vblpl
cm8oKSA/IGJvcmRlci53aWR0aCgpIDogMCkpCi0gICAgICAgICwgbV9jb2xvcihjb2xvci5yZ2Io
KSkKLSAgICAgICAgLCBtX2NvbG9ySXNWYWxpZChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICwg
bV9jb2xvcihjb2xvcikKICAgICAgICAgLCBtX3N0eWxlKGJvcmRlci5zdHlsZSgpKQogICAgICAg
ICAsIG1fcHJlY2VkZW5jZShwcmVjZWRlbmNlKQogICAgICAgICAsIG1fdHJhbnNwYXJlbnQoYm9y
ZGVyLmlzVHJhbnNwYXJlbnQoKSkKQEAgLTUzLDcgKzUxLDcgQEAgcHVibGljOgogICAgIExheW91
dFVuaXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlID4gQkhJRERFTiA/IG1fd2lkdGgg
OiBMYXlvdXRVbml0Ojpmcm9tUGl4ZWwoMCk7IH0KICAgICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyU3R5bGU+KG1fc3R5bGUpOyB9CiAgICAg
Ym9vbCBleGlzdHMoKSBjb25zdCB7IHJldHVybiBtX3ByZWNlZGVuY2UgIT0gQk9GRjsgfQotICAg
IENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9jb2xvciwgbV9jb2xvcklzVmFs
aWQpOyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAgICAg
Ym9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc3BhcmVudDsgfQogICAg
IEVCb3JkZXJQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2Fz
dDxFQm9yZGVyUHJlY2VkZW5jZT4obV9wcmVjZWRlbmNlKTsgfQogCkBAIC02Niw4ICs2NCw3IEBA
IHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG1fd2lkdGg7Ci0gICAgUkdCQTMy
IG1fY29sb3IgeyAwIH07Ci0gICAgdW5zaWduZWQgbV9jb2xvcklzVmFsaWQgOiAxOworICAgIENv
bG9yIG1fY29sb3I7CiAgICAgdW5zaWduZWQgbV9zdHlsZSA6IDQ7IC8vIEVCb3JkZXJTdHlsZQog
ICAgIHVuc2lnbmVkIG1fcHJlY2VkZW5jZSA6IDM7IC8vIEVCb3JkZXJQcmVjZWRlbmNlCiAgICAg
dW5zaWduZWQgbV90cmFuc3BhcmVudCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvT3V0bGluZVZhbHVlLmgKaW5kZXggMGFmZTVhODEyZjI5OTE4NWE3NWMzNWI0YjgzNTQy
OGNhODU3NGM5NS4uZDU4YjBhMTJmYmZjYTY1ZWM1OTYyYzBkYTI0MjZkM2VmMjkzNzQ0NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaApAQCAtMzQs
NyArMzQsNyBAQCBmcmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7CiBwdWJsaWM6CiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE91dGxpbmVWYWx1ZSYgbykgY29uc3QKICAgICB7Ci0gICAgICAgIHJl
dHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX3N0eWxlID09IG8ubV9zdHlsZSAmJiBtX2Nv
bG9yID09IG8ubV9jb2xvciAmJiBtX2NvbG9ySXNWYWxpZCA9PSBvLm1fY29sb3JJc1ZhbGlkICYm
IG1fb2Zmc2V0ID09IG8ubV9vZmZzZXQgJiYgbV9pc0F1dG8gPT0gby5tX2lzQXV0bzsKKyAgICAg
ICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1fc3R5bGUgPT0gby5tX3N0eWxlICYm
IG1fY29sb3IgPT0gby5tX2NvbG9yICYmIG1fb2Zmc2V0ID09IG8ubV9vZmZzZXQgJiYgbV9pc0F1
dG8gPT0gby5tX2lzQXV0bzsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0
IE91dGxpbmVWYWx1ZSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDM1NDA5YTFmY2M3YWFhMDBmZWVjZjhjZjA4NmYxMzk3
YmVhY2FjNGEuLmQ4NWIzODM3ZmJkZmQxYTZjZmY1ZTk0ZGZhYjA4Njc0MTJhNjk3OTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNjQs
NyArNjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzQm9yZGVy
VmFsdWUgewogICAgIGZsb2F0IG1fd2lkdGg7Ci0gICAgUkdCQTMyIG1fY29sb3I7CisgICAgQ29s
b3IgbV9jb2xvcjsKICAgICBpbnQgbV9yZXN0Qml0czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IGI5YTg0ZTY2NDIwYmQ2Y2Y1
MWMyODRmMjI5NzcxMmExNzBlODYwYTcuLmE3NjBjNzY4MmZlNWQ4ODNiYzkxNmFkY2U0MzViNjlm
MzEzZGNiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJp
bmdFeHRyYXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4
dHJhcy5tbQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBCT09MIGNhblVzZUZhc3RSZW5kZXJl
cihjb25zdCBVbmlDaGFyICpidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgQ0dGbG9h
dCBibHVlOwogICAgICAgICBDR0Zsb2F0IGFscGhhOwogICAgICAgICBbW3RleHRDb2xvciBjb2xv
clVzaW5nQ29sb3JTcGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXSBnZXRSZWQ6JnJlZCBn
cmVlbjomZ3JlZW4gYmx1ZTomYmx1ZSBhbHBoYTomYWxwaGFdOwotICAgICAgICBncmFwaGljc0Nv
bnRleHQuc2V0RmlsbENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwgZ3JlZW4gKiAyNTUsIGJsdWUg
KiAyNTUsIGFscGhhICogMjU1KSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29s
b3IoQ29sb3Ioc3RhdGljX2Nhc3Q8ZmxvYXQ+KHJlZCAqIDI1NSksIHN0YXRpY19jYXN0PGZsb2F0
PihncmVlbiAqIDI1NS4wZiksIHN0YXRpY19jYXN0PGZsb2F0PihibHVlICogMjU1LjBmKSwgc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KGFscGhhICogMjU1LjBmKSkpOwogCiAgICAgICAgIHdlYkNvcmVGb250
LmRyYXdUZXh0KGdyYXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlw
cGVkID8gcG9pbnQueSA6ICgtMSAqIHBvaW50LnkpKSkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288729</attachid>
            <date>2016-09-13 14:30:38 -0700</date>
            <delta_ts>2016-09-13 15:13:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161856-20160914072755.patch</filename>
            <type>text/plain</type>
            <size>25694</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1ODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2UxZDIzMjcxZjFjMjI5
NGM3MWI0MGUxYTEyNDAxYmUwODUxNjBiOS4uZTBkNDM3M2FlNjJiMzA5ZGZmYWI4YTY2NmY2ZTM2
M2I1NTkzZjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE2LTA5LTEyICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB3aXRo
IENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyNTQz
MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4g
cHJlcGFyYXRpb24gZm9yIHRoZSBDb2xvciBjbGFzcyB0byBiZWNvbWUgbW9yZSB0aGFuCisgICAg
ICAgIGp1c3QgYSA0LWJ5dGUgUkdCQSB2YWx1ZSwgSSB3ZW50IHRocm91Z2ggYSBmZXcgcGxhY2Vz
CisgICAgICAgIHRoYXQgd2VyZSB1c2luZyB0aGUgUkdCQTMyIHR5cGUgZGlyZWN0bHksIGFuZCBy
ZXBsYWNlZAorICAgICAgICB0aGVtIHdpdGggQ29sb3IuIFRoaXMgd2lsbCBtYWtlIHNvbWUgb2Jq
ZWN0cyBhIGxpdHRsZQorICAgICAgICBiaWdnZXIgZS5nLiBCb3JkZXJWYWx1ZSBhbmQgaXRzIGZy
aWVuZHMuCisKKyAgICAgICAgSSBtb3N0bHkgbG9va2VkIGF0IHRoZSBwbGFjZXMgdGhhdCB3ZXJl
IHVzaW5nIFJHQkEzMiBhcworICAgICAgICBhIG1lbWJlciB2YXJpYWJsZS4gVGhlcmUgaXMgc3Rp
bGwgYSBsb3Qgb2YgUkdCQTMyIHVzZQorICAgICAgICBhcm91bmQgdGhlIHByb2plY3QsIGluIHBh
cnRpY3VsYXIgdGhlIENTUyBwYXJzZXIuCisKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIG5vIGJl
aGF2aW91ciBjaGFuZ2UuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwOiBTaGFkb3dzIG5vdyB1c2UgQ29sb3IuCisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNob3VsZERyYXdTaGFkb3dzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6ZGlkRHJhdyk6CisgICAgICAgICogaHRt
bC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmg6CisgICAgICAgICogaHRtbC9jYW52
YXMvQ2FudmFzU3R5bGUuY3BwOiBDYW52YXMgc3R5bGUgdXNlcyBDb2xvciBmb3IgZmlsbHMgYW5k
IHN0cm9rZXMuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENvbG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRSR0JBKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc1N0eWxlOjphcHBseUZpbGxDb2xvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2Fu
dmFzU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpDTVlLQVZhbHVlczo6
Q01ZS0FWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OmNvbG9yKToKKwor
ICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oOiBGb3JlZ3JvdW5kLCBi
YWNrZ3JvdW5kIGFuZAorICAgICAgICBoaWdobGlnaHQgY29sb3JzLgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRGb3JlZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGE6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0SGlnaGxpZ2h0Q29sb3IpOgorCisgICAgICAgICogcGFn
ZS9QYWdlT3ZlcmxheS5jcHA6IEJhY2tncm91bmQgY29sb3IuCisgICAgICAgIChXZWJDb3JlOjpQ
YWdlT3ZlcmxheTo6c2V0QmFja2dyb3VuZENvbG9yKToKKyAgICAgICAgKiBwYWdlL1BhZ2VPdmVy
bGF5Lmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaDogUmFu
ZG9tIGZ1bmN0aW9uIHRoYXQgcmV0dXJuZWQgUkdCQTMyLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om9sZEFxdWFGb2N1c1Jp
bmdDb2xvcik6CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcDogVXBk
YXRlIHRoZSBzaXplIG9mIENvbGxhcHNlZEJvcmRlclZhbHVlLgorCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmg6IFVzZSBhIE5ldmVyRGVzdHJveWVkIENvbG9yIHJhdGhlciB0aGFu
IGEgc3RhdGljIFJHQkEzMi4KKworICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1
ZS5oOiBVc2UgYSBDb2xvci4KKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlclZhbHVlOjpCb3JkZXJW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6aXNUcmFuc3BhcmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJD
b3JlOjpCb3JkZXJWYWx1ZTo6c2V0Q29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFs
dWU6OmNvbG9yKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbGxhcHNlZEJvcmRlclZhbHVlOjpDb2xsYXBzZWRC
b3JkZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6Y29s
b3IpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok91dGxpbmVWYWx1ZTo6b3BlcmF0b3I9PSk6CisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOiBVcGRhdGUgdG8gbWF0Y2ggbmV3IEJvcmRlclZhbHVl
LgorCiAyMDE2LTA5LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVVJMUGFyc2VyOiBDb3JyZWN0bHkgaGFuZGxlIHJlbGF0aXZlIFVSTHMg
dGhhdCBhcmUganVzdCBhIHNjaGVtZSBhbmQgYSBjb2xvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGY5
YmM3MzdiZDg2ZjQ4MmI5NmZlZTk2M2NmMDZhZjU0YTAxZTUxMjMuLjRiMWQ0NjM0ODNmYTM3YTVl
ZDZkM2JlZTg0NDZkMGYzOTBkMjkwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBA
QAorMjAxNi0wOS0xMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmVwbGFjZSBSR0JBMzIgd2l0aCBDb2xvciBpbiBtZW1iZXIgdmFyaWFibGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4NTYKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzI4MjU0MzI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEluIHByZXBhcmF0aW9uIGZvciB0aGUgQ29sb3IgY2xhc3MgdG8gYmVj
b21lIG1vcmUgdGhhbgorICAgICAgICBqdXN0IGEgNC1ieXRlIFJHQkEgdmFsdWUsIEkgd2VudCB0
aHJvdWdoIGEgZmV3IHBsYWNlcworICAgICAgICB0aGF0IHdlcmUgdXNpbmcgdGhlIFJHQkEzMiB0
eXBlIGRpcmVjdGx5LCBhbmQgcmVwbGFjZWQKKyAgICAgICAgdGhlbSB3aXRoIENvbG9yLiBUaGlz
IHdpbGwgbWFrZSBzb21lIG9iamVjdHMgYSBsaXR0bGUKKyAgICAgICAgYmlnZ2VyIGUuZy4gQm9y
ZGVyVmFsdWUgYW5kIGl0cyBmcmllbmRzLgorCisgICAgICAgIEkgbW9zdGx5IGxvb2tlZCBhdCB0
aGUgcGxhY2VzIHRoYXQgd2VyZSB1c2luZyBSR0JBMzIgYXMKKyAgICAgICAgYSBtZW1iZXIgdmFy
aWFibGUuIFRoZXJlIGlzIHN0aWxsIGEgbG90IG9mIFJHQkEzMiB1c2UKKyAgICAgICAgYXJvdW5k
IHRoZSBwcm9qZWN0LCBpbiBwYXJ0aWN1bGFyIHRoZSBDU1MgcGFyc2VyLgorCisgICAgICAgIFRo
ZXJlIHNob3VsZCBiZSBubyBiZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgICogTWlzYy9XZWJL
aXROU1N0cmluZ0V4dHJhcy5tbToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQb2lu
dDpmb250OnRleHRDb2xvcjphbGxvd2luZ0ZvbnRTbW9vdGhpbmc6XSk6IEV4cGxpY2l0bHkKKyAg
ICAgICAgY2FsbCBhIENvbG9yIGNvbnN0cnVjdG9yLCByYXRoZXIgdGhhbiBwYXNzaW5nIGFuIFJH
QkEzMi4KKwogMjAxNi0wOS0xMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFN3aXRjaCByZW1haW5pbmcgdXNlcnMgb2YgRG9jdW1lbnQ6OmluUGFnZUNhY2hlKCkg
dG8gcGFnZUNhY2hlU3RhdGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2Y5NTFjNmVhZjA5ZThmZTZj
MGEzZGVlYmE3ZjBiMWVlOGY5ZWU5Ni4uZWIyZGI1NWY4YmJmM2YwOGVhYjhiYWM3NTc0NTgzZWIw
MTJjNGMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xMjU4LDE3ICsxMjU4LDE3IEBAIHZvaWQgQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdo
dCwgZmxvYXQgYmx1ciwKIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRv
dyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCBncmF5TGV2ZWws
IGZsb2F0IGFscGhhKQogewotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCks
IGJsdXIsIG1ha2VSR0JBMzJGcm9tRmxvYXRzKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2
ZWwsIGFscGhhKSk7CisgICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1
ciwgQ29sb3IoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwgYWxwaGEpKTsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxv
YXQgaGVpZ2h0LCBmbG9hdCBibHVyLCBmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBh
KQogewotICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIG1ha2VS
R0JBMzJGcm9tRmxvYXRzKHIsIGcsIGIsIGEpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdp
ZHRoLCBoZWlnaHQpLCBibHVyLCBDb2xvcihyLCBnLCBiLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwg
ZmxvYXQgYmx1ciwgZmxvYXQgYywgZmxvYXQgbSwgZmxvYXQgeSwgZmxvYXQgaywgZmxvYXQgYSkK
IHsKLSAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBtYWtlUkdC
QUZyb21DTVlLQShjLCBtLCB5LCBrLCBhKSk7CisgICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0
aCwgaGVpZ2h0KSwgYmx1ciwgQ29sb3IoYywgbSwgeSwgaywgYSkpOwogfQogCiB2b2lkIENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3coKQpAQCAtMTI3Niw3ICsxMjc2LDcgQEAg
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmNsZWFyU2hhZG93KCkKICAgICBzZXRTaGFk
b3coRmxvYXRTaXplKCksIDAsIENvbG9yOjp0cmFuc3BhcmVudCk7CiB9CiAKLXZvaWQgQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZs
b2F0IGJsdXIsIFJHQkEzMiBjb2xvcikKK3ZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpz
ZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIENvbG9yIGNvbG9y
KQogewogICAgIGlmIChzdGF0ZSgpLnNoYWRvd09mZnNldCA9PSBvZmZzZXQgJiYgc3RhdGUoKS5z
aGFkb3dCbHVyID09IGJsdXIgJiYgc3RhdGUoKS5zaGFkb3dDb2xvciA9PSBjb2xvcikKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6OmFwcGx5U2hhZG93KCkKIAogYm9vbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNo
b3VsZERyYXdTaGFkb3dzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gYWxwaGFDaGFubmVsKHN0YXRl
KCkuc2hhZG93Q29sb3IpICYmIChzdGF0ZSgpLnNoYWRvd0JsdXIgfHwgIXN0YXRlKCkuc2hhZG93
T2Zmc2V0LmlzWmVybygpKTsKKyAgICByZXR1cm4gc3RhdGUoKS5zaGFkb3dDb2xvci5hbHBoYSgp
ICYmIChzdGF0ZSgpLnNoYWRvd0JsdXIgfHwgIXN0YXRlKCkuc2hhZG93T2Zmc2V0LmlzWmVybygp
KTsKIH0KIAogZW51bSBJbWFnZVNpemVUeXBlIHsKQEAgLTE4ODIsNyArMTg4Miw3IEBAIHZvaWQg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkaWREcmF3KGNvbnN0IEZsb2F0UmVjdCYgciwgdW5z
aWduZWQgb3B0aW9ucykKICAgICAgICAgZGlydHlSZWN0ID0gY3RtLm1hcFJlY3Qocik7CiAgICAg
fQogCi0gICAgaWYgKG9wdGlvbnMgJiBDYW52YXNEaWREcmF3QXBwbHlTaGFkb3cgJiYgYWxwaGFD
aGFubmVsKHN0YXRlKCkuc2hhZG93Q29sb3IpKSB7CisgICAgaWYgKG9wdGlvbnMgJiBDYW52YXNE
aWREcmF3QXBwbHlTaGFkb3cgJiYgc3RhdGUoKS5zaGFkb3dDb2xvci5hbHBoYSgpKSB7CiAgICAg
ICAgIC8vIFRoZSBzaGFkb3cgZ2V0cyBhcHBsaWVkIGFmdGVyIHRyYW5zZm9ybWF0aW9uCiAgICAg
ICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0KGRpcnR5UmVjdCk7CiAgICAgICAgIHNoYWRvd1JlY3Qu
bW92ZShzdGF0ZSgpLnNoYWRvd09mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCmluZGV4IDc5MDI2ZjYzYjcwOTRl
ODE0OWRiZWEyMzI3MzUyZmU0MGQ2ZTNkMWMuLmNjYjIxZTUxZGY1YjJkNzRjYWJkYWRmOTg0ZGNm
ODI2NDgyNDc0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oCkBAIC0yODQsNyArMjg0LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgZmxvYXQgbWl0ZXJMaW1pdDsKICAgICAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsK
ICAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKLSAgICAgICAgUkdCQTMyIHNoYWRvd0NvbG9yOwor
ICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICAgICAgZmxvYXQgZ2xvYmFsQWxwaGE7CiAg
ICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGdsb2JhbENvbXBvc2l0ZTsKICAgICAgICAgQmxlbmRN
b2RlIGdsb2JhbEJsZW5kOwpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAgY29uc3Qg
U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZVN0YWNrLmxhc3QoKTsgfQogCiAg
ICAgdm9pZCBhcHBseUxpbmVEYXNoKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTaGFkb3coY29uc3Qg
RmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIFJHQkEzMiBjb2xvcik7CisgICAgdm9pZCBz
ZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIENvbG9yKTsKICAg
ICB2b2lkIGFwcGx5U2hhZG93KCk7CiAgICAgYm9vbCBzaG91bGREcmF3U2hhZG93cygpIGNvbnN0
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5jcHAKaW5kZXggMWM4
YjIwMzU3ODViNTNiMDdhNTJiNDhiYTA4YjM5ZTlhYmFkZTdlZi4uOGNiNGM5MDQyZDdkZmI5NDZi
ZjExY2Y2OTA4NjBjMTViYmZjMzJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1N0eWxlLmNwcApAQCAtODMsMjYgKzgzLDI2IEBAIGJvb2wgcGFyc2VDb2xvck9yQ3VycmVu
dENvbG9yKFJHQkEzMiYgcGFyc2VkQ29sb3IsIGNvbnN0IFN0cmluZyYgY29sb3JTdHJpbmcsIEhU
CiAgICAgfQogfQogCi1DYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoUkdCQTMyIHJnYmEpCi0gICAg
OiBtX3JnYmEocmdiYSkKK0NhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShDb2xvciBjb2xvcikKKyAg
ICA6IG1fY29sb3IoY29sb3IpCiAgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFzU3R5
bGU6OkNhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpCi0gICAgOiBtX3Jn
YmEobWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
YWxwaGEpKQorICAgIDogbV9jb2xvcihDb2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxl
dmVsLCBhbHBoYSkpCiAgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNh
bnZhc1N0eWxlKGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCi0gICAgOiBtX3Jn
YmEobWFrZVJHQkEzMkZyb21GbG9hdHMociwgZywgYiwgYSkpCisgICAgOiBtX2NvbG9yKENvbG9y
KHIsIGcsIGIsIGEpKQogICAgICwgbV90eXBlKFJHQkEpCiB7CiB9CiAKIENhbnZhc1N0eWxlOjpD
YW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQot
ICAgIDogbV9jbXlrYShuZXcgQ01ZS0FWYWx1ZXMobWFrZVJHQkFGcm9tQ01ZS0EoYywgbSwgeSwg
aywgYSksIGMsIG0sIHksIGssIGEpKQorICAgIDogbV9jbXlrYShuZXcgQ01ZS0FWYWx1ZXMoQ29s
b3IoYywgbSwgeSwgaywgYSksIGMsIG0sIHksIGssIGEpKQogICAgICwgbV90eXBlKENNWUtBKQog
ewogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENv
bG9yKGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikgY29uc3QKIAogICAgIHN3aXRjaCAobV90eXBl
KSB7CiAgICAgY2FzZSBSR0JBOgotICAgICAgICByZXR1cm4gbV9yZ2JhID09IG90aGVyLm1fcmdi
YTsKKyAgICAgICAgcmV0dXJuIG1fY29sb3IgPT0gb3RoZXIubV9jb2xvcjsKICAgICBjYXNlIENN
WUtBOgogICAgICAgICByZXR1cm4gbV9jbXlrYS0+YyA9PSBvdGhlci5tX2NteWthLT5jCiAgICAg
ICAgICAgICAmJiBtX2NteWthLT5tID09IG90aGVyLm1fY215a2EtPm0KQEAgLTIwMCw3ICsyMDAs
NyBAQCBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRSR0JBKGZsb2F0IHIsIGZsb2F0IGcs
IGZsb2F0IGIsIGZsb2F0IGEpIGNvbnN0CiAgICAgaWYgKG1fdHlwZSAhPSBSR0JBKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gbV9yZ2JhID09IG1ha2VSR0JBMzJGcm9tRmxv
YXRzKHIsIGcsIGIsIGEpOworICAgIHJldHVybiBtX2NvbG9yID09IENvbG9yKHIsIGcsIGIsIGEp
OwogfQogCiBib29sIENhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDTVlLQShmbG9hdCBjLCBmbG9h
dCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKSBjb25zdApAQCAtMjIzLDcgKzIyMyw3IEBA
IENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpCiAgICAg
ZWxzZSBpZiAobV90eXBlID09IEltYWdlUGF0dGVybikKICAgICAgICAgbV9wYXR0ZXJuLT5yZWYo
KTsKICAgICBlbHNlIGlmIChtX3R5cGUgPT0gQ01ZS0EpCi0gICAgICAgIG1fY215a2EgPSBuZXcg
Q01ZS0FWYWx1ZXMob3RoZXIubV9jbXlrYS0+cmdiYSwgb3RoZXIubV9jbXlrYS0+Yywgb3RoZXIu
bV9jbXlrYS0+bSwgb3RoZXIubV9jbXlrYS0+eSwgb3RoZXIubV9jbXlrYS0+aywgb3RoZXIubV9j
bXlrYS0+YSk7CisgICAgICAgIG1fY215a2EgPSBuZXcgQ01ZS0FWYWx1ZXMob3RoZXIubV9jbXlr
YS0+Y29sb3IsIG90aGVyLm1fY215a2EtPmMsIG90aGVyLm1fY215a2EtPm0sIG90aGVyLm1fY215
a2EtPnksIG90aGVyLm1fY215a2EtPmssIG90aGVyLm1fY215a2EtPmEpOwogfQogCiBDYW52YXNT
dHlsZSYgQ2FudmFzU3R5bGU6Om9wZXJhdG9yPShjb25zdCBDYW52YXNTdHlsZSYgb3RoZXIpCkBA
IC0yNDEsNyArMjQxLDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2gg
KG1fdHlwZSkgewogICAgIGNhc2UgUkdCQToKLSAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29s
b3IobV9yZ2JhKTsKKyAgICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9jb2xvcik7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6IERvIHRo
aXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgpAQCAt
MjczLDcgKzI3Myw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9yKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9y
Z2JhKTsKKyAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY29sb3IpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENNWUtBOiB7CiAgICAgICAgIC8vIEZJWE1FOiBEbyB0aGlzIHRocm91
Z2ggcGxhdGZvcm0taW5kZXBlbmRlbnQgR3JhcGhpY3NDb250ZXh0IEFQSS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCmluZGV4IGFlOWRhYTg0NTJiYWIzNmMzMjZiZDEx
MzY4OTdmMDg1NzhiZThkOTAuLjM5MDhlODU2NjMzOTQ3NzY1NGJlMWVlNmY2OTgxN2ZkZGY3ZTYy
NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaApAQCAtNDIsNyAr
NDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FudmFzU3R5bGUgewogICAg
IHB1YmxpYzoKICAgICAgICAgQ2FudmFzU3R5bGUoKTsKLSAgICAgICAgZXhwbGljaXQgQ2FudmFz
U3R5bGUoUkdCQTMyKTsKKyAgICAgICAgZXhwbGljaXQgQ2FudmFzU3R5bGUoQ29sb3IpOwogICAg
ICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5TGV2ZWwsIGZsb2F0IGFscGhhKTsKICAgICAgICAg
Q2FudmFzU3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYWxwaGEpOwogICAg
ICAgICBDYW52YXNTdHlsZShmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9h
dCBhbHBoYSk7CkBAIC04MCw5ICs4MCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKENNWUtBVmFsdWVzKTsKICAgICAgICAgcHVibGljOgotICAgICAgICAgICAgQ01ZS0FW
YWx1ZXMoKSA6IHJnYmEoMCksIGMoMCksIG0oMCksIHkoMCksIGsoMCksIGEoMCkgeyB9Ci0gICAg
ICAgICAgICBDTVlLQVZhbHVlcyhSR0JBMzIgcmdiYSwgZmxvYXQgY3lhbiwgZmxvYXQgbWFnZW50
YSwgZmxvYXQgeWVsbG93LCBmbG9hdCBibGFjaywgZmxvYXQgYWxwaGEpIDogcmdiYShyZ2JhKSwg
YyhjeWFuKSwgbShtYWdlbnRhKSwgeSh5ZWxsb3cpLCBrKGJsYWNrKSwgYShhbHBoYSkgeyB9Ci0g
ICAgICAgICAgICBSR0JBMzIgcmdiYTsKKyAgICAgICAgICAgIENNWUtBVmFsdWVzKCkKKyAgICAg
ICAgICAgICAgICA6IGNvbG9yKCksIGMoMCksIG0oMCksIHkoMCksIGsoMCksIGEoMCkKKyAgICAg
ICAgICAgIHsgfQorCisgICAgICAgICAgICBDTVlLQVZhbHVlcyhDb2xvciBjb2xvciwgZmxvYXQg
Y3lhbiwgZmxvYXQgbWFnZW50YSwgZmxvYXQgeWVsbG93LCBmbG9hdCBibGFjaywgZmxvYXQgYWxw
aGEpCisgICAgICAgICAgICAgICAgOiBjb2xvcihjb2xvciksIGMoY3lhbiksIG0obWFnZW50YSks
IHkoeWVsbG93KSwgayhibGFjayksIGEoYWxwaGEpCisgICAgICAgICAgICB7IH0KKyAgICAgICAg
ICAgIENvbG9yIGNvbG9yOwogICAgICAgICAgICAgZmxvYXQgYzsKICAgICAgICAgICAgIGZsb2F0
IG07CiAgICAgICAgICAgICBmbG9hdCB5OwpAQCAtOTksNyArMTA0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgdW5pb24gewotICAgICAgICAgICAgUkdCQTMy
IG1fcmdiYTsKKyAgICAgICAgICAgIENvbG9yIG1fY29sb3I7CiAgICAgICAgICAgICBmbG9hdCBt
X292ZXJyaWRlQWxwaGE7CiAgICAgICAgICAgICBDYW52YXNHcmFkaWVudCogbV9ncmFkaWVudDsK
ICAgICAgICAgICAgIENhbnZhc1BhdHRlcm4qIG1fcGF0dGVybjsKQEAgLTEzNCw4ICsxMzksOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgewogICAgICAgICBBU1NFUlQobV90eXBlID09IFJH
QkEgfHwgbV90eXBlID09IENNWUtBKTsKICAgICAgICAgaWYgKG1fdHlwZSA9PSBSR0JBKQotICAg
ICAgICAgICAgcmV0dXJuIENvbG9yKG1fcmdiYSkuc2VyaWFsaXplZCgpOwotICAgICAgICByZXR1
cm4gQ29sb3IobV9jbXlrYS0+cmdiYSkuc2VyaWFsaXplZCgpOworICAgICAgICAgICAgcmV0dXJu
IG1fY29sb3Iuc2VyaWFsaXplZCgpOworICAgICAgICByZXR1cm4gbV9jbXlrYS0+Y29sb3Iuc2Vy
aWFsaXplZCgpOwogICAgIH0KIAogICAgIGlubGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUo
Q2FudmFzU3R5bGUmJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmgKaW5kZXggM2YzNTY3MmRhNGYzNWMyMmI0ZjkyODQxMzQyOTM3ZDhi
NDQ3N2MwMi4uNTM2Y2IwYTc0ZDBmYzkzYzI3OWUwMzU0ZDdmNzBjMjcxMzhhYWQ2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTYy
LDEzICs2MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGb250TmFtZShTdHJpbmcgbmFtZSkg
eyBtX2ZvbnROYW1lID0gbmFtZTsgfQogCiAgICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yKCkgY29u
c3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEZvcmVncm91bmRD
b2xvcihSR0JBMzIgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQor
ICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKENvbG9yIGNvbG9yKSB7IG1fZm9yZWdyb3VuZENv
bG9yID0gY29sb3I7IH0KICAgICAKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9y
KFJHQkEzMiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAg
dm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsgfQogICAgIAogICAgIENvbG9yIGhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1
cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoUkdCQTMy
IGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3Iuc2V0UkdCKGNvbG9yKTsgfQorICAgIHZvaWQgc2V0
SGlnaGxpZ2h0Q29sb3IoQ29sb3IgY29sb3IpIHsgbV9oaWdobGlnaHRDb2xvciA9IGNvbG9yOyB9
CiAgICAgCiAgICAgdm9pZCBzZXRGb250U2l6ZShpbnQsIGNvbnN0IEludFNpemUmLCBib29sIGlt
cG9ydGFudCkgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAKaW5kZXgg
NjRkMDdlNDhiMmFmZWExOWYyYzIxODc2MjBjM2E2OTQ3MTU0ZjM5NC4uZGMzMmU2ZWExNTRlNTFi
Mzg4OTNiMDliNzY4OWZlNjljMDcxNmJjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5j
cHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBJbnRTaXplIFBhZ2VPdmVybGF5Ojp2aWV3VG9PdmVybGF5
T2Zmc2V0KCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZSgpOwogfQogCi12b2lkIFBhZ2VPdmVy
bGF5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoUkdCQTMyIGJhY2tncm91bmRDb2xvcikKK3ZvaWQgUGFn
ZU92ZXJsYXk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvciBiYWNrZ3JvdW5kQ29sb3Ip
CiB7CiAgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09IGJhY2tncm91bmRDb2xvcikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5oCmluZGV4IGY5MGQwYzM2NGEwODZj
MzRiZDZlYWIxMjE1N2Q0ZmVjNzg2OGE5OGQuLmI2YzVjNDU4MWNkYjBmMjZkZmVlODNkMmFmZDg2
YWU2M2ViMGFjMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmgKQEAgLTEwNiw4ICsxMDYs
OCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCBJbnRTaXplIHZpZXdUb092ZXJsYXlP
ZmZzZXQoKSBjb25zdDsKIAotICAgIFJHQkEzMiBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJl
dHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFJH
QkEzMik7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNr
Z3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihjb25zdCBDb2xvcik7
CiAKICAgICB2b2lkIHNldFNob3VsZElnbm9yZU1vdXNlRXZlbnRzT3V0c2lkZUJvdW5kcyhib29s
IGZsYWcpIHsgbV9zaG91bGRJZ25vcmVNb3VzZUV2ZW50c091dHNpZGVCb3VuZHMgPSBmbGFnOyB9
CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIE92ZXJsYXlUeXBlIG1fb3Zlcmxh
eVR5cGU7CiAgICAgSW50UmVjdCBtX292ZXJyaWRlRnJhbWU7CiAKLSAgICBSR0JBMzIgbV9iYWNr
Z3JvdW5kQ29sb3IgeyBDb2xvcjo6dHJhbnNwYXJlbnQgfTsKKyAgICBDb2xvciBtX2JhY2tncm91
bmRDb2xvciB7IENvbG9yOjp0cmFuc3BhcmVudCB9OwogICAgIFBhZ2VPdmVybGF5SUQgbV9wYWdl
T3ZlcmxheUlEOwogCiAgICAgYm9vbCBtX3Nob3VsZElnbm9yZU1vdXNlRXZlbnRzT3V0c2lkZUJv
dW5kcyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCAwNzYwMmQy
N2U2ZTQwMWE1ZDY5YzQ4ZTlkZTNkNjBiNDE3MzJhZjY0Li4zMmE3NDNiYTViOGQ0ZDg2MThlNDFl
MTM4NTQ0MmFkODZhNjA3N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBAIC04
NywxMyArODcsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVsYXRpdmVGb250U2l6ZShkb3Vi
bGUgcmVsYXRpdmVGb250U2l6ZSkgeyBtX3JlbGF0aXZlRm9udFNpemUgPSByZWxhdGl2ZUZvbnRT
aXplOyB9CiAKICAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2Zv
cmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9yKFJHQkEzMiBjb2xv
cikgeyBtX2ZvcmVncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAgdm9pZCBzZXRGb3Jl
Z3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQog
CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
Q29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihSR0JBMzIgY29sb3IpIHsgbV9i
YWNrZ3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENv
bG9yKENvbG9yIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7IH0KICAgICAKICAg
ICBDb2xvciBoaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1faGlnaGxpZ2h0Q29sb3I7
IH0KLSAgICB2b2lkIHNldEhpZ2hsaWdodENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2hpZ2hsaWdo
dENvbG9yLnNldFJHQihjb2xvcik7IH0KKyAgICB2b2lkIHNldEhpZ2hsaWdodENvbG9yKENvbG9y
IGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsgfQogICAgIAogICAgIGVudW0gU3Rh
dHVzIHsKICAgICAgICAgVW5pbml0aWFsaXplZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKaW5kZXggMzc2Zjc5ZjgzOTgyZTJhYmNlZTE1M2M3
ZjZhOWMwMDE3OWMzN2EzMC4uOTdmNDRjMTcxNjZkZTJkYjIxZmNlNWEzZjRiYzlhNzJhZWQ5NjAy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFj
LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3IoYm9vbCk7CiAgICAgCiAgICAg
Ly8gRm9jdXMgcmluZyBjb2xvciB1c2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgotICAgIFJHQkEz
MiBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKTsKKyAgICBDb2xvciBvbGRBcXVhRm9jdXNSaW5nQ29s
b3IoKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29sb3JNYWMubW0KaW5kZXggMzkzYjNjNjQ4MTI1OTI1Y2FlOTlmMmIzMTNhZWIzN2NmMjBlMDY5
Ni4uY2RjYzZmNjdiZjU0NjRhYmJkOGQzZGZmOTAzZjgxMjBhOTAyNGU4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQpAQCAtMzQsNyAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIHVzZU9sZEFxdWFGb2N1
c1JpbmdDb2xvcjsKIAotUkdCQTMyIG9sZEFxdWFGb2N1c1JpbmdDb2xvcigpCitDb2xvciBvbGRB
cXVhRm9jdXNSaW5nQ29sb3IoKQogewogICAgIHJldHVybiAweEZGN0RBREQ5OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRleCA0ZDM4OWJjOTFm
MTZkNDE5M2ZjMWJkNjZkYzVlZDU4MmJlMTk4NjhjLi40NWQ4YzdiZWI0MWU2YmI4ZDQwZWYzM2Y3
ZGFjNGM0N2QyNGJjYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVDZWxsLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgU2FtZVNpemVBc1JlbmRlclRhYmxl
Q2VsbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogfTsKIAogQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKFJlbmRlclRhYmxlQ2VsbCkgPT0gc2l6ZW9mKFNhbWVTaXplQXNSZW5kZXJUYWJsZUNlbGwp
LCBSZW5kZXJUYWJsZUNlbGxfc2hvdWxkX3N0YXlfc21hbGwpOwotQ09NUElMRV9BU1NFUlQoc2l6
ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAxMiwgQ29sbGFwc2VkQm9yZGVyVmFsdWVfc2hv
dWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9mKENvbGxhcHNlZEJvcmRlclZh
bHVlKSA9PSAxNiwgQ29sbGFwc2VkQm9yZGVyVmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOwogCiBS
ZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVsZW1lbnQsIFdURk1vdmUoc3R5
bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRleCAxNmYwMDI3MGM5
Yzc3ZTY4OTUzNjFhOWE0OTVlMDY0MjIxYzBiZjcwLi5jOWZiMDVlNjdlOWQzNTUxOGM3Nzg5MDBi
ODIyZDg1NWE4YjUzYWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaApA
QCAtNDEyLDcgKzQxMiw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAg
ICAvLyBUaGlzIGNvbG9yIGlzIGV4cGVjdGVkIHRvIGJlIGRyYXduIG9uIGEgc2VtaS10cmFuc3Bh
cmVudCBvdmVybGF5LAogICAgIC8vIG1ha2luZyBpdCBtb3JlIHRyYW5zcGFyZW50IHRoYW4gaXRz
IGFscGhhIHZhbHVlIGluZGljYXRlcy4KLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGRlZmF1bHRU
YXBIaWdobGlnaHRDb2xvciA9IDB4NjYwMDAwMDA7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IENvbG9yPiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSBDb2xvcigweDY2MDAwMDAw
KTsKICNlbmRpZgogCiAjaWYgVVNFKE5FV19USEVNRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0JvcmRlclZhbHVlLmgKaW5kZXggY2YzNDBkMGY2ODJlNzRhZTQ5MmNjZWZjZmFj
Y2ExMTY3Mjc3YTRiZC4uNmJiZGJkMjNlNDhiYjcxYzRmMmEzM2M4ZGM5M2EyNTY0M2E2MmEzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0JvcmRlclZhbHVlLmgKQEAgLTM0
LDEwICszNCw3IEBAIGNsYXNzIEJvcmRlclZhbHVlIHsKIGZyaWVuZCBjbGFzcyBSZW5kZXJTdHls
ZTsKIHB1YmxpYzoKICAgICBCb3JkZXJWYWx1ZSgpCi0gICAgICAgIDogbV93aWR0aCgzKQotICAg
ICAgICAsIG1fY29sb3IoMCkKLSAgICAgICAgLCBtX2NvbG9ySXNWYWxpZChmYWxzZSkKLSAgICAg
ICAgLCBtX3N0eWxlKEJOT05FKQorICAgICAgICA6IG1fc3R5bGUoQk5PTkUpCiAgICAgICAgICwg
bV9pc0F1dG8oQVVUT19PRkYpCiAgICAgewogICAgIH0KQEAgLTQ5LDcgKzQ2LDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBpc1RyYW5zcGFyZW50KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBtX2NvbG9ySXNWYWxpZCAmJiAhYWxwaGFDaGFubmVsKG1fY29sb3IpOworICAgICAgICByZXR1
cm4gbV9jb2xvci5pc1ZhbGlkKCkgJiYgIW1fY29sb3IuYWxwaGEoKTsKICAgICB9CiAKICAgICBi
b29sIGlzVmlzaWJsZShib29sIGNoZWNrU3R5bGUgPSB0cnVlKSBjb25zdApAQCAtNTksNyArNTYs
NyBAQCBwdWJsaWM6CiAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQm9yZGVyVmFsdWUmIG8p
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9z
dHlsZSA9PSBvLm1fc3R5bGUgJiYgbV9jb2xvciA9PSBvLm1fY29sb3IgJiYgbV9jb2xvcklzVmFs
aWQgPT0gby5tX2NvbG9ySXNWYWxpZDsKKyAgICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dp
ZHRoICYmIG1fc3R5bGUgPT0gby5tX3N0eWxlICYmIG1fY29sb3IgPT0gby5tX2NvbG9yOwogICAg
IH0KIAogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBCb3JkZXJWYWx1ZSYgbykgY29uc3QKQEAg
LTY5LDE5ICs2NiwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKICAgICB7Ci0gICAgICAgIG1fY29sb3IgPSBjb2xvci5yZ2IoKTsKLSAgICAgICAg
bV9jb2xvcklzVmFsaWQgPSBjb2xvci5pc1ZhbGlkKCk7CisgICAgICAgIG1fY29sb3IgPSBjb2xv
cjsKICAgICB9CiAKLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fY29s
b3IsIG1fY29sb3JJc1ZhbGlkKTsgfQorICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4g
bV9jb2xvcjsgfQogCiAgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9
CiAgICAgRUJvcmRlclN0eWxlIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJv
cmRlclN0eWxlPihtX3N0eWxlKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZmxvYXQgbV93aWR0aDsK
LSAgICBSR0JBMzIgbV9jb2xvcjsKLSAgICB1bnNpZ25lZCBtX2NvbG9ySXNWYWxpZCA6IDE7Cisg
ICAgZmxvYXQgbV93aWR0aCB7IDMgfTsKKyAgICBDb2xvciBtX2NvbG9yOwogCiAgICAgdW5zaWdu
ZWQgbV9zdHlsZSA6IDQ7IC8vIEVCb3JkZXJTdHlsZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oCmluZGV4IDZlOWIzMjg3
ZWYwYzQyOGVlMTliMWQyNGI5NGVmYjQ2MGI2MTBhMzkuLjExYzNmODQyZjEyMDk4MGZhYmRjMGU0
MTkwOGE0ODhjMDQ4ZjI5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oCkBAIC0zMyw4ICszMyw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIENvbGxhcHNlZEJvcmRlclZhbHVlIHsKIHB1YmxpYzoKICAgICBD
b2xsYXBzZWRCb3JkZXJWYWx1ZSgpCi0gICAgICAgIDogbV9jb2xvcklzVmFsaWQoZmFsc2UpCi0g
ICAgICAgICwgbV9zdHlsZShCTk9ORSkKKyAgICAgICAgOiBtX3N0eWxlKEJOT05FKQogICAgICAg
ICAsIG1fcHJlY2VkZW5jZShCT0ZGKQogICAgICAgICAsIG1fdHJhbnNwYXJlbnQoZmFsc2UpCiAg
ICAgewpAQCAtNDIsOCArNDEsNyBAQCBwdWJsaWM6CiAKICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1
ZShjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyLCBjb25zdCBDb2xvciYgY29sb3IsIEVCb3JkZXJQ
cmVjZWRlbmNlIHByZWNlZGVuY2UpCiAgICAgICAgIDogbV93aWR0aChMYXlvdXRVbml0KGJvcmRl
ci5ub25aZXJvKCkgPyBib3JkZXIud2lkdGgoKSA6IDApKQotICAgICAgICAsIG1fY29sb3IoY29s
b3IucmdiKCkpCi0gICAgICAgICwgbV9jb2xvcklzVmFsaWQoY29sb3IuaXNWYWxpZCgpKQorICAg
ICAgICAsIG1fY29sb3IoY29sb3IpCiAgICAgICAgICwgbV9zdHlsZShib3JkZXIuc3R5bGUoKSkK
ICAgICAgICAgLCBtX3ByZWNlZGVuY2UocHJlY2VkZW5jZSkKICAgICAgICAgLCBtX3RyYW5zcGFy
ZW50KGJvcmRlci5pc1RyYW5zcGFyZW50KCkpCkBAIC01Myw3ICs1MSw3IEBAIHB1YmxpYzoKICAg
ICBMYXlvdXRVbml0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZSA+IEJISURERU4gPyBt
X3dpZHRoIDogTGF5b3V0VW5pdDo6ZnJvbVBpeGVsKDApOyB9CiAgICAgRUJvcmRlclN0eWxlIHN0
eWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlclN0eWxlPihtX3N0eWxlKTsg
fQogICAgIGJvb2wgZXhpc3RzKCkgY29uc3QgeyByZXR1cm4gbV9wcmVjZWRlbmNlICE9IEJPRkY7
IH0KLSAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKG1fY29sb3IsIG1fY29s
b3JJc1ZhbGlkKTsgfQorICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jb2xvcjsg
fQogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNwYXJlbnQ7
IH0KICAgICBFQm9yZGVyUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RUJvcmRlclByZWNlZGVuY2U+KG1fcHJlY2VkZW5jZSk7IH0KIApAQCAtNjYsOCAr
NjQsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgTGF5b3V0VW5pdCBtX3dpZHRoOwotICAg
IFJHQkEzMiBtX2NvbG9yIHsgMCB9OwotICAgIHVuc2lnbmVkIG1fY29sb3JJc1ZhbGlkIDogMTsK
KyAgICBDb2xvciBtX2NvbG9yOwogICAgIHVuc2lnbmVkIG1fc3R5bGUgOiA0OyAvLyBFQm9yZGVy
U3R5bGUKICAgICB1bnNpZ25lZCBtX3ByZWNlZGVuY2UgOiAzOyAvLyBFQm9yZGVyUHJlY2VkZW5j
ZQogICAgIHVuc2lnbmVkIG1fdHJhbnNwYXJlbnQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oCmluZGV4IDBhZmU1YTgxMmYyOTkxODVhNzVjMzVi
NGI4MzU0MjhjYTg1NzRjOTUuLmQ1OGIwYTEyZmJmY2E2NWVjNTk2MmMwZGEyNDI2ZDNlZjI5Mzc0
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVlLmgK
QEAgLTM0LDcgKzM0LDcgQEAgZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwogcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBPdXRsaW5lVmFsdWUmIG8pIGNvbnN0CiAgICAgewotICAg
ICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9zdHlsZSA9PSBvLm1fc3R5bGUg
JiYgbV9jb2xvciA9PSBvLm1fY29sb3IgJiYgbV9jb2xvcklzVmFsaWQgPT0gby5tX2NvbG9ySXNW
YWxpZCAmJiBtX29mZnNldCA9PSBvLm1fb2Zmc2V0ICYmIG1faXNBdXRvID09IG8ubV9pc0F1dG87
CisgICAgICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX3N0eWxlID09IG8ubV9z
dHlsZSAmJiBtX2NvbG9yID09IG8ubV9jb2xvciAmJiBtX29mZnNldCA9PSBvLm1fb2Zmc2V0ICYm
IG1faXNBdXRvID09IG8ubV9pc0F1dG87CiAgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBPdXRsaW5lVmFsdWUmIG8pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCAzNTQwOWExZmNjN2FhYTAwZmVlY2Y4Y2Yw
ODZmMTM5N2JlYWNhYzRhLi5kODViMzgzN2ZiZGZkMWE2Y2ZmNWU5NGRmYWIwODY3NDEyYTY5Nzkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgU2FtZVNpemVB
c0JvcmRlclZhbHVlIHsKICAgICBmbG9hdCBtX3dpZHRoOwotICAgIFJHQkEzMiBtX2NvbG9yOwor
ICAgIENvbG9yIG1fY29sb3I7CiAgICAgaW50IG1fcmVzdEJpdHM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3RyaW5nRXh0cmFzLm1tIGIvU291cmNl
L1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQppbmRleCBiOWE4NGU2NjQy
MGJkNmNmNTFjMjg0ZjIyOTc3MTJhMTcwZTg2MGE3Li5hNzYwYzc2ODJmZTVkODgzYmM5MTZhZGNl
NDM1YjY5ZjMxM2RjYmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktp
dE5TU3RyaW5nRXh0cmFzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNT
dHJpbmdFeHRyYXMubW0KQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgQk9PTCBjYW5Vc2VGYXN0
UmVuZGVyZXIoY29uc3QgVW5pQ2hhciAqYnVmZmVyLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAg
IENHRmxvYXQgYmx1ZTsKICAgICAgICAgQ0dGbG9hdCBhbHBoYTsKICAgICAgICAgW1t0ZXh0Q29s
b3IgY29sb3JVc2luZ0NvbG9yU3BhY2VOYW1lOk5TRGV2aWNlUkdCQ29sb3JTcGFjZV0gZ2V0UmVk
OiZyZWQgZ3JlZW46JmdyZWVuIGJsdWU6JmJsdWUgYWxwaGE6JmFscGhhXTsKLSAgICAgICAgZ3Jh
cGhpY3NDb250ZXh0LnNldEZpbGxDb2xvcihtYWtlUkdCQShyZWQgKiAyNTUsIGdyZWVuICogMjU1
LCBibHVlICogMjU1LCBhbHBoYSAqIDI1NSkpOworICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0
RmlsbENvbG9yKENvbG9yKHN0YXRpY19jYXN0PGZsb2F0PihyZWQgKiAyNTUpLCBzdGF0aWNfY2Fz
dDxmbG9hdD4oZ3JlZW4gKiAyNTUuMGYpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYmx1ZSAqIDI1NS4w
ZiksIHN0YXRpY19jYXN0PGZsb2F0PihhbHBoYSAqIDI1NS4wZikpKTsKIAogICAgICAgICB3ZWJD
b3JlRm9udC5kcmF3VGV4dChncmFwaGljc0NvbnRleHQsIHJ1biwgRmxvYXRQb2ludChwb2ludC54
LCAoZmxpcHBlZCA/IHBvaW50LnkgOiAoLTEgKiBwb2ludC55KSkpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288734</attachid>
            <date>2016-09-13 15:13:32 -0700</date>
            <delta_ts>2016-09-13 15:55:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161856-20160914081051.patch</filename>
            <type>text/plain</type>
            <size>25635</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE4ZjM4MzY1ZGM4NWFk
ZGM2OGU5MzI0M2Y1ZTdkMGM5MTYyMDE5NC4uOTY1YjZmNjhmNjQ1NWFlODE5YTBlNjVkMDg3ZTc2
OWNmNDcxMTVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE2LTA5LTEyICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB3aXRo
IENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyNTQz
MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEluIHBy
ZXBhcmF0aW9uIGZvciB0aGUgQ29sb3IgY2xhc3MgdG8gYmVjb21lIG1vcmUgdGhhbgorICAgICAg
ICBqdXN0IGEgNC1ieXRlIFJHQkEgdmFsdWUsIEkgd2VudCB0aHJvdWdoIGEgZmV3IHBsYWNlcwor
ICAgICAgICB0aGF0IHdlcmUgdXNpbmcgdGhlIFJHQkEzMiB0eXBlIGRpcmVjdGx5LCBhbmQgcmVw
bGFjZWQKKyAgICAgICAgdGhlbSB3aXRoIENvbG9yLiBUaGlzIHdpbGwgbWFrZSBzb21lIG9iamVj
dHMgYSBsaXR0bGUKKyAgICAgICAgYmlnZ2VyIGUuZy4gQm9yZGVyVmFsdWUgYW5kIGl0cyBmcmll
bmRzLgorCisgICAgICAgIEkgbW9zdGx5IGxvb2tlZCBhdCB0aGUgcGxhY2VzIHRoYXQgd2VyZSB1
c2luZyBSR0JBMzIgYXMKKyAgICAgICAgYSBtZW1iZXIgdmFyaWFibGUuIFRoZXJlIGlzIHN0aWxs
IGEgbG90IG9mIFJHQkEzMiB1c2UKKyAgICAgICAgYXJvdW5kIHRoZSBwcm9qZWN0LCBpbiBwYXJ0
aWN1bGFyIHRoZSBDU1MgcGFyc2VyLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBiZWhh
dmlvdXIgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcDogU2hhZG93cyBub3cgdXNlIENvbG9yLgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaG91bGREcmF3U2hhZG93cyk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpZERyYXcpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcDogQ2FudmFzIHN0eWxlIHVzZXMgQ29sb3IgZm9yIGZpbGxzIGFuZCBz
dHJva2VzLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50UkdCQSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q01ZS0FWYWx1ZXM6OkNN
WUtBVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjb2xvcik6CisKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaDogRm9yZWdyb3VuZCwgYmFj
a2dyb3VuZCBhbmQKKyAgICAgICAgaGlnaGxpZ2h0IGNvbG9ycy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0Rm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldEhpZ2hsaWdodENvbG9yKToKKworICAgICAgICAqIHBhZ2Uv
UGFnZU92ZXJsYXkuY3BwOiBCYWNrZ3JvdW5kIGNvbG9yLgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZU92ZXJsYXk6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlT3Zlcmxh
eS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmg6IFJhbmRv
bSBmdW5jdGlvbiB0aGF0IHJldHVybmVkIFJHQkEzMi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpvbGRBcXVhRm9jdXNSaW5n
Q29sb3IpOgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6IFVwZGF0
ZSB0aGUgc2l6ZSBvZiBDb2xsYXBzZWRCb3JkZXJWYWx1ZS4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oOiBVc2UgYSBOZXZlckRlc3Ryb3llZCBDb2xvciByYXRoZXIgdGhhbiBh
IHN0YXRpYyBSR0JBMzIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUu
aDogVXNlIGEgQ29sb3IuCisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6Qm9yZGVyVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6OmlzVHJhbnNwYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Qm9yZGVyVmFsdWU6OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlclZhbHVl
Ojpjb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6Q29sbGFwc2VkQm9y
ZGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWU6OmNvbG9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpPdXRsaW5lVmFsdWU6Om9wZXJhdG9yPT0pOgorCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDogVXBkYXRlIHRvIG1hdGNoIG5ldyBCb3JkZXJWYWx1ZS4K
KwogMjAxNi0wOS0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEdldCByaWQgb2YgdGhlIG1fcHJlbXVsdGlwbHlBbHBoYSBmbGFnIG9mIHRo
ZSBJbWFnZUZyYW1lIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggN2Q0NTNjNzUyMTFkM2Y5MWVj
YzNhOGMyMWM1NWFhZGRmOWE3YzlmNi4uMTAwNjcxMjdlZDZlNzc4ZTVhYzcwZjFiYjNjYWIzMDNm
MTg5ZDc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA5LTEyICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB3
aXRoIENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgy
NTQzMjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIElu
IHByZXBhcmF0aW9uIGZvciB0aGUgQ29sb3IgY2xhc3MgdG8gYmVjb21lIG1vcmUgdGhhbgorICAg
ICAgICBqdXN0IGEgNC1ieXRlIFJHQkEgdmFsdWUsIEkgd2VudCB0aHJvdWdoIGEgZmV3IHBsYWNl
cworICAgICAgICB0aGF0IHdlcmUgdXNpbmcgdGhlIFJHQkEzMiB0eXBlIGRpcmVjdGx5LCBhbmQg
cmVwbGFjZWQKKyAgICAgICAgdGhlbSB3aXRoIENvbG9yLiBUaGlzIHdpbGwgbWFrZSBzb21lIG9i
amVjdHMgYSBsaXR0bGUKKyAgICAgICAgYmlnZ2VyIGUuZy4gQm9yZGVyVmFsdWUgYW5kIGl0cyBm
cmllbmRzLgorCisgICAgICAgIEkgbW9zdGx5IGxvb2tlZCBhdCB0aGUgcGxhY2VzIHRoYXQgd2Vy
ZSB1c2luZyBSR0JBMzIgYXMKKyAgICAgICAgYSBtZW1iZXIgdmFyaWFibGUuIFRoZXJlIGlzIHN0
aWxsIGEgbG90IG9mIFJHQkEzMiB1c2UKKyAgICAgICAgYXJvdW5kIHRoZSBwcm9qZWN0LCBpbiBw
YXJ0aWN1bGFyIHRoZSBDU1MgcGFyc2VyLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBi
ZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgICogTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5t
bToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQb2ludDpmb250OnRleHRDb2xvcjph
bGxvd2luZ0ZvbnRTbW9vdGhpbmc6XSk6IEV4cGxpY2l0bHkKKyAgICAgICAgY2FsbCBhIENvbG9y
IGNvbnN0cnVjdG9yLCByYXRoZXIgdGhhbiBwYXNzaW5nIGFuIFJHQkEzMi4KKwogMjAxNi0wOS0x
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Agc3VwcG9y
dCBmb3IgPGlzaW5kZXg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA3Zjk1MWM2ZWFmMDllOGZlNmMwYTNk
ZWViYTdmMGIxZWU4ZjllZTk2Li5lYjJkYjU1ZjhiYmYzZjA4ZWFiOGJhYzc1NzQ1ODNlYjAxMmM0
YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEyNTgsMTcgKzEyNTgsMTcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCwgZmxv
YXQgYWxwaGEpCiB7Ci0gICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1
ciwgbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
YWxwaGEpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBD
b2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpOwogfQogCiB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7
Ci0gICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgbWFrZVJHQkEz
MkZyb21GbG9hdHMociwgZywgYiwgYSkpOworICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgs
IGhlaWdodCksIGJsdXIsIENvbG9yKHIsIGcsIGIsIGEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogewot
ICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIG1ha2VSR0JBRnJv
bUNNWUtBKGMsIG0sIHksIGssIGEpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpLCBibHVyLCBDb2xvcihjLCBtLCB5LCBrLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclNoYWRvdygpCkBAIC0xMjc2LDcgKzEyNzYsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3coKQogICAgIHNldFNoYWRvdyhG
bG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50KTsKIH0KIAotdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQg
Ymx1ciwgUkdCQTMyIGNvbG9yKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgQ29sb3IgY29sb3IpCiB7
CiAgICAgaWYgKHN0YXRlKCkuc2hhZG93T2Zmc2V0ID09IG9mZnNldCAmJiBzdGF0ZSgpLnNoYWRv
d0JsdXIgPT0gYmx1ciAmJiBzdGF0ZSgpLnNoYWRvd0NvbG9yID09IGNvbG9yKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMzA2LDcgKzEzMDYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6YXBwbHlTaGFkb3coKQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxk
RHJhd1NoYWRvd3MoKSBjb25zdAogewotICAgIHJldHVybiBhbHBoYUNoYW5uZWwoc3RhdGUoKS5z
aGFkb3dDb2xvcikgJiYgKHN0YXRlKCkuc2hhZG93Qmx1ciB8fCAhc3RhdGUoKS5zaGFkb3dPZmZz
ZXQuaXNaZXJvKCkpOworICAgIHJldHVybiBzdGF0ZSgpLnNoYWRvd0NvbG9yLmFscGhhKCkgJiYg
KHN0YXRlKCkuc2hhZG93Qmx1ciB8fCAhc3RhdGUoKS5zaGFkb3dPZmZzZXQuaXNaZXJvKCkpOwog
fQogCiBlbnVtIEltYWdlU2l6ZVR5cGUgewpAQCAtMTg4Miw3ICsxODgyLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25l
ZCBvcHRpb25zKQogICAgICAgICBkaXJ0eVJlY3QgPSBjdG0ubWFwUmVjdChyKTsKICAgICB9CiAK
LSAgICBpZiAob3B0aW9ucyAmIENhbnZhc0RpZERyYXdBcHBseVNoYWRvdyAmJiBhbHBoYUNoYW5u
ZWwoc3RhdGUoKS5zaGFkb3dDb2xvcikpIHsKKyAgICBpZiAob3B0aW9ucyAmIENhbnZhc0RpZERy
YXdBcHBseVNoYWRvdyAmJiBzdGF0ZSgpLnNoYWRvd0NvbG9yLmFscGhhKCkpIHsKICAgICAgICAg
Ly8gVGhlIHNoYWRvdyBnZXRzIGFwcGxpZWQgYWZ0ZXIgdHJhbnNmb3JtYXRpb24KICAgICAgICAg
RmxvYXRSZWN0IHNoYWRvd1JlY3QoZGlydHlSZWN0KTsKICAgICAgICAgc2hhZG93UmVjdC5tb3Zl
KHN0YXRlKCkuc2hhZG93T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggNzkwMjZmNjNiNzA5NGU4MTQ5
ZGJlYTIzMjczNTJmZTQwZDZlM2QxYy4uY2NiMjFlNTFkZjViMmQ3NGNhYmRhZGY5ODRkY2Y4MjY0
ODI0NzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTI4NCw3ICsyODQsNyBAQCBwcml2YXRlOgogICAgICAg
ICBmbG9hdCBtaXRlckxpbWl0OwogICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAg
ICAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgICAgICBSR0JBMzIgc2hhZG93Q29sb3I7CisgICAg
ICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgICAgICBmbG9hdCBnbG9iYWxBbHBoYTsKICAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgZ2xvYmFsQ29tcG9zaXRlOwogICAgICAgICBCbGVuZE1vZGUg
Z2xvYmFsQmxlbmQ7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdGF0
ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlU3RhY2subGFzdCgpOyB9CiAKICAgICB2
b2lkIGFwcGx5TGluZURhc2goKSBjb25zdDsKLSAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgUkdCQTMyIGNvbG9yKTsKKyAgICB2b2lkIHNldFNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgQ29sb3IpOwogICAgIHZv
aWQgYXBwbHlTaGFkb3coKTsKICAgICBib29sIHNob3VsZERyYXdTaGFkb3dzKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCAxYzhiMjAz
NTc4NWI1M2IwN2E1MmI0OGJhMDhiMzllOWFiYWRlN2VmLi44Y2I0YzkwNDJkN2RmYjk0NmJmMTFj
ZjY5MDg2MGMxNWJiZmMzMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwCkBAIC04MywyNiArODMsMjYgQEAgYm9vbCBwYXJzZUNvbG9yT3JDdXJyZW50Q29s
b3IoUkdCQTMyJiBwYXJzZWRDb2xvciwgY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgSFQKICAg
ICB9CiB9CiAKLUNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKLSAgICA6IG1f
cmdiYShyZ2JhKQorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKENvbG9yIGNvbG9yKQorICAgIDog
bV9jb2xvcihjb2xvcikKICAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6
Q2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fcmdiYSht
YWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBo
YSkpCisgICAgOiBtX2NvbG9yKENvbG9yKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWws
IGFscGhhKSkKICAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKLSAgICA6IG1fcmdiYSht
YWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSkKKyAgICA6IG1fY29sb3IoQ29sb3Iociwg
ZywgYiwgYSkpCiAgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpCi0gICAg
OiBtX2NteWthKG5ldyBDTVlLQVZhbHVlcyhtYWtlUkdCQUZyb21DTVlLQShjLCBtLCB5LCBrLCBh
KSwgYywgbSwgeSwgaywgYSkpCisgICAgOiBtX2NteWthKG5ldyBDTVlLQVZhbHVlcyhDb2xvcihj
LCBtLCB5LCBrLCBhKSwgYywgbSwgeSwgaywgYSkpCiAgICAgLCBtX3R5cGUoQ01ZS0EpCiB7CiB9
CkBAIC0xNzUsNyArMTc1LDcgQEAgYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3Io
Y29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKSBjb25zdAogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsK
ICAgICBjYXNlIFJHQkE6Ci0gICAgICAgIHJldHVybiBtX3JnYmEgPT0gb3RoZXIubV9yZ2JhOwor
ICAgICAgICByZXR1cm4gbV9jb2xvciA9PSBvdGhlci5tX2NvbG9yOwogICAgIGNhc2UgQ01ZS0E6
CiAgICAgICAgIHJldHVybiBtX2NteWthLT5jID09IG90aGVyLm1fY215a2EtPmMKICAgICAgICAg
ICAgICYmIG1fY215a2EtPm0gPT0gb3RoZXIubV9jbXlrYS0+bQpAQCAtMjAwLDcgKzIwMCw3IEBA
IGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudFJHQkEoZmxvYXQgciwgZmxvYXQgZywgZmxv
YXQgYiwgZmxvYXQgYSkgY29uc3QKICAgICBpZiAobV90eXBlICE9IFJHQkEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX3JnYmEgPT0gbWFrZVJHQkEzMkZyb21GbG9hdHMo
ciwgZywgYiwgYSk7CisgICAgcmV0dXJuIG1fY29sb3IgPT0gQ29sb3IociwgZywgYiwgYSk7CiB9
CiAKIGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENNWUtBKGZsb2F0IGMsIGZsb2F0IG0s
IGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIGNvbnN0CkBAIC0yMjMsNyArMjIzLDcgQEAgQ2Fu
dmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikKICAgICBlbHNl
IGlmIChtX3R5cGUgPT0gSW1hZ2VQYXR0ZXJuKQogICAgICAgICBtX3BhdHRlcm4tPnJlZigpOwog
ICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBDTVlLQSkKLSAgICAgICAgbV9jbXlrYSA9IG5ldyBDTVlL
QVZhbHVlcyhvdGhlci5tX2NteWthLT5yZ2JhLCBvdGhlci5tX2NteWthLT5jLCBvdGhlci5tX2Nt
eWthLT5tLCBvdGhlci5tX2NteWthLT55LCBvdGhlci5tX2NteWthLT5rLCBvdGhlci5tX2NteWth
LT5hKTsKKyAgICAgICAgbV9jbXlrYSA9IG5ldyBDTVlLQVZhbHVlcyhvdGhlci5tX2NteWthLT5j
b2xvciwgb3RoZXIubV9jbXlrYS0+Yywgb3RoZXIubV9jbXlrYS0+bSwgb3RoZXIubV9jbXlrYS0+
eSwgb3RoZXIubV9jbXlrYS0+aywgb3RoZXIubV9jbXlrYS0+YSk7CiB9CiAKIENhbnZhc1N0eWxl
JiBDYW52YXNTdHlsZTo6b3BlcmF0b3I9KGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikKQEAgLTI0
MSw3ICsyNDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDTVlLQTogewogICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0
aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCkBAIC0yNzMs
NyArMjczLDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKICAgICBjYXNlIFJHQkE6Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3JnYmEp
OworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggYWU5ZGFhODQ1MmJhYjM2YzMyNmJkMTEzNjg5
N2YwODU3OGJlOGQ5MC4uMzkwOGU4NTY2MzM5NDc3NjU0YmUxZWU2ZjY5ODE3ZmRkZjdlNjI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBAIC00Miw3ICs0Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYW52YXNTdHlsZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBDYW52YXNTdHlsZSgpOwotICAgICAgICBleHBsaWNpdCBDYW52YXNTdHls
ZShSR0JBMzIpOworICAgICAgICBleHBsaWNpdCBDYW52YXNTdHlsZShDb2xvcik7CiAgICAgICAg
IENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOwogICAgICAgICBDYW52
YXNTdHlsZShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhbHBoYSk7CiAgICAgICAg
IENhbnZhc1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGFs
cGhhKTsKQEAgLTgwLDkgKzgwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ01ZS0FWYWx1ZXMpOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBDTVlLQVZhbHVl
cygpIDogcmdiYSgwKSwgYygwKSwgbSgwKSwgeSgwKSwgaygwKSwgYSgwKSB7IH0KLSAgICAgICAg
ICAgIENNWUtBVmFsdWVzKFJHQkEzMiByZ2JhLCBmbG9hdCBjeWFuLCBmbG9hdCBtYWdlbnRhLCBm
bG9hdCB5ZWxsb3csIGZsb2F0IGJsYWNrLCBmbG9hdCBhbHBoYSkgOiByZ2JhKHJnYmEpLCBjKGN5
YW4pLCBtKG1hZ2VudGEpLCB5KHllbGxvdyksIGsoYmxhY2spLCBhKGFscGhhKSB7IH0KLSAgICAg
ICAgICAgIFJHQkEzMiByZ2JhOworICAgICAgICAgICAgQ01ZS0FWYWx1ZXMoKQorICAgICAgICAg
ICAgICAgIDogY29sb3IoKSwgYygwKSwgbSgwKSwgeSgwKSwgaygwKSwgYSgwKQorICAgICAgICAg
ICAgeyB9CisKKyAgICAgICAgICAgIENNWUtBVmFsdWVzKENvbG9yIGNvbG9yLCBmbG9hdCBjeWFu
LCBmbG9hdCBtYWdlbnRhLCBmbG9hdCB5ZWxsb3csIGZsb2F0IGJsYWNrLCBmbG9hdCBhbHBoYSkK
KyAgICAgICAgICAgICAgICA6IGNvbG9yKGNvbG9yKSwgYyhjeWFuKSwgbShtYWdlbnRhKSwgeSh5
ZWxsb3cpLCBrKGJsYWNrKSwgYShhbHBoYSkKKyAgICAgICAgICAgIHsgfQorICAgICAgICAgICAg
Q29sb3IgY29sb3I7CiAgICAgICAgICAgICBmbG9hdCBjOwogICAgICAgICAgICAgZmxvYXQgbTsK
ICAgICAgICAgICAgIGZsb2F0IHk7CkBAIC05OSw3ICsxMDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIH0KIAogICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBSR0JBMzIgbV9y
Z2JhOworICAgICAgICAgICAgQ29sb3IgbV9jb2xvcjsKICAgICAgICAgICAgIGZsb2F0IG1fb3Zl
cnJpZGVBbHBoYTsKICAgICAgICAgICAgIENhbnZhc0dyYWRpZW50KiBtX2dyYWRpZW50OwogICAg
ICAgICAgICAgQ2FudmFzUGF0dGVybiogbV9wYXR0ZXJuOwpAQCAtMTM0LDggKzEzOSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gUkdCQSB8
fCBtX3R5cGUgPT0gQ01ZS0EpOwogICAgICAgICBpZiAobV90eXBlID09IFJHQkEpCi0gICAgICAg
ICAgICByZXR1cm4gQ29sb3IobV9yZ2JhKS5zZXJpYWxpemVkKCk7Ci0gICAgICAgIHJldHVybiBD
b2xvcihtX2NteWthLT5yZ2JhKS5zZXJpYWxpemVkKCk7CisgICAgICAgICAgICByZXR1cm4gbV9j
b2xvci5zZXJpYWxpemVkKCk7CisgICAgICAgIHJldHVybiBtX2NteWthLT5jb2xvci5zZXJpYWxp
emVkKCk7CiAgICAgfQogCiAgICAgaW5saW5lIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShDYW52
YXNTdHlsZSYmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWVHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUdlbmVyaWMuaAppbmRleCAzZjM1NjcyZGE0ZjM1YzIyYjRmOTI4NDEzNDI5MzdkOGI0NDc3
YzAyLi41MzZjYjBhNzRkMGZjOTNjMjc5ZTAzNTRkN2Y3MGMyNzEzOGFhZDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaApAQCAtNjIsMTMg
KzYyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvbnROYW1lKFN0cmluZyBuYW1lKSB7IG1f
Zm9udE5hbWUgPSBuYW1lOyB9CiAKICAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9y
KFJHQkEzMiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAg
dm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsgfQogICAgIAogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoUkdC
QTMyIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yLnNldFJHQihjb2xvcik7IH0KKyAgICB2b2lk
IHNldEJhY2tncm91bmRDb2xvcihDb2xvciBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvciA9IGNv
bG9yOyB9CiAgICAgCiAgICAgQ29sb3IgaGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2hpZ2hsaWdodENvbG9yOyB9Ci0gICAgdm9pZCBzZXRIaWdobGlnaHRDb2xvcihSR0JBMzIgY29s
b3IpIHsgbV9oaWdobGlnaHRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAgdm9pZCBzZXRIaWdo
bGlnaHRDb2xvcihDb2xvciBjb2xvcikgeyBtX2hpZ2hsaWdodENvbG9yID0gY29sb3I7IH0KICAg
ICAKICAgICB2b2lkIHNldEZvbnRTaXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0
YW50KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zl
cmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNwcAppbmRleCA2NGQw
N2U0OGIyYWZlYTE5ZjJjMjE4NzYyMGMzYTY5NDcxNTRmMzk0Li40ZTgzNzRhMTQ1MDU5YTlhNWZm
Mjc3NDhmNDFiZTEyYzU2OGY2Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNwcApA
QCAtMTM2LDcgKzEzNiw3IEBAIEludFNpemUgUGFnZU92ZXJsYXk6OnZpZXdUb092ZXJsYXlPZmZz
ZXQoKSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKCk7CiB9CiAKLXZvaWQgUGFnZU92ZXJsYXk6
OnNldEJhY2tncm91bmRDb2xvcihSR0JBMzIgYmFja2dyb3VuZENvbG9yKQordm9pZCBQYWdlT3Zl
cmxheTo6c2V0QmFja2dyb3VuZENvbG9yKENvbG9yIGJhY2tncm91bmRDb2xvcikKIHsKICAgICBp
ZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gYmFja2dyb3VuZENvbG9yKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmgKaW5kZXggZjkwZDBjMzY0YTA4NmMzNGJkNmVhYjEy
MTU3ZDRmZWM3ODY4YTk4ZC4uZjhkNzM2YWI2YmI3YjllNGVkMjU5MjA1YWQ2ZjhlYzdhM2Q5OTFi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXkuaApAQCAtMTA2LDggKzEwNiw4IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEludFNpemUgdmlld1RvT3ZlcmxheU9mZnNldCgpIGNv
bnN0OwogCi0gICAgUkdCQTMyIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZENvbG9yOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoUkdCQTMyKTsKKyAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xv
cjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKENvbG9yKTsKIAogICAgIHZvaWQgc2V0
U2hvdWxkSWdub3JlTW91c2VFdmVudHNPdXRzaWRlQm91bmRzKGJvb2wgZmxhZykgeyBtX3Nob3Vs
ZElnbm9yZU1vdXNlRXZlbnRzT3V0c2lkZUJvdW5kcyA9IGZsYWc7IH0KIApAQCAtMTQ0LDcgKzE0
NCw3IEBAIHByaXZhdGU6CiAgICAgT3ZlcmxheVR5cGUgbV9vdmVybGF5VHlwZTsKICAgICBJbnRS
ZWN0IG1fb3ZlcnJpZGVGcmFtZTsKIAotICAgIFJHQkEzMiBtX2JhY2tncm91bmRDb2xvciB7IENv
bG9yOjp0cmFuc3BhcmVudCB9OworICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yIHsgQ29sb3I6
OnRyYW5zcGFyZW50IH07CiAgICAgUGFnZU92ZXJsYXlJRCBtX3BhZ2VPdmVybGF5SUQ7CiAKICAg
ICBib29sIG1fc2hvdWxkSWdub3JlTW91c2VFdmVudHNPdXRzaWRlQm91bmRzIHsgdHJ1ZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCmluZGV4IDA3NjAyZDI3ZTZlNDAxYTVkNjljNDhl
OWRlM2Q2MGI0MTczMmFmNjQuLjMyYTc0M2JhNWI4ZDRkODYxOGU0MWUxMzg1NDQyYWQ4NmE2MDc3
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKQEAgLTg3LDEzICs4NywxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXplKGRvdWJsZSByZWxhdGl2ZUZvbnRT
aXplKSB7IG1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0KIAogICAgIENv
bG9yIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZENvbG9yOyB9
Ci0gICAgdm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoUkdCQTMyIGNvbG9yKSB7IG1fZm9yZWdyb3Vu
ZENvbG9yLnNldFJHQihjb2xvcik7IH0KKyAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihDb2xv
ciBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvciA9IGNvbG9yOyB9CiAKICAgICBDb2xvciBiYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvci5z
ZXRSR0IoY29sb3IpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3Ip
IHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIAogICAgIENvbG9yIGhpZ2hsaWdo
dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0
SGlnaGxpZ2h0Q29sb3IoUkdCQTMyIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3Iuc2V0UkdCKGNv
bG9yKTsgfQorICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoQ29sb3IgY29sb3IpIHsgbV9oaWdo
bGlnaHRDb2xvciA9IGNvbG9yOyB9CiAgICAgCiAgICAgZW51bSBTdGF0dXMgewogICAgICAgICBV
bmluaXRpYWxpemVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29sb3JNYWMuaAppbmRleCAzNzZmNzlmODM5ODJlMmFiY2VlMTUzYzdmNmE5YzAwMTc5YzM3YTMw
Li45N2Y0NGMxNzE2NmRlMmRiMjFmY2U1YTNmNGJjOWE3MmFlZDk2MDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaApAQCAtNDcsNyArNDcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2Vz
VGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sKTsKICAgICAKICAgICAvLyBGb2N1cyByaW5nIGNv
bG9yIHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCi0gICAgUkdCQTMyIG9sZEFxdWFGb2N1c1Jp
bmdDb2xvcigpOworICAgIENvbG9yIG9sZEFxdWFGb2N1c1JpbmdDb2xvcigpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQppbmRl
eCAzOTNiM2M2NDgxMjU5MjVjYWU5OWYyYjMxM2FlYjM3Y2YyMGUwNjk2Li5jZGNjNmY2N2JmNTQ2
NGFiYmQ4ZDNkZmY5MDNmODEyMGE5MDI0ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgdXNlT2xkQXF1YUZvY3VzUmluZ0NvbG9yOwogCi1S
R0JBMzIgb2xkQXF1YUZvY3VzUmluZ0NvbG9yKCkKK0NvbG9yIG9sZEFxdWFGb2N1c1JpbmdDb2xv
cigpCiB7CiAgICAgcmV0dXJuIDB4RkY3REFERDk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDRkMzg5YmM5MWYxNmQ0MTkzZmMxYmQ2NmRj
NWVkNTgyYmUxOTg2OGMuLjQ1ZDhjN2JlYjQxZTZiYjhkNDBlZjMzZjdkYWM0YzQ3ZDI0YmNhMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyVGFibGVDZWxsIDogcHVibGljIFJl
bmRlckJsb2NrRmxvdyB7CiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyVGFibGVD
ZWxsKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclRhYmxlQ2VsbCksIFJlbmRlclRhYmxlQ2Vs
bF9zaG91bGRfc3RheV9zbWFsbCk7Ci1DT01QSUxFX0FTU0VSVChzaXplb2YoQ29sbGFwc2VkQm9y
ZGVyVmFsdWUpID09IDEyLCBDb2xsYXBzZWRCb3JkZXJWYWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7
CitDT01QSUxFX0FTU0VSVChzaXplb2YoQ29sbGFwc2VkQm9yZGVyVmFsdWUpID09IDE2LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKIFJlbmRlclRhYmxlQ2VsbDo6
UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDE2ZjAwMjcwYzljNzdlNjg5NTM2MWE5YTQ5
NWUwNjQyMjFjMGJmNzAuLjFiOTRlNjE4YjFjODM0MmM4NTU3YjU1OTA5N2Q2NzExNjllMzQxNzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC00MTIsNyArNDEyLDcg
QEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIC8vIFRoaXMgY29sb3Ig
aXMgZXhwZWN0ZWQgdG8gYmUgZHJhd24gb24gYSBzZW1pLXRyYW5zcGFyZW50IG92ZXJsYXksCiAg
ICAgLy8gbWFraW5nIGl0IG1vcmUgdHJhbnNwYXJlbnQgdGhhbiBpdHMgYWxwaGEgdmFsdWUgaW5k
aWNhdGVzLgotICAgIHN0YXRpYyBjb25zdCBSR0JBMzIgZGVmYXVsdFRhcEhpZ2hsaWdodENvbG9y
ID0gMHg2NjAwMDAwMDsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQ29sb3I+IGRl
ZmF1bHRUYXBIaWdobGlnaHRDb2xvciA9IHN0YXRpY19jYXN0PFJHQkEzMj4oMHg2NjAwMDAwMCk7
CiAjZW5kaWYKIAogI2lmIFVTRShORVdfVEhFTUUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmluZGV4IGNmMzQwZDBmNjgyZTc0YWU0OTJjY2VmY2ZhY2Nh
MTE2NzI3N2E0YmQuLjZiYmRiZDIzZTQ4YmI3MWM0ZjJhMzNjOGRjOTNhMjU2NDNhNjJhMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCkBAIC0zNCwx
MCArMzQsNyBAQCBjbGFzcyBCb3JkZXJWYWx1ZSB7CiBmcmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7
CiBwdWJsaWM6CiAgICAgQm9yZGVyVmFsdWUoKQotICAgICAgICA6IG1fd2lkdGgoMykKLSAgICAg
ICAgLCBtX2NvbG9yKDApCi0gICAgICAgICwgbV9jb2xvcklzVmFsaWQoZmFsc2UpCi0gICAgICAg
ICwgbV9zdHlsZShCTk9ORSkKKyAgICAgICAgOiBtX3N0eWxlKEJOT05FKQogICAgICAgICAsIG1f
aXNBdXRvKEFVVE9fT0ZGKQogICAgIHsKICAgICB9CkBAIC00OSw3ICs0Niw3IEBAIHB1YmxpYzoK
IAogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4g
bV9jb2xvcklzVmFsaWQgJiYgIWFscGhhQ2hhbm5lbChtX2NvbG9yKTsKKyAgICAgICAgcmV0dXJu
IG1fY29sb3IuaXNWYWxpZCgpICYmICFtX2NvbG9yLmFscGhhKCk7CiAgICAgfQogCiAgICAgYm9v
bCBpc1Zpc2libGUoYm9vbCBjaGVja1N0eWxlID0gdHJ1ZSkgY29uc3QKQEAgLTU5LDcgKzU2LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJvcmRlclZhbHVlJiBvKSBj
b25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1fc3R5
bGUgPT0gby5tX3N0eWxlICYmIG1fY29sb3IgPT0gby5tX2NvbG9yICYmIG1fY29sb3JJc1ZhbGlk
ID09IG8ubV9jb2xvcklzVmFsaWQ7CisgICAgICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0
aCAmJiBtX3N0eWxlID09IG8ubV9zdHlsZSAmJiBtX2NvbG9yID09IG8ubV9jb2xvcjsKICAgICB9
CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQm9yZGVyVmFsdWUmIG8pIGNvbnN0CkBAIC02
OSwxOSArNjYsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBDb2xvciYg
Y29sb3IpCiAgICAgewotICAgICAgICBtX2NvbG9yID0gY29sb3IucmdiKCk7Ci0gICAgICAgIG1f
Y29sb3JJc1ZhbGlkID0gY29sb3IuaXNWYWxpZCgpOworICAgICAgICBtX2NvbG9yID0gY29sb3I7
CiAgICAgfQogCi0gICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcihtX2NvbG9y
LCBtX2NvbG9ySXNWYWxpZCk7IH0KKyAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1f
Y29sb3I7IH0KIAogICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQog
ICAgIEVCb3JkZXJTdHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3Jk
ZXJTdHlsZT4obV9zdHlsZSk7IH0KIAogcHJvdGVjdGVkOgotICAgIGZsb2F0IG1fd2lkdGg7Ci0g
ICAgUkdCQTMyIG1fY29sb3I7Ci0gICAgdW5zaWduZWQgbV9jb2xvcklzVmFsaWQgOiAxOworICAg
IGZsb2F0IG1fd2lkdGggeyAzIH07CisgICAgQ29sb3IgbV9jb2xvcjsKIAogICAgIHVuc2lnbmVk
IG1fc3R5bGUgOiA0OyAvLyBFQm9yZGVyU3R5bGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaAppbmRleCA2ZTliMzI4N2Vm
MGM0MjhlZTE5YjFkMjRiOTRlZmI0NjBiNjEwYTM5Li4xMWMzZjg0MmYxMjA5ODBmYWJkYzBlNDE5
MDhhNDg4YzA0OGYyOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaApAQCAtMzMsOCArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBDb2xsYXBzZWRCb3JkZXJWYWx1ZSB7CiBwdWJsaWM6CiAgICAgQ29s
bGFwc2VkQm9yZGVyVmFsdWUoKQotICAgICAgICA6IG1fY29sb3JJc1ZhbGlkKGZhbHNlKQotICAg
ICAgICAsIG1fc3R5bGUoQk5PTkUpCisgICAgICAgIDogbV9zdHlsZShCTk9ORSkKICAgICAgICAg
LCBtX3ByZWNlZGVuY2UoQk9GRikKICAgICAgICAgLCBtX3RyYW5zcGFyZW50KGZhbHNlKQogICAg
IHsKQEAgLTQyLDggKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUo
Y29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBFQm9yZGVyUHJl
Y2VkZW5jZSBwcmVjZWRlbmNlKQogICAgICAgICA6IG1fd2lkdGgoTGF5b3V0VW5pdChib3JkZXIu
bm9uWmVybygpID8gYm9yZGVyLndpZHRoKCkgOiAwKSkKLSAgICAgICAgLCBtX2NvbG9yKGNvbG9y
LnJnYigpKQotICAgICAgICAsIG1fY29sb3JJc1ZhbGlkKGNvbG9yLmlzVmFsaWQoKSkKKyAgICAg
ICAgLCBtX2NvbG9yKGNvbG9yKQogICAgICAgICAsIG1fc3R5bGUoYm9yZGVyLnN0eWxlKCkpCiAg
ICAgICAgICwgbV9wcmVjZWRlbmNlKHByZWNlZGVuY2UpCiAgICAgICAgICwgbV90cmFuc3BhcmVu
dChib3JkZXIuaXNUcmFuc3BhcmVudCgpKQpAQCAtNTMsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
TGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUgPiBCSElEREVOID8gbV93
aWR0aCA6IExheW91dFVuaXQ6OmZyb21QaXhlbCgwKTsgfQogICAgIEVCb3JkZXJTdHlsZSBzdHls
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJTdHlsZT4obV9zdHlsZSk7IH0K
ICAgICBib29sIGV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlY2VkZW5jZSAhPSBCT0ZGOyB9
Ci0gICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcihtX2NvbG9yLCBtX2NvbG9y
SXNWYWxpZCk7IH0KKyAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sb3I7IH0K
ICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zcGFyZW50OyB9
CiAgICAgRUJvcmRlclByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVCb3JkZXJQcmVjZWRlbmNlPihtX3ByZWNlZGVuY2UpOyB9CiAKQEAgLTY2LDggKzY0
LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIExheW91dFVuaXQgbV93aWR0aDsKLSAgICBS
R0JBMzIgbV9jb2xvciB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2NvbG9ySXNWYWxpZCA6IDE7Cisg
ICAgQ29sb3IgbV9jb2xvcjsKICAgICB1bnNpZ25lZCBtX3N0eWxlIDogNDsgLy8gRUJvcmRlclN0
eWxlCiAgICAgdW5zaWduZWQgbV9wcmVjZWRlbmNlIDogMzsgLy8gRUJvcmRlclByZWNlZGVuY2UK
ICAgICB1bnNpZ25lZCBtX3RyYW5zcGFyZW50IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaAppbmRleCAwYWZlNWE4MTJmMjk5MTg1YTc1YzM1YjRi
ODM1NDI4Y2E4NTc0Yzk1Li5kNThiMGExMmZiZmNhNjVlYzU5NjJjMGRhMjQyNmQzZWYyOTM3NDQ2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oCkBA
IC0zNCw3ICszNCw3IEBAIGZyaWVuZCBjbGFzcyBSZW5kZXJTdHlsZTsKIHB1YmxpYzoKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgT3V0bGluZVZhbHVlJiBvKSBjb25zdAogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1fc3R5bGUgPT0gby5tX3N0eWxlICYm
IG1fY29sb3IgPT0gby5tX2NvbG9yICYmIG1fY29sb3JJc1ZhbGlkID09IG8ubV9jb2xvcklzVmFs
aWQgJiYgbV9vZmZzZXQgPT0gby5tX29mZnNldCAmJiBtX2lzQXV0byA9PSBvLm1faXNBdXRvOwor
ICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9zdHlsZSA9PSBvLm1fc3R5
bGUgJiYgbV9jb2xvciA9PSBvLm1fY29sb3IgJiYgbV9vZmZzZXQgPT0gby5tX29mZnNldCAmJiBt
X2lzQXV0byA9PSBvLm1faXNBdXRvOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgT3V0bGluZVZhbHVlJiBvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzU0MDlhMWZjYzdhYWEwMGZlZWNmOGNmMDg2
ZjEzOTdiZWFjYWM0YS4uZDg1YjM4MzdmYmRmZDFhNmNmZjVlOTRkZmFiMDg2NzQxMmE2OTc5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBA
IC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNC
b3JkZXJWYWx1ZSB7CiAgICAgZmxvYXQgbV93aWR0aDsKLSAgICBSR0JBMzIgbV9jb2xvcjsKKyAg
ICBDb2xvciBtX2NvbG9yOwogICAgIGludCBtX3Jlc3RCaXRzOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggYjlhODRlNjY0MjBi
ZDZjZjUxYzI4NGYyMjk3NzEyYTE3MGU4NjBhNy4uYTc2MGM3NjgyZmU1ZDg4M2JjOTE2YWRjZTQz
NWI2OWYzMTNkY2JkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXRO
U1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktpdE5TU3Ry
aW5nRXh0cmFzLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIEJPT0wgY2FuVXNlRmFzdFJl
bmRlcmVyKGNvbnN0IFVuaUNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogICAgICAgICBD
R0Zsb2F0IGJsdWU7CiAgICAgICAgIENHRmxvYXQgYWxwaGE7CiAgICAgICAgIFtbdGV4dENvbG9y
IGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdIGdldFJlZDom
cmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07Ci0gICAgICAgIGdyYXBo
aWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAqIDI1NSwg
Ymx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0LnNldEZp
bGxDb2xvcihDb2xvcihzdGF0aWNfY2FzdDxmbG9hdD4ocmVkICogMjU1KSwgc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGdyZWVuICogMjU1LjBmKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWUgKiAyNTUuMGYp
LCBzdGF0aWNfY2FzdDxmbG9hdD4oYWxwaGEgKiAyNTUuMGYpKSk7CiAKICAgICAgICAgd2ViQ29y
ZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9pbnQueCwg
KGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288741</attachid>
            <date>2016-09-13 15:55:23 -0700</date>
            <delta_ts>2016-09-13 17:07:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161856-20160914085245.patch</filename>
            <type>text/plain</type>
            <size>27009</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE4ZjM4MzY1ZGM4NWFk
ZGM2OGU5MzI0M2Y1ZTdkMGM5MTYyMDE5NC4uOTY1YjZmNjhmNjQ1NWFlODE5YTBlNjVkMDg3ZTc2
OWNmNDcxMTVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE2LTA5LTEyICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB3aXRo
IENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyNTQz
MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEluIHBy
ZXBhcmF0aW9uIGZvciB0aGUgQ29sb3IgY2xhc3MgdG8gYmVjb21lIG1vcmUgdGhhbgorICAgICAg
ICBqdXN0IGEgNC1ieXRlIFJHQkEgdmFsdWUsIEkgd2VudCB0aHJvdWdoIGEgZmV3IHBsYWNlcwor
ICAgICAgICB0aGF0IHdlcmUgdXNpbmcgdGhlIFJHQkEzMiB0eXBlIGRpcmVjdGx5LCBhbmQgcmVw
bGFjZWQKKyAgICAgICAgdGhlbSB3aXRoIENvbG9yLiBUaGlzIHdpbGwgbWFrZSBzb21lIG9iamVj
dHMgYSBsaXR0bGUKKyAgICAgICAgYmlnZ2VyIGUuZy4gQm9yZGVyVmFsdWUgYW5kIGl0cyBmcmll
bmRzLgorCisgICAgICAgIEkgbW9zdGx5IGxvb2tlZCBhdCB0aGUgcGxhY2VzIHRoYXQgd2VyZSB1
c2luZyBSR0JBMzIgYXMKKyAgICAgICAgYSBtZW1iZXIgdmFyaWFibGUuIFRoZXJlIGlzIHN0aWxs
IGEgbG90IG9mIFJHQkEzMiB1c2UKKyAgICAgICAgYXJvdW5kIHRoZSBwcm9qZWN0LCBpbiBwYXJ0
aWN1bGFyIHRoZSBDU1MgcGFyc2VyLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBiZWhh
dmlvdXIgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcDogU2hhZG93cyBub3cgdXNlIENvbG9yLgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaG91bGREcmF3U2hhZG93cyk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpZERyYXcpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcDogQ2FudmFzIHN0eWxlIHVzZXMgQ29sb3IgZm9yIGZpbGxzIGFuZCBz
dHJva2VzLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50UkdCQSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q01ZS0FWYWx1ZXM6OkNN
WUtBVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjb2xvcik6CisKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaDogRm9yZWdyb3VuZCwgYmFj
a2dyb3VuZCBhbmQKKyAgICAgICAgaGlnaGxpZ2h0IGNvbG9ycy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0Rm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldEhpZ2hsaWdodENvbG9yKToKKworICAgICAgICAqIHBhZ2Uv
UGFnZU92ZXJsYXkuY3BwOiBCYWNrZ3JvdW5kIGNvbG9yLgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZU92ZXJsYXk6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlT3Zlcmxh
eS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmg6IFJhbmRv
bSBmdW5jdGlvbiB0aGF0IHJldHVybmVkIFJHQkEzMi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpvbGRBcXVhRm9jdXNSaW5n
Q29sb3IpOgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6IFVwZGF0
ZSB0aGUgc2l6ZSBvZiBDb2xsYXBzZWRCb3JkZXJWYWx1ZS4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oOiBVc2UgYSBOZXZlckRlc3Ryb3llZCBDb2xvciByYXRoZXIgdGhhbiBh
IHN0YXRpYyBSR0JBMzIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUu
aDogVXNlIGEgQ29sb3IuCisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6Qm9yZGVyVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6OmlzVHJhbnNwYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Qm9yZGVyVmFsdWU6OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlclZhbHVl
Ojpjb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6Q29sbGFwc2VkQm9y
ZGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWU6OmNvbG9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpPdXRsaW5lVmFsdWU6Om9wZXJhdG9yPT0pOgorCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDogVXBkYXRlIHRvIG1hdGNoIG5ldyBCb3JkZXJWYWx1ZS4K
KwogMjAxNi0wOS0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEdldCByaWQgb2YgdGhlIG1fcHJlbXVsdGlwbHlBbHBoYSBmbGFnIG9mIHRo
ZSBJbWFnZUZyYW1lIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggN2Q0NTNjNzUyMTFkM2Y5MWVj
YzNhOGMyMWM1NWFhZGRmOWE3YzlmNi4uMTAwNjcxMjdlZDZlNzc4ZTVhYzcwZjFiYjNjYWIzMDNm
MTg5ZDc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA5LTEyICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB3
aXRoIENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgy
NTQzMjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIElu
IHByZXBhcmF0aW9uIGZvciB0aGUgQ29sb3IgY2xhc3MgdG8gYmVjb21lIG1vcmUgdGhhbgorICAg
ICAgICBqdXN0IGEgNC1ieXRlIFJHQkEgdmFsdWUsIEkgd2VudCB0aHJvdWdoIGEgZmV3IHBsYWNl
cworICAgICAgICB0aGF0IHdlcmUgdXNpbmcgdGhlIFJHQkEzMiB0eXBlIGRpcmVjdGx5LCBhbmQg
cmVwbGFjZWQKKyAgICAgICAgdGhlbSB3aXRoIENvbG9yLiBUaGlzIHdpbGwgbWFrZSBzb21lIG9i
amVjdHMgYSBsaXR0bGUKKyAgICAgICAgYmlnZ2VyIGUuZy4gQm9yZGVyVmFsdWUgYW5kIGl0cyBm
cmllbmRzLgorCisgICAgICAgIEkgbW9zdGx5IGxvb2tlZCBhdCB0aGUgcGxhY2VzIHRoYXQgd2Vy
ZSB1c2luZyBSR0JBMzIgYXMKKyAgICAgICAgYSBtZW1iZXIgdmFyaWFibGUuIFRoZXJlIGlzIHN0
aWxsIGEgbG90IG9mIFJHQkEzMiB1c2UKKyAgICAgICAgYXJvdW5kIHRoZSBwcm9qZWN0LCBpbiBw
YXJ0aWN1bGFyIHRoZSBDU1MgcGFyc2VyLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBi
ZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgICogTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5t
bToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQb2ludDpmb250OnRleHRDb2xvcjph
bGxvd2luZ0ZvbnRTbW9vdGhpbmc6XSk6IEV4cGxpY2l0bHkKKyAgICAgICAgY2FsbCBhIENvbG9y
IGNvbnN0cnVjdG9yLCByYXRoZXIgdGhhbiBwYXNzaW5nIGFuIFJHQkEzMi4KKwogMjAxNi0wOS0x
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Agc3VwcG9y
dCBmb3IgPGlzaW5kZXg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA3Zjk1MWM2ZWFmMDllOGZlNmMwYTNk
ZWViYTdmMGIxZWU4ZjllZTk2Li5lYjJkYjU1ZjhiYmYzZjA4ZWFiOGJhYzc1NzQ1ODNlYjAxMmM0
YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEyNTgsMTcgKzEyNTgsMTcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCwgZmxv
YXQgYWxwaGEpCiB7Ci0gICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1
ciwgbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
YWxwaGEpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBD
b2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpOwogfQogCiB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7
Ci0gICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgbWFrZVJHQkEz
MkZyb21GbG9hdHMociwgZywgYiwgYSkpOworICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgs
IGhlaWdodCksIGJsdXIsIENvbG9yKHIsIGcsIGIsIGEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogewot
ICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIG1ha2VSR0JBRnJv
bUNNWUtBKGMsIG0sIHksIGssIGEpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpLCBibHVyLCBDb2xvcihjLCBtLCB5LCBrLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclNoYWRvdygpCkBAIC0xMjc2LDcgKzEyNzYsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3coKQogICAgIHNldFNoYWRvdyhG
bG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50KTsKIH0KIAotdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQg
Ymx1ciwgUkdCQTMyIGNvbG9yKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgQ29sb3IgY29sb3IpCiB7
CiAgICAgaWYgKHN0YXRlKCkuc2hhZG93T2Zmc2V0ID09IG9mZnNldCAmJiBzdGF0ZSgpLnNoYWRv
d0JsdXIgPT0gYmx1ciAmJiBzdGF0ZSgpLnNoYWRvd0NvbG9yID09IGNvbG9yKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMzA2LDcgKzEzMDYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6YXBwbHlTaGFkb3coKQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxk
RHJhd1NoYWRvd3MoKSBjb25zdAogewotICAgIHJldHVybiBhbHBoYUNoYW5uZWwoc3RhdGUoKS5z
aGFkb3dDb2xvcikgJiYgKHN0YXRlKCkuc2hhZG93Qmx1ciB8fCAhc3RhdGUoKS5zaGFkb3dPZmZz
ZXQuaXNaZXJvKCkpOworICAgIHJldHVybiBzdGF0ZSgpLnNoYWRvd0NvbG9yLmFscGhhKCkgJiYg
KHN0YXRlKCkuc2hhZG93Qmx1ciB8fCAhc3RhdGUoKS5zaGFkb3dPZmZzZXQuaXNaZXJvKCkpOwog
fQogCiBlbnVtIEltYWdlU2l6ZVR5cGUgewpAQCAtMTg4Miw3ICsxODgyLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25l
ZCBvcHRpb25zKQogICAgICAgICBkaXJ0eVJlY3QgPSBjdG0ubWFwUmVjdChyKTsKICAgICB9CiAK
LSAgICBpZiAob3B0aW9ucyAmIENhbnZhc0RpZERyYXdBcHBseVNoYWRvdyAmJiBhbHBoYUNoYW5u
ZWwoc3RhdGUoKS5zaGFkb3dDb2xvcikpIHsKKyAgICBpZiAob3B0aW9ucyAmIENhbnZhc0RpZERy
YXdBcHBseVNoYWRvdyAmJiBzdGF0ZSgpLnNoYWRvd0NvbG9yLmFscGhhKCkpIHsKICAgICAgICAg
Ly8gVGhlIHNoYWRvdyBnZXRzIGFwcGxpZWQgYWZ0ZXIgdHJhbnNmb3JtYXRpb24KICAgICAgICAg
RmxvYXRSZWN0IHNoYWRvd1JlY3QoZGlydHlSZWN0KTsKICAgICAgICAgc2hhZG93UmVjdC5tb3Zl
KHN0YXRlKCkuc2hhZG93T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggNzkwMjZmNjNiNzA5NGU4MTQ5
ZGJlYTIzMjczNTJmZTQwZDZlM2QxYy4uY2NiMjFlNTFkZjViMmQ3NGNhYmRhZGY5ODRkY2Y4MjY0
ODI0NzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTI4NCw3ICsyODQsNyBAQCBwcml2YXRlOgogICAgICAg
ICBmbG9hdCBtaXRlckxpbWl0OwogICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAg
ICAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgICAgICBSR0JBMzIgc2hhZG93Q29sb3I7CisgICAg
ICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgICAgICBmbG9hdCBnbG9iYWxBbHBoYTsKICAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgZ2xvYmFsQ29tcG9zaXRlOwogICAgICAgICBCbGVuZE1vZGUg
Z2xvYmFsQmxlbmQ7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdGF0
ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlU3RhY2subGFzdCgpOyB9CiAKICAgICB2
b2lkIGFwcGx5TGluZURhc2goKSBjb25zdDsKLSAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgUkdCQTMyIGNvbG9yKTsKKyAgICB2b2lkIHNldFNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgQ29sb3IpOwogICAgIHZv
aWQgYXBwbHlTaGFkb3coKTsKICAgICBib29sIHNob3VsZERyYXdTaGFkb3dzKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCAxYzhiMjAz
NTc4NWI1M2IwN2E1MmI0OGJhMDhiMzllOWFiYWRlN2VmLi44Y2I0YzkwNDJkN2RmYjk0NmJmMTFj
ZjY5MDg2MGMxNWJiZmMzMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwCkBAIC04MywyNiArODMsMjYgQEAgYm9vbCBwYXJzZUNvbG9yT3JDdXJyZW50Q29s
b3IoUkdCQTMyJiBwYXJzZWRDb2xvciwgY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgSFQKICAg
ICB9CiB9CiAKLUNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKLSAgICA6IG1f
cmdiYShyZ2JhKQorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKENvbG9yIGNvbG9yKQorICAgIDog
bV9jb2xvcihjb2xvcikKICAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6
Q2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fcmdiYSht
YWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBo
YSkpCisgICAgOiBtX2NvbG9yKENvbG9yKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWws
IGFscGhhKSkKICAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKLSAgICA6IG1fcmdiYSht
YWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSkKKyAgICA6IG1fY29sb3IoQ29sb3Iociwg
ZywgYiwgYSkpCiAgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpCi0gICAg
OiBtX2NteWthKG5ldyBDTVlLQVZhbHVlcyhtYWtlUkdCQUZyb21DTVlLQShjLCBtLCB5LCBrLCBh
KSwgYywgbSwgeSwgaywgYSkpCisgICAgOiBtX2NteWthKG5ldyBDTVlLQVZhbHVlcyhDb2xvcihj
LCBtLCB5LCBrLCBhKSwgYywgbSwgeSwgaywgYSkpCiAgICAgLCBtX3R5cGUoQ01ZS0EpCiB7CiB9
CkBAIC0xNzUsNyArMTc1LDcgQEAgYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3Io
Y29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKSBjb25zdAogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsK
ICAgICBjYXNlIFJHQkE6Ci0gICAgICAgIHJldHVybiBtX3JnYmEgPT0gb3RoZXIubV9yZ2JhOwor
ICAgICAgICByZXR1cm4gbV9jb2xvciA9PSBvdGhlci5tX2NvbG9yOwogICAgIGNhc2UgQ01ZS0E6
CiAgICAgICAgIHJldHVybiBtX2NteWthLT5jID09IG90aGVyLm1fY215a2EtPmMKICAgICAgICAg
ICAgICYmIG1fY215a2EtPm0gPT0gb3RoZXIubV9jbXlrYS0+bQpAQCAtMjAwLDcgKzIwMCw3IEBA
IGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudFJHQkEoZmxvYXQgciwgZmxvYXQgZywgZmxv
YXQgYiwgZmxvYXQgYSkgY29uc3QKICAgICBpZiAobV90eXBlICE9IFJHQkEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX3JnYmEgPT0gbWFrZVJHQkEzMkZyb21GbG9hdHMo
ciwgZywgYiwgYSk7CisgICAgcmV0dXJuIG1fY29sb3IgPT0gQ29sb3IociwgZywgYiwgYSk7CiB9
CiAKIGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENNWUtBKGZsb2F0IGMsIGZsb2F0IG0s
IGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIGNvbnN0CkBAIC0yMjMsNyArMjIzLDcgQEAgQ2Fu
dmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikKICAgICBlbHNl
IGlmIChtX3R5cGUgPT0gSW1hZ2VQYXR0ZXJuKQogICAgICAgICBtX3BhdHRlcm4tPnJlZigpOwog
ICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBDTVlLQSkKLSAgICAgICAgbV9jbXlrYSA9IG5ldyBDTVlL
QVZhbHVlcyhvdGhlci5tX2NteWthLT5yZ2JhLCBvdGhlci5tX2NteWthLT5jLCBvdGhlci5tX2Nt
eWthLT5tLCBvdGhlci5tX2NteWthLT55LCBvdGhlci5tX2NteWthLT5rLCBvdGhlci5tX2NteWth
LT5hKTsKKyAgICAgICAgbV9jbXlrYSA9IG5ldyBDTVlLQVZhbHVlcyhvdGhlci5tX2NteWthLT5j
b2xvciwgb3RoZXIubV9jbXlrYS0+Yywgb3RoZXIubV9jbXlrYS0+bSwgb3RoZXIubV9jbXlrYS0+
eSwgb3RoZXIubV9jbXlrYS0+aywgb3RoZXIubV9jbXlrYS0+YSk7CiB9CiAKIENhbnZhc1N0eWxl
JiBDYW52YXNTdHlsZTo6b3BlcmF0b3I9KGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikKQEAgLTI0
MSw3ICsyNDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDTVlLQTogewogICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0
aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCkBAIC0yNzMs
NyArMjczLDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgc3dpdGNoIChtX3R5cGUp
IHsKICAgICBjYXNlIFJHQkE6Ci0gICAgICAgIGNvbnRleHQtPnNldEZpbGxDb2xvcihtX3JnYmEp
OworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jb2xvcik7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklYTUU6IERvIHRoaXMgdGhyb3VnaCBw
bGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQgQVBJLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKaW5kZXggYWU5ZGFhODQ1MmJhYjM2YzMyNmJkMTEzNjg5
N2YwODU3OGJlOGQ5MC4uMzkwOGU4NTY2MzM5NDc3NjU0YmUxZWU2ZjY5ODE3ZmRkZjdlNjI0MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzU3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5oCkBAIC00Miw3ICs0Miw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBDYW52YXNTdHlsZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBDYW52YXNTdHlsZSgpOwotICAgICAgICBleHBsaWNpdCBDYW52YXNTdHls
ZShSR0JBMzIpOworICAgICAgICBleHBsaWNpdCBDYW52YXNTdHlsZShDb2xvcik7CiAgICAgICAg
IENhbnZhc1N0eWxlKGZsb2F0IGdyYXlMZXZlbCwgZmxvYXQgYWxwaGEpOwogICAgICAgICBDYW52
YXNTdHlsZShmbG9hdCByLCBmbG9hdCBnLCBmbG9hdCBiLCBmbG9hdCBhbHBoYSk7CiAgICAgICAg
IENhbnZhc1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGFs
cGhhKTsKQEAgLTgwLDkgKzgwLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoQ01ZS0FWYWx1ZXMpOwogICAgICAgICBwdWJsaWM6Ci0gICAgICAgICAgICBDTVlLQVZhbHVl
cygpIDogcmdiYSgwKSwgYygwKSwgbSgwKSwgeSgwKSwgaygwKSwgYSgwKSB7IH0KLSAgICAgICAg
ICAgIENNWUtBVmFsdWVzKFJHQkEzMiByZ2JhLCBmbG9hdCBjeWFuLCBmbG9hdCBtYWdlbnRhLCBm
bG9hdCB5ZWxsb3csIGZsb2F0IGJsYWNrLCBmbG9hdCBhbHBoYSkgOiByZ2JhKHJnYmEpLCBjKGN5
YW4pLCBtKG1hZ2VudGEpLCB5KHllbGxvdyksIGsoYmxhY2spLCBhKGFscGhhKSB7IH0KLSAgICAg
ICAgICAgIFJHQkEzMiByZ2JhOworICAgICAgICAgICAgQ01ZS0FWYWx1ZXMoKQorICAgICAgICAg
ICAgICAgIDogY29sb3IoKSwgYygwKSwgbSgwKSwgeSgwKSwgaygwKSwgYSgwKQorICAgICAgICAg
ICAgeyB9CisKKyAgICAgICAgICAgIENNWUtBVmFsdWVzKENvbG9yIGNvbG9yLCBmbG9hdCBjeWFu
LCBmbG9hdCBtYWdlbnRhLCBmbG9hdCB5ZWxsb3csIGZsb2F0IGJsYWNrLCBmbG9hdCBhbHBoYSkK
KyAgICAgICAgICAgICAgICA6IGNvbG9yKGNvbG9yKSwgYyhjeWFuKSwgbShtYWdlbnRhKSwgeSh5
ZWxsb3cpLCBrKGJsYWNrKSwgYShhbHBoYSkKKyAgICAgICAgICAgIHsgfQorICAgICAgICAgICAg
Q29sb3IgY29sb3I7CiAgICAgICAgICAgICBmbG9hdCBjOwogICAgICAgICAgICAgZmxvYXQgbTsK
ICAgICAgICAgICAgIGZsb2F0IHk7CkBAIC05OSw3ICsxMDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIH0KIAogICAgICAgICB1bmlvbiB7Ci0gICAgICAgICAgICBSR0JBMzIgbV9y
Z2JhOworICAgICAgICAgICAgQ29sb3IgbV9jb2xvcjsKICAgICAgICAgICAgIGZsb2F0IG1fb3Zl
cnJpZGVBbHBoYTsKICAgICAgICAgICAgIENhbnZhc0dyYWRpZW50KiBtX2dyYWRpZW50OwogICAg
ICAgICAgICAgQ2FudmFzUGF0dGVybiogbV9wYXR0ZXJuOwpAQCAtMTM0LDggKzEzOSw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gUkdCQSB8
fCBtX3R5cGUgPT0gQ01ZS0EpOwogICAgICAgICBpZiAobV90eXBlID09IFJHQkEpCi0gICAgICAg
ICAgICByZXR1cm4gQ29sb3IobV9yZ2JhKS5zZXJpYWxpemVkKCk7Ci0gICAgICAgIHJldHVybiBD
b2xvcihtX2NteWthLT5yZ2JhKS5zZXJpYWxpemVkKCk7CisgICAgICAgICAgICByZXR1cm4gbV9j
b2xvci5zZXJpYWxpemVkKCk7CisgICAgICAgIHJldHVybiBtX2NteWthLT5jb2xvci5zZXJpYWxp
emVkKCk7CiAgICAgfQogCiAgICAgaW5saW5lIENhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShDYW52
YXNTdHlsZSYmIG90aGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9U
ZXh0VHJhY2tDdWVHZW5lcmljLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFj
a0N1ZUdlbmVyaWMuaAppbmRleCAzZjM1NjcyZGE0ZjM1YzIyYjRmOTI4NDEzNDI5MzdkOGI0NDc3
YzAyLi41MzZjYjBhNzRkMGZjOTNjMjc5ZTAzNTRkN2Y3MGMyNzEzOGFhZDZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaApAQCAtNjIsMTMg
KzYyLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvbnROYW1lKFN0cmluZyBuYW1lKSB7IG1f
Zm9udE5hbWUgPSBuYW1lOyB9CiAKICAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3IoKSBjb25zdCB7
IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9y
KFJHQkEzMiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAg
dm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsgbV9mb3JlZ3JvdW5kQ29sb3Ig
PSBjb2xvcjsgfQogICAgIAogICAgIENvbG9yIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2dyb3VuZENvbG9yOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoUkdC
QTMyIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yLnNldFJHQihjb2xvcik7IH0KKyAgICB2b2lk
IHNldEJhY2tncm91bmRDb2xvcihDb2xvciBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvciA9IGNv
bG9yOyB9CiAgICAgCiAgICAgQ29sb3IgaGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBt
X2hpZ2hsaWdodENvbG9yOyB9Ci0gICAgdm9pZCBzZXRIaWdobGlnaHRDb2xvcihSR0JBMzIgY29s
b3IpIHsgbV9oaWdobGlnaHRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAgdm9pZCBzZXRIaWdo
bGlnaHRDb2xvcihDb2xvciBjb2xvcikgeyBtX2hpZ2hsaWdodENvbG9yID0gY29sb3I7IH0KICAg
ICAKICAgICB2b2lkIHNldEZvbnRTaXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0
YW50KSBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zl
cmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNwcAppbmRleCA2NGQw
N2U0OGIyYWZlYTE5ZjJjMjE4NzYyMGMzYTY5NDcxNTRmMzk0Li40ZTgzNzRhMTQ1MDU5YTlhNWZm
Mjc3NDhmNDFiZTEyYzU2OGY2Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VPdmVybGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmNwcApA
QCAtMTM2LDcgKzEzNiw3IEBAIEludFNpemUgUGFnZU92ZXJsYXk6OnZpZXdUb092ZXJsYXlPZmZz
ZXQoKSBjb25zdAogICAgIHJldHVybiBJbnRTaXplKCk7CiB9CiAKLXZvaWQgUGFnZU92ZXJsYXk6
OnNldEJhY2tncm91bmRDb2xvcihSR0JBMzIgYmFja2dyb3VuZENvbG9yKQordm9pZCBQYWdlT3Zl
cmxheTo6c2V0QmFja2dyb3VuZENvbG9yKENvbG9yIGJhY2tncm91bmRDb2xvcikKIHsKICAgICBp
ZiAobV9iYWNrZ3JvdW5kQ29sb3IgPT0gYmFja2dyb3VuZENvbG9yKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VPdmVybGF5LmgKaW5kZXggZjkwZDBjMzY0YTA4NmMzNGJkNmVhYjEy
MTU3ZDRmZWM3ODY4YTk4ZC4uZjhkNzM2YWI2YmI3YjllNGVkMjU5MjA1YWQ2ZjhlYzdhM2Q5OTFi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXkuaApAQCAtMTA2LDggKzEwNiw4IEBAIHB1Ymxp
YzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIEludFNpemUgdmlld1RvT3ZlcmxheU9mZnNldCgpIGNv
bnN0OwogCi0gICAgUkdCQTMyIGJhY2tncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fYmFj
a2dyb3VuZENvbG9yOyB9Ci0gICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoUkdCQTMyKTsKKyAg
ICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xv
cjsgfQorICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKENvbG9yKTsKIAogICAgIHZvaWQgc2V0
U2hvdWxkSWdub3JlTW91c2VFdmVudHNPdXRzaWRlQm91bmRzKGJvb2wgZmxhZykgeyBtX3Nob3Vs
ZElnbm9yZU1vdXNlRXZlbnRzT3V0c2lkZUJvdW5kcyA9IGZsYWc7IH0KIApAQCAtMTQ0LDcgKzE0
NCw3IEBAIHByaXZhdGU6CiAgICAgT3ZlcmxheVR5cGUgbV9vdmVybGF5VHlwZTsKICAgICBJbnRS
ZWN0IG1fb3ZlcnJpZGVGcmFtZTsKIAotICAgIFJHQkEzMiBtX2JhY2tncm91bmRDb2xvciB7IENv
bG9yOjp0cmFuc3BhcmVudCB9OworICAgIENvbG9yIG1fYmFja2dyb3VuZENvbG9yIHsgQ29sb3I6
OnRyYW5zcGFyZW50IH07CiAgICAgUGFnZU92ZXJsYXlJRCBtX3BhZ2VPdmVybGF5SUQ7CiAKICAg
ICBib29sIG1fc2hvdWxkSWdub3JlTW91c2VFdmVudHNPdXRzaWRlQm91bmRzIHsgdHJ1ZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCmluZGV4IDA3NjAyZDI3ZTZlNDAxYTVkNjljNDhl
OWRlM2Q2MGI0MTczMmFmNjQuLjMyYTc0M2JhNWI4ZDRkODYxOGU0MWUxMzg1NDQyYWQ4NmE2MDc3
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRl
eHRUcmFja1ByaXZhdGVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKQEAgLTg3LDEzICs4NywxMyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRSZWxhdGl2ZUZvbnRTaXplKGRvdWJsZSByZWxhdGl2ZUZvbnRT
aXplKSB7IG1fcmVsYXRpdmVGb250U2l6ZSA9IHJlbGF0aXZlRm9udFNpemU7IH0KIAogICAgIENv
bG9yIGZvcmVncm91bmRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZENvbG9yOyB9
Ci0gICAgdm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoUkdCQTMyIGNvbG9yKSB7IG1fZm9yZWdyb3Vu
ZENvbG9yLnNldFJHQihjb2xvcik7IH0KKyAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihDb2xv
ciBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvciA9IGNvbG9yOyB9CiAKICAgICBDb2xvciBiYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2JhY2tncm91bmRDb2xvci5z
ZXRSR0IoY29sb3IpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3Ip
IHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIAogICAgIENvbG9yIGhpZ2hsaWdo
dENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAgIHZvaWQgc2V0
SGlnaGxpZ2h0Q29sb3IoUkdCQTMyIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3Iuc2V0UkdCKGNv
bG9yKTsgfQorICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoQ29sb3IgY29sb3IpIHsgbV9oaWdo
bGlnaHRDb2xvciA9IGNvbG9yOyB9CiAgICAgCiAgICAgZW51bSBTdGF0dXMgewogICAgICAgICBV
bmluaXRpYWxpemVkLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvbWFjL0NvbG9yTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMv
Q29sb3JNYWMuaAppbmRleCAzNzZmNzlmODM5ODJlMmFiY2VlMTUzYzdmNmE5YzAwMTc5YzM3YTMw
Li45N2Y0NGMxNzE2NmRlMmRiMjFmY2U1YTNmNGJjOWE3MmFlZDk2MDJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMuaApAQCAtNDcsNyArNDcs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2Vz
VGVzdE1vZGVGb2N1c1JpbmdDb2xvcihib29sKTsKICAgICAKICAgICAvLyBGb2N1cyByaW5nIGNv
bG9yIHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMuCi0gICAgUkdCQTMyIG9sZEFxdWFGb2N1c1Jp
bmdDb2xvcigpOworICAgIENvbG9yIG9sZEFxdWFGb2N1c1JpbmdDb2xvcigpOwogCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQppbmRl
eCAzOTNiM2M2NDgxMjU5MjVjYWU5OWYyYjMxM2FlYjM3Y2YyMGUwNjk2Li5jZGNjNmY2N2JmNTQ2
NGFiYmQ4ZDNkZmY5MDNmODEyMGE5MDI0ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIGJvb2wgdXNlT2xkQXF1YUZvY3VzUmluZ0NvbG9yOwogCi1S
R0JBMzIgb2xkQXF1YUZvY3VzUmluZ0NvbG9yKCkKK0NvbG9yIG9sZEFxdWFGb2N1c1JpbmdDb2xv
cigpCiB7CiAgICAgcmV0dXJuIDB4RkY3REFERDk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IDRkMzg5YmM5MWYxNmQ0MTkzZmMxYmQ2NmRj
NWVkNTgyYmUxOTg2OGMuLjQ1ZDhjN2JlYjQxZTZiYjhkNDBlZjMzZjdkYWM0YzQ3ZDI0YmNhMjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCkBAIC01
Miw3ICs1Miw3IEBAIHN0cnVjdCBTYW1lU2l6ZUFzUmVuZGVyVGFibGVDZWxsIDogcHVibGljIFJl
bmRlckJsb2NrRmxvdyB7CiB9OwogCiBDT01QSUxFX0FTU0VSVChzaXplb2YoUmVuZGVyVGFibGVD
ZWxsKSA9PSBzaXplb2YoU2FtZVNpemVBc1JlbmRlclRhYmxlQ2VsbCksIFJlbmRlclRhYmxlQ2Vs
bF9zaG91bGRfc3RheV9zbWFsbCk7Ci1DT01QSUxFX0FTU0VSVChzaXplb2YoQ29sbGFwc2VkQm9y
ZGVyVmFsdWUpID09IDEyLCBDb2xsYXBzZWRCb3JkZXJWYWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7
CitDT01QSUxFX0FTU0VSVChzaXplb2YoQ29sbGFwc2VkQm9yZGVyVmFsdWUpID09IDE2LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZV9zaG91bGRfc3RheV9zbWFsbCk7CiAKIFJlbmRlclRhYmxlQ2VsbDo6
UmVuZGVyVGFibGVDZWxsKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgOiBSZW5kZXJCbG9ja0Zsb3coZWxlbWVudCwgV1RGTW92ZShzdHlsZSkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAppbmRleCBmODljYzg3Y2E4MGE2MzFhYTUyM2Ri
MDI5ZWUyNjYxM2YyNjQ0MTI1Li4yNzU2ZjZiNDU3MDgzMzZmYWU2NDNhMDYxNzBmYWI1OGViMWIw
ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEzMzYs
NCArMTMzNiwxNCBAQCBTdHJpbmcgUmVuZGVyVGhlbWU6OmZpbGVMaXN0TmFtZUZvcldpZHRoKGNv
bnN0IEZpbGVMaXN0KiBmaWxlTGlzdCwgY29uc3QgRm9udENhcwogICAgIHJldHVybiBTdHJpbmdU
cnVuY2F0b3I6OmNlbnRlclRydW5jYXRlKHN0cmluZywgd2lkdGgsIGZvbnQpOwogfQogCisjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKK0NvbG9yIFJlbmRlclRoZW1lOjpwbGF0Zm9ybVRhcEhpZ2hs
aWdodENvbG9yKCkgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNvbG9yIGlzIGV4cGVjdGVkIHRvIGJl
IGRyYXduIG9uIGEgc2VtaS10cmFuc3BhcmVudCBvdmVybGF5LAorICAgIC8vIG1ha2luZyBpdCBt
b3JlIHRyYW5zcGFyZW50IHRoYW4gaXRzIGFscGhhIHZhbHVlIGluZGljYXRlcy4KKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQ29sb3I+IGRlZmF1bHRUYXBIaWdobGlnaHRDb2xvciA9
IENvbG9yKDAsIDAsIDAsIDEwMik7CisgICAgcmV0dXJuIGRlZmF1bHRUYXBIaWdobGlnaHRDb2xv
cjsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZS5oCmluZGV4IDE2ZjAwMjcwYzljNzdlNjg5NTM2MWE5YTQ5NWUwNjQy
MjFjMGJmNzAuLjM2YTRjODlhNmNkMWIzMDcyNTY4ODU0MjAyYjVkZWQ0Mjg0MWRiZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oCkBAIC0xNzMsNyArMTczLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBmbG9hdCBwbGF0Zm9ybUZvY3VzUmluZ09mZnNldChmbG9hdCBvdXRs
aW5lV2lkdGgpIHsgcmV0dXJuIHN0ZDo6bWF4PGZsb2F0PihvdXRsaW5lV2lkdGggLSBwbGF0Zm9y
bUZvY3VzUmluZ1dpZHRoKCksIDApOyB9CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICBz
dGF0aWMgQ29sb3IgdGFwSGlnaGxpZ2h0Q29sb3IoKTsKLSAgICB2aXJ0dWFsIENvbG9yIHBsYXRm
b3JtVGFwSGlnaGxpZ2h0Q29sb3IoKSBjb25zdCB7IHJldHVybiBSZW5kZXJUaGVtZTo6ZGVmYXVs
dFRhcEhpZ2hsaWdodENvbG9yOyB9CisgICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hs
aWdodENvbG9yKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1Db2xv
cnNEaWRDaGFuZ2UoKTsKIApAQCAtNDA5LDEyICs0MDksNiBAQCBwcml2YXRlOgogICAgIG11dGFi
bGUgQ29sb3IgbV9hY3RpdmVMaXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogICAgIG11
dGFibGUgQ29sb3IgbV9pbmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3I7CiAK
LSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIC8vIFRoaXMgY29sb3IgaXMgZXhwZWN0ZWQg
dG8gYmUgZHJhd24gb24gYSBzZW1pLXRyYW5zcGFyZW50IG92ZXJsYXksCi0gICAgLy8gbWFraW5n
IGl0IG1vcmUgdHJhbnNwYXJlbnQgdGhhbiBpdHMgYWxwaGEgdmFsdWUgaW5kaWNhdGVzLgotICAg
IHN0YXRpYyBjb25zdCBSR0JBMzIgZGVmYXVsdFRhcEhpZ2hsaWdodENvbG9yID0gMHg2NjAwMDAw
MDsKLSNlbmRpZgotCiAjaWYgVVNFKE5FV19USEVNRSkKICAgICBUaGVtZSogbV90aGVtZTsgLy8g
VGhlIHBsYXRmb3JtLXNwZWNpZmljIHRoZW1lLgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCmluZGV4IGNmMzQwZDBmNjgyZTc0YWU0OTJjY2Vm
Y2ZhY2NhMTE2NzI3N2E0YmQuLjZiYmRiZDIzZTQ4YmI3MWM0ZjJhMzNjOGRjOTNhMjU2NDNhNjJh
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Cb3JkZXJWYWx1ZS5oCkBA
IC0zNCwxMCArMzQsNyBAQCBjbGFzcyBCb3JkZXJWYWx1ZSB7CiBmcmllbmQgY2xhc3MgUmVuZGVy
U3R5bGU7CiBwdWJsaWM6CiAgICAgQm9yZGVyVmFsdWUoKQotICAgICAgICA6IG1fd2lkdGgoMykK
LSAgICAgICAgLCBtX2NvbG9yKDApCi0gICAgICAgICwgbV9jb2xvcklzVmFsaWQoZmFsc2UpCi0g
ICAgICAgICwgbV9zdHlsZShCTk9ORSkKKyAgICAgICAgOiBtX3N0eWxlKEJOT05FKQogICAgICAg
ICAsIG1faXNBdXRvKEFVVE9fT0ZGKQogICAgIHsKICAgICB9CkBAIC00OSw3ICs0Niw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0CiAgICAgewotICAgICAgICBy
ZXR1cm4gbV9jb2xvcklzVmFsaWQgJiYgIWFscGhhQ2hhbm5lbChtX2NvbG9yKTsKKyAgICAgICAg
cmV0dXJuIG1fY29sb3IuaXNWYWxpZCgpICYmICFtX2NvbG9yLmFscGhhKCk7CiAgICAgfQogCiAg
ICAgYm9vbCBpc1Zpc2libGUoYm9vbCBjaGVja1N0eWxlID0gdHJ1ZSkgY29uc3QKQEAgLTU5LDcg
KzU2LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEJvcmRlclZhbHVl
JiBvKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYm
IG1fc3R5bGUgPT0gby5tX3N0eWxlICYmIG1fY29sb3IgPT0gby5tX2NvbG9yICYmIG1fY29sb3JJ
c1ZhbGlkID09IG8ubV9jb2xvcklzVmFsaWQ7CisgICAgICAgIHJldHVybiBtX3dpZHRoID09IG8u
bV93aWR0aCAmJiBtX3N0eWxlID09IG8ubV9zdHlsZSAmJiBtX2NvbG9yID09IG8ubV9jb2xvcjsK
ICAgICB9CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQm9yZGVyVmFsdWUmIG8pIGNvbnN0
CkBAIC02OSwxOSArNjYsMTcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb2xvcihjb25zdCBD
b2xvciYgY29sb3IpCiAgICAgewotICAgICAgICBtX2NvbG9yID0gY29sb3IucmdiKCk7Ci0gICAg
ICAgIG1fY29sb3JJc1ZhbGlkID0gY29sb3IuaXNWYWxpZCgpOworICAgICAgICBtX2NvbG9yID0g
Y29sb3I7CiAgICAgfQogCi0gICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvciht
X2NvbG9yLCBtX2NvbG9ySXNWYWxpZCk7IH0KKyAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fY29sb3I7IH0KIAogICAgIGZsb2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0
aDsgfQogICAgIEVCb3JkZXJTdHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVCb3JkZXJTdHlsZT4obV9zdHlsZSk7IH0KIAogcHJvdGVjdGVkOgotICAgIGZsb2F0IG1fd2lk
dGg7Ci0gICAgUkdCQTMyIG1fY29sb3I7Ci0gICAgdW5zaWduZWQgbV9jb2xvcklzVmFsaWQgOiAx
OworICAgIGZsb2F0IG1fd2lkdGggeyAzIH07CisgICAgQ29sb3IgbV9jb2xvcjsKIAogICAgIHVu
c2lnbmVkIG1fc3R5bGUgOiA0OyAvLyBFQm9yZGVyU3R5bGUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaAppbmRleCA2ZTli
MzI4N2VmMGM0MjhlZTE5YjFkMjRiOTRlZmI0NjBiNjEwYTM5Li4xMWMzZjg0MmYxMjA5ODBmYWJk
YzBlNDE5MDhhNDg4YzA0OGYyOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvQ29sbGFwc2VkQm9yZGVyVmFsdWUuaApAQCAtMzMsOCArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDb2xsYXBzZWRCb3JkZXJWYWx1ZSB7CiBwdWJsaWM6CiAg
ICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUoKQotICAgICAgICA6IG1fY29sb3JJc1ZhbGlkKGZhbHNl
KQotICAgICAgICAsIG1fc3R5bGUoQk5PTkUpCisgICAgICAgIDogbV9zdHlsZShCTk9ORSkKICAg
ICAgICAgLCBtX3ByZWNlZGVuY2UoQk9GRikKICAgICAgICAgLCBtX3RyYW5zcGFyZW50KGZhbHNl
KQogICAgIHsKQEAgLTQyLDggKzQxLDcgQEAgcHVibGljOgogCiAgICAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUoY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBFQm9y
ZGVyUHJlY2VkZW5jZSBwcmVjZWRlbmNlKQogICAgICAgICA6IG1fd2lkdGgoTGF5b3V0VW5pdChi
b3JkZXIubm9uWmVybygpID8gYm9yZGVyLndpZHRoKCkgOiAwKSkKLSAgICAgICAgLCBtX2NvbG9y
KGNvbG9yLnJnYigpKQotICAgICAgICAsIG1fY29sb3JJc1ZhbGlkKGNvbG9yLmlzVmFsaWQoKSkK
KyAgICAgICAgLCBtX2NvbG9yKGNvbG9yKQogICAgICAgICAsIG1fc3R5bGUoYm9yZGVyLnN0eWxl
KCkpCiAgICAgICAgICwgbV9wcmVjZWRlbmNlKHByZWNlZGVuY2UpCiAgICAgICAgICwgbV90cmFu
c3BhcmVudChib3JkZXIuaXNUcmFuc3BhcmVudCgpKQpAQCAtNTMsNyArNTEsNyBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0VW5pdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUgPiBCSElEREVO
ID8gbV93aWR0aCA6IExheW91dFVuaXQ6OmZyb21QaXhlbCgwKTsgfQogICAgIEVCb3JkZXJTdHls
ZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJTdHlsZT4obV9zdHls
ZSk7IH0KICAgICBib29sIGV4aXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlY2VkZW5jZSAhPSBC
T0ZGOyB9Ci0gICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBDb2xvcihtX2NvbG9yLCBt
X2NvbG9ySXNWYWxpZCk7IH0KKyAgICBDb2xvciBjb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fY29s
b3I7IH0KICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zcGFy
ZW50OyB9CiAgICAgRUJvcmRlclByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVCb3JkZXJQcmVjZWRlbmNlPihtX3ByZWNlZGVuY2UpOyB9CiAKQEAgLTY2
LDggKzY0LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIExheW91dFVuaXQgbV93aWR0aDsK
LSAgICBSR0JBMzIgbV9jb2xvciB7IDAgfTsKLSAgICB1bnNpZ25lZCBtX2NvbG9ySXNWYWxpZCA6
IDE7CisgICAgQ29sb3IgbV9jb2xvcjsKICAgICB1bnNpZ25lZCBtX3N0eWxlIDogNDsgLy8gRUJv
cmRlclN0eWxlCiAgICAgdW5zaWduZWQgbV9wcmVjZWRlbmNlIDogMzsgLy8gRUJvcmRlclByZWNl
ZGVuY2UKICAgICB1bnNpZ25lZCBtX3RyYW5zcGFyZW50IDogMTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaAppbmRleCAwYWZlNWE4MTJmMjk5MTg1YTc1
YzM1YjRiODM1NDI4Y2E4NTc0Yzk1Li5kNThiMGExMmZiZmNhNjVlYzU5NjJjMGRhMjQyNmQzZWYy
OTM3NDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGlu
ZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1
ZS5oCkBAIC0zNCw3ICszNCw3IEBAIGZyaWVuZCBjbGFzcyBSZW5kZXJTdHlsZTsKIHB1YmxpYzoK
ICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgT3V0bGluZVZhbHVlJiBvKSBjb25zdAogICAgIHsK
LSAgICAgICAgcmV0dXJuIG1fd2lkdGggPT0gby5tX3dpZHRoICYmIG1fc3R5bGUgPT0gby5tX3N0
eWxlICYmIG1fY29sb3IgPT0gby5tX2NvbG9yICYmIG1fY29sb3JJc1ZhbGlkID09IG8ubV9jb2xv
cklzVmFsaWQgJiYgbV9vZmZzZXQgPT0gby5tX29mZnNldCAmJiBtX2lzQXV0byA9PSBvLm1faXNB
dXRvOworICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9zdHlsZSA9PSBv
Lm1fc3R5bGUgJiYgbV9jb2xvciA9PSBvLm1fY29sb3IgJiYgbV9vZmZzZXQgPT0gby5tX29mZnNl
dCAmJiBtX2lzQXV0byA9PSBvLm1faXNBdXRvOwogICAgIH0KICAgICAKICAgICBib29sIG9wZXJh
dG9yIT0oY29uc3QgT3V0bGluZVZhbHVlJiBvKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggMzU0MDlhMWZjYzdhYWEwMGZlZWNm
OGNmMDg2ZjEzOTdiZWFjYWM0YS4uZDg1YjM4MzdmYmRmZDFhNmNmZjVlOTRkZmFiMDg2NzQxMmE2
OTc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwCkBAIC02NCw3ICs2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVT
aXplQXNCb3JkZXJWYWx1ZSB7CiAgICAgZmxvYXQgbV93aWR0aDsKLSAgICBSR0JBMzIgbV9jb2xv
cjsKKyAgICBDb2xvciBtX2NvbG9yOwogICAgIGludCBtX3Jlc3RCaXRzOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0KaW5kZXggYjlhODRl
NjY0MjBiZDZjZjUxYzI4NGYyMjk3NzEyYTE3MGU4NjBhNy4uYTc2MGM3NjgyZmU1ZDg4M2JjOTE2
YWRjZTQzNWI2OWYzMTNkY2JkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvTWlzYy9X
ZWJLaXROU1N0cmluZ0V4dHJhcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dlYktp
dE5TU3RyaW5nRXh0cmFzLm1tCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIEJPT0wgY2FuVXNl
RmFzdFJlbmRlcmVyKGNvbnN0IFVuaUNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgbGVuZ3RoKQogICAg
ICAgICBDR0Zsb2F0IGJsdWU7CiAgICAgICAgIENHRmxvYXQgYWxwaGE7CiAgICAgICAgIFtbdGV4
dENvbG9yIGNvbG9yVXNpbmdDb2xvclNwYWNlTmFtZTpOU0RldmljZVJHQkNvbG9yU3BhY2VdIGdl
dFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOiZhbHBoYV07Ci0gICAgICAg
IGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IobWFrZVJHQkEocmVkICogMjU1LCBncmVlbiAq
IDI1NSwgYmx1ZSAqIDI1NSwgYWxwaGEgKiAyNTUpKTsKKyAgICAgICAgZ3JhcGhpY3NDb250ZXh0
LnNldEZpbGxDb2xvcihDb2xvcihzdGF0aWNfY2FzdDxmbG9hdD4ocmVkICogMjU1KSwgc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGdyZWVuICogMjU1LjBmKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KGJsdWUgKiAy
NTUuMGYpLCBzdGF0aWNfY2FzdDxmbG9hdD4oYWxwaGEgKiAyNTUuMGYpKSk7CiAKICAgICAgICAg
d2ViQ29yZUZvbnQuZHJhd1RleHQoZ3JhcGhpY3NDb250ZXh0LCBydW4sIEZsb2F0UG9pbnQocG9p
bnQueCwgKGZsaXBwZWQgPyBwb2ludC55IDogKC0xICogcG9pbnQueSkpKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288751</attachid>
            <date>2016-09-13 17:07:39 -0700</date>
            <delta_ts>2016-09-13 17:07:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161856-20160914100501.patch</filename>
            <type>text/plain</type>
            <size>27727</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA1ODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjE4ZjM4MzY1ZGM4NWFk
ZGM2OGU5MzI0M2Y1ZTdkMGM5MTYyMDE5NC4uOTY1YjZmNjhmNjQ1NWFlODE5YTBlNjVkMDg3ZTc2
OWNmNDcxMTVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE2LTA5LTEyICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB3aXRo
IENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgyNTQz
MjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIEluIHBy
ZXBhcmF0aW9uIGZvciB0aGUgQ29sb3IgY2xhc3MgdG8gYmVjb21lIG1vcmUgdGhhbgorICAgICAg
ICBqdXN0IGEgNC1ieXRlIFJHQkEgdmFsdWUsIEkgd2VudCB0aHJvdWdoIGEgZmV3IHBsYWNlcwor
ICAgICAgICB0aGF0IHdlcmUgdXNpbmcgdGhlIFJHQkEzMiB0eXBlIGRpcmVjdGx5LCBhbmQgcmVw
bGFjZWQKKyAgICAgICAgdGhlbSB3aXRoIENvbG9yLiBUaGlzIHdpbGwgbWFrZSBzb21lIG9iamVj
dHMgYSBsaXR0bGUKKyAgICAgICAgYmlnZ2VyIGUuZy4gQm9yZGVyVmFsdWUgYW5kIGl0cyBmcmll
bmRzLgorCisgICAgICAgIEkgbW9zdGx5IGxvb2tlZCBhdCB0aGUgcGxhY2VzIHRoYXQgd2VyZSB1
c2luZyBSR0JBMzIgYXMKKyAgICAgICAgYSBtZW1iZXIgdmFyaWFibGUuIFRoZXJlIGlzIHN0aWxs
IGEgbG90IG9mIFJHQkEzMiB1c2UKKyAgICAgICAgYXJvdW5kIHRoZSBwcm9qZWN0LCBpbiBwYXJ0
aWN1bGFyIHRoZSBDU1MgcGFyc2VyLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBiZWhh
dmlvdXIgY2hhbmdlLgorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmNwcDogU2hhZG93cyBub3cgdXNlIENvbG9yLgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzZXRTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEOjpzaG91bGREcmF3U2hhZG93cyk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpZERyYXcpOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmNwcDogQ2FudmFzIHN0eWxlIHVzZXMgQ29sb3IgZm9yIGZpbGxzIGFuZCBz
dHJva2VzLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjppc0VxdWl2YWxlbnRDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50UkdCQSk6CisgICAgICAgIChXZWJD
b3JlOjpDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNTdHlsZTo6YXBwbHlGaWxsQ29sb3IpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZh
c1N0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNTdHlsZTo6Q01ZS0FWYWx1ZXM6OkNN
WUtBVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1N0eWxlOjpjb2xvcik6CisKKyAg
ICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaDogRm9yZWdyb3VuZCwgYmFj
a2dyb3VuZCBhbmQKKyAgICAgICAgaGlnaGxpZ2h0IGNvbG9ycy4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpHZW5lcmljQ3VlRGF0YTo6c2V0Rm9yZWdyb3VuZENvbG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkdlbmVyaWNDdWVEYXRhOjpzZXRCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6R2VuZXJpY0N1ZURhdGE6OnNldEhpZ2hsaWdodENvbG9yKToKKworICAgICAgICAqIHBhZ2Uv
UGFnZU92ZXJsYXkuY3BwOiBCYWNrZ3JvdW5kIGNvbG9yLgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZU92ZXJsYXk6OnNldEJhY2tncm91bmRDb2xvcik6CisgICAgICAgICogcGFnZS9QYWdlT3Zlcmxh
eS5oOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmg6IFJhbmRv
bSBmdW5jdGlvbiB0aGF0IHJldHVybmVkIFJHQkEzMi4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9tYWMvQ29sb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpvbGRBcXVhRm9jdXNSaW5n
Q29sb3IpOgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6IFVwZGF0
ZSB0aGUgc2l6ZSBvZiBDb2xsYXBzZWRCb3JkZXJWYWx1ZS4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5oOiBVc2UgYSBOZXZlckRlc3Ryb3llZCBDb2xvciByYXRoZXIgdGhhbiBh
IHN0YXRpYyBSR0JBMzIuCisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUu
aDogVXNlIGEgQ29sb3IuCisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJWYWx1ZTo6Qm9yZGVyVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6OmlzVHJhbnNwYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Qm9yZGVyVmFsdWU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6Qm9yZGVyVmFsdWU6OnNldENvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkJvcmRlclZhbHVl
Ojpjb2xvcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRlclZhbHVl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpDb2xsYXBzZWRCb3JkZXJWYWx1ZTo6Q29sbGFwc2VkQm9y
ZGVyVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29sbGFwc2VkQm9yZGVyVmFsdWU6OmNvbG9y
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvT3V0bGluZVZhbHVlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpPdXRsaW5lVmFsdWU6Om9wZXJhdG9yPT0pOgorCisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcDogVXBkYXRlIHRvIG1hdGNoIG5ldyBCb3JkZXJWYWx1ZS4K
KwogMjAxNi0wOS0xMyAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29t
PgogCiAgICAgICAgIEdldCByaWQgb2YgdGhlIG1fcHJlbXVsdGlwbHlBbHBoYSBmbGFnIG9mIHRo
ZSBJbWFnZUZyYW1lIGNsYXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggN2Q0NTNjNzUyMTFkM2Y5MWVj
YzNhOGMyMWM1NWFhZGRmOWE3YzlmNi4uMTAwNjcxMjdlZDZlNzc4ZTVhYzcwZjFiYjNjYWIzMDNm
MTg5ZDc2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTA5LTEyICBE
ZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIFJHQkEzMiB3
aXRoIENvbG9yIGluIG1lbWJlciB2YXJpYWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTg1NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgy
NTQzMjQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIElu
IHByZXBhcmF0aW9uIGZvciB0aGUgQ29sb3IgY2xhc3MgdG8gYmVjb21lIG1vcmUgdGhhbgorICAg
ICAgICBqdXN0IGEgNC1ieXRlIFJHQkEgdmFsdWUsIEkgd2VudCB0aHJvdWdoIGEgZmV3IHBsYWNl
cworICAgICAgICB0aGF0IHdlcmUgdXNpbmcgdGhlIFJHQkEzMiB0eXBlIGRpcmVjdGx5LCBhbmQg
cmVwbGFjZWQKKyAgICAgICAgdGhlbSB3aXRoIENvbG9yLiBUaGlzIHdpbGwgbWFrZSBzb21lIG9i
amVjdHMgYSBsaXR0bGUKKyAgICAgICAgYmlnZ2VyIGUuZy4gQm9yZGVyVmFsdWUgYW5kIGl0cyBm
cmllbmRzLgorCisgICAgICAgIEkgbW9zdGx5IGxvb2tlZCBhdCB0aGUgcGxhY2VzIHRoYXQgd2Vy
ZSB1c2luZyBSR0JBMzIgYXMKKyAgICAgICAgYSBtZW1iZXIgdmFyaWFibGUuIFRoZXJlIGlzIHN0
aWxsIGEgbG90IG9mIFJHQkEzMiB1c2UKKyAgICAgICAgYXJvdW5kIHRoZSBwcm9qZWN0LCBpbiBw
YXJ0aWN1bGFyIHRoZSBDU1MgcGFyc2VyLgorCisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBubyBi
ZWhhdmlvdXIgY2hhbmdlLgorCisgICAgICAgICogTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5t
bToKKyAgICAgICAgKC1bTlNTdHJpbmcgX3dlYl9kcmF3QXRQb2ludDpmb250OnRleHRDb2xvcjph
bGxvd2luZ0ZvbnRTbW9vdGhpbmc6XSk6IEV4cGxpY2l0bHkKKyAgICAgICAgY2FsbCBhIENvbG9y
IGNvbnN0cnVjdG9yLCByYXRoZXIgdGhhbiBwYXNzaW5nIGFuIFJHQkEzMi4KKwogMjAxNi0wOS0x
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3Agc3VwcG9y
dCBmb3IgPGlzaW5kZXg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA3Zjk1MWM2ZWFmMDllOGZlNmMwYTNk
ZWViYTdmMGIxZWU4ZjllZTk2Li5lYjJkYjU1ZjhiYmYzZjA4ZWFiOGJhYzc1NzQ1ODNlYjAxMmM0
YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTEyNTgsMTcgKzEyNTgsMTcgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBm
bG9hdCBibHVyLAogCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZs
b2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IGdyYXlMZXZlbCwgZmxv
YXQgYWxwaGEpCiB7Ci0gICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1
ciwgbWFrZVJHQkEzMkZyb21GbG9hdHMoZ3JheUxldmVsLCBncmF5TGV2ZWwsIGdyYXlMZXZlbCwg
YWxwaGEpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBoZWlnaHQpLCBibHVyLCBD
b2xvcihncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBoYSkpOwogfQogCiB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2V0U2hhZG93KGZsb2F0IHdpZHRoLCBmbG9hdCBo
ZWlnaHQsIGZsb2F0IGJsdXIsIGZsb2F0IHIsIGZsb2F0IGcsIGZsb2F0IGIsIGZsb2F0IGEpCiB7
Ci0gICAgc2V0U2hhZG93KEZsb2F0U2l6ZSh3aWR0aCwgaGVpZ2h0KSwgYmx1ciwgbWFrZVJHQkEz
MkZyb21GbG9hdHMociwgZywgYiwgYSkpOworICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgs
IGhlaWdodCksIGJsdXIsIENvbG9yKHIsIGcsIGIsIGEpKTsKIH0KIAogdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9h
dCBibHVyLCBmbG9hdCBjLCBmbG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhKQogewot
ICAgIHNldFNoYWRvdyhGbG9hdFNpemUod2lkdGgsIGhlaWdodCksIGJsdXIsIG1ha2VSR0JBRnJv
bUNNWUtBKGMsIG0sIHksIGssIGEpKTsKKyAgICBzZXRTaGFkb3coRmxvYXRTaXplKHdpZHRoLCBo
ZWlnaHQpLCBibHVyLCBDb2xvcihjLCBtLCB5LCBrLCBhKSk7CiB9CiAKIHZvaWQgQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjpjbGVhclNoYWRvdygpCkBAIC0xMjc2LDcgKzEyNzYsNyBAQCB2b2lk
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2xlYXJTaGFkb3coKQogICAgIHNldFNoYWRvdyhG
bG9hdFNpemUoKSwgMCwgQ29sb3I6OnRyYW5zcGFyZW50KTsKIH0KIAotdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQg
Ymx1ciwgUkdCQTMyIGNvbG9yKQordm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgQ29sb3IgY29sb3IpCiB7
CiAgICAgaWYgKHN0YXRlKCkuc2hhZG93T2Zmc2V0ID09IG9mZnNldCAmJiBzdGF0ZSgpLnNoYWRv
d0JsdXIgPT0gYmx1ciAmJiBzdGF0ZSgpLnNoYWRvd0NvbG9yID09IGNvbG9yKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMzA2LDcgKzEzMDYsNyBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RDo6YXBwbHlTaGFkb3coKQogCiBib29sIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6c2hvdWxk
RHJhd1NoYWRvd3MoKSBjb25zdAogewotICAgIHJldHVybiBhbHBoYUNoYW5uZWwoc3RhdGUoKS5z
aGFkb3dDb2xvcikgJiYgKHN0YXRlKCkuc2hhZG93Qmx1ciB8fCAhc3RhdGUoKS5zaGFkb3dPZmZz
ZXQuaXNaZXJvKCkpOworICAgIHJldHVybiBzdGF0ZSgpLnNoYWRvd0NvbG9yLmFscGhhKCkgJiYg
KHN0YXRlKCkuc2hhZG93Qmx1ciB8fCAhc3RhdGUoKS5zaGFkb3dPZmZzZXQuaXNaZXJvKCkpOwog
fQogCiBlbnVtIEltYWdlU2l6ZVR5cGUgewpAQCAtMTg4Miw3ICsxODgyLDcgQEAgdm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRpZERyYXcoY29uc3QgRmxvYXRSZWN0JiByLCB1bnNpZ25l
ZCBvcHRpb25zKQogICAgICAgICBkaXJ0eVJlY3QgPSBjdG0ubWFwUmVjdChyKTsKICAgICB9CiAK
LSAgICBpZiAob3B0aW9ucyAmIENhbnZhc0RpZERyYXdBcHBseVNoYWRvdyAmJiBhbHBoYUNoYW5u
ZWwoc3RhdGUoKS5zaGFkb3dDb2xvcikpIHsKKyAgICBpZiAob3B0aW9ucyAmIENhbnZhc0RpZERy
YXdBcHBseVNoYWRvdyAmJiBzdGF0ZSgpLnNoYWRvd0NvbG9yLmFscGhhKCkpIHsKICAgICAgICAg
Ly8gVGhlIHNoYWRvdyBnZXRzIGFwcGxpZWQgYWZ0ZXIgdHJhbnNmb3JtYXRpb24KICAgICAgICAg
RmxvYXRSZWN0IHNoYWRvd1JlY3QoZGlydHlSZWN0KTsKICAgICAgICAgc2hhZG93UmVjdC5tb3Zl
KHN0YXRlKCkuc2hhZG93T2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgKaW5kZXggNzkwMjZmNjNiNzA5NGU4MTQ5
ZGJlYTIzMjczNTJmZTQwZDZlM2QxYy4uY2NiMjFlNTFkZjViMmQ3NGNhYmRhZGY5ODRkY2Y4MjY0
ODI0NzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJELmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmgKQEAgLTI4NCw3ICsyODQsNyBAQCBwcml2YXRlOgogICAgICAg
ICBmbG9hdCBtaXRlckxpbWl0OwogICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAg
ICAgICBmbG9hdCBzaGFkb3dCbHVyOwotICAgICAgICBSR0JBMzIgc2hhZG93Q29sb3I7CisgICAg
ICAgIENvbG9yIHNoYWRvd0NvbG9yOwogICAgICAgICBmbG9hdCBnbG9iYWxBbHBoYTsKICAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgZ2xvYmFsQ29tcG9zaXRlOwogICAgICAgICBCbGVuZE1vZGUg
Z2xvYmFsQmxlbmQ7CkBAIC0zMTYsNyArMzE2LDcgQEAgcHJpdmF0ZToKICAgICBjb25zdCBTdGF0
ZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlU3RhY2subGFzdCgpOyB9CiAKICAgICB2
b2lkIGFwcGx5TGluZURhc2goKSBjb25zdDsKLSAgICB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgUkdCQTMyIGNvbG9yKTsKKyAgICB2b2lkIHNldFNo
YWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNldCwgZmxvYXQgYmx1ciwgQ29sb3IpOwogICAgIHZv
aWQgYXBwbHlTaGFkb3coKTsKICAgICBib29sIHNob3VsZERyYXdTaGFkb3dzKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmNwcAppbmRleCAxYzhiMjAz
NTc4NWI1M2IwN2E1MmI0OGJhMDhiMzllOWFiYWRlN2VmLi5iOWY3YWVjODBmMzBmYzU1NTIzMmIw
ZThjMGM4YzIwNDMxZDAyYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFz
U3R5bGUuY3BwCkBAIC04MywyNiArODMsMjYgQEAgYm9vbCBwYXJzZUNvbG9yT3JDdXJyZW50Q29s
b3IoUkdCQTMyJiBwYXJzZWRDb2xvciwgY29uc3QgU3RyaW5nJiBjb2xvclN0cmluZywgSFQKICAg
ICB9CiB9CiAKLUNhbnZhc1N0eWxlOjpDYW52YXNTdHlsZShSR0JBMzIgcmdiYSkKLSAgICA6IG1f
cmdiYShyZ2JhKQorQ2FudmFzU3R5bGU6OkNhbnZhc1N0eWxlKENvbG9yIGNvbG9yKQorICAgIDog
bV9jb2xvcihjb2xvcikKICAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6
Q2FudmFzU3R5bGUoZmxvYXQgZ3JheUxldmVsLCBmbG9hdCBhbHBoYSkKLSAgICA6IG1fcmdiYSht
YWtlUkdCQTMyRnJvbUZsb2F0cyhncmF5TGV2ZWwsIGdyYXlMZXZlbCwgZ3JheUxldmVsLCBhbHBo
YSkpCisgICAgOiBtX2NvbG9yKENvbG9yKGdyYXlMZXZlbCwgZ3JheUxldmVsLCBncmF5TGV2ZWws
IGFscGhhKSkKICAgICAsIG1fdHlwZShSR0JBKQogewogfQogCiBDYW52YXNTdHlsZTo6Q2FudmFz
U3R5bGUoZmxvYXQgciwgZmxvYXQgZywgZmxvYXQgYiwgZmxvYXQgYSkKLSAgICA6IG1fcmdiYSht
YWtlUkdCQTMyRnJvbUZsb2F0cyhyLCBnLCBiLCBhKSkKKyAgICA6IG1fY29sb3IoQ29sb3Iociwg
ZywgYiwgYSkpCiAgICAgLCBtX3R5cGUoUkdCQSkKIHsKIH0KIAogQ2FudmFzU3R5bGU6OkNhbnZh
c1N0eWxlKGZsb2F0IGMsIGZsb2F0IG0sIGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpCi0gICAg
OiBtX2NteWthKG5ldyBDTVlLQVZhbHVlcyhtYWtlUkdCQUZyb21DTVlLQShjLCBtLCB5LCBrLCBh
KSwgYywgbSwgeSwgaywgYSkpCisgICAgOiBtX2NteWthKG5ldyBDTVlLQVZhbHVlcyhDb2xvcihj
LCBtLCB5LCBrLCBhKSwgYywgbSwgeSwgaywgYSkpCiAgICAgLCBtX3R5cGUoQ01ZS0EpCiB7CiB9
CkBAIC0xNzUsNyArMTc1LDcgQEAgYm9vbCBDYW52YXNTdHlsZTo6aXNFcXVpdmFsZW50Q29sb3Io
Y29uc3QgQ2FudmFzU3R5bGUmIG90aGVyKSBjb25zdAogCiAgICAgc3dpdGNoIChtX3R5cGUpIHsK
ICAgICBjYXNlIFJHQkE6Ci0gICAgICAgIHJldHVybiBtX3JnYmEgPT0gb3RoZXIubV9yZ2JhOwor
ICAgICAgICByZXR1cm4gbV9jb2xvciA9PSBvdGhlci5tX2NvbG9yOwogICAgIGNhc2UgQ01ZS0E6
CiAgICAgICAgIHJldHVybiBtX2NteWthLT5jID09IG90aGVyLm1fY215a2EtPmMKICAgICAgICAg
ICAgICYmIG1fY215a2EtPm0gPT0gb3RoZXIubV9jbXlrYS0+bQpAQCAtMjAwLDcgKzIwMCw3IEBA
IGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudFJHQkEoZmxvYXQgciwgZmxvYXQgZywgZmxv
YXQgYiwgZmxvYXQgYSkgY29uc3QKICAgICBpZiAobV90eXBlICE9IFJHQkEpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJldHVybiBtX3JnYmEgPT0gbWFrZVJHQkEzMkZyb21GbG9hdHMo
ciwgZywgYiwgYSk7CisgICAgcmV0dXJuIG1fY29sb3IgPT0gQ29sb3IociwgZywgYiwgYSk7CiB9
CiAKIGJvb2wgQ2FudmFzU3R5bGU6OmlzRXF1aXZhbGVudENNWUtBKGZsb2F0IGMsIGZsb2F0IG0s
IGZsb2F0IHksIGZsb2F0IGssIGZsb2F0IGEpIGNvbnN0CkBAIC0yMjMsNyArMjIzLDcgQEAgQ2Fu
dmFzU3R5bGU6OkNhbnZhc1N0eWxlKGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikKICAgICBlbHNl
IGlmIChtX3R5cGUgPT0gSW1hZ2VQYXR0ZXJuKQogICAgICAgICBtX3BhdHRlcm4tPnJlZigpOwog
ICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBDTVlLQSkKLSAgICAgICAgbV9jbXlrYSA9IG5ldyBDTVlL
QVZhbHVlcyhvdGhlci5tX2NteWthLT5yZ2JhLCBvdGhlci5tX2NteWthLT5jLCBvdGhlci5tX2Nt
eWthLT5tLCBvdGhlci5tX2NteWthLT55LCBvdGhlci5tX2NteWthLT5rLCBvdGhlci5tX2NteWth
LT5hKTsKKyAgICAgICAgbV9jbXlrYSA9IG5ldyBDTVlLQVZhbHVlcyhvdGhlci5tX2NteWthLT5j
b2xvciwgb3RoZXIubV9jbXlrYS0+Yywgb3RoZXIubV9jbXlrYS0+bSwgb3RoZXIubV9jbXlrYS0+
eSwgb3RoZXIubV9jbXlrYS0+aywgb3RoZXIubV9jbXlrYS0+YSk7CiB9CiAKIENhbnZhc1N0eWxl
JiBDYW52YXNTdHlsZTo6b3BlcmF0b3I9KGNvbnN0IENhbnZhc1N0eWxlJiBvdGhlcikKQEAgLTI0
MSw3ICsyNDEsNyBAQCB2b2lkIENhbnZhc1N0eWxlOjphcHBseVN0cm9rZUNvbG9yKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIHN3aXRjaCAobV90
eXBlKSB7CiAgICAgY2FzZSBSR0JBOgotICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvciht
X3JnYmEpOworICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihtX2NvbG9yKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDTVlLQTogewogICAgICAgICAvLyBGSVhNRTogRG8gdGhpcyB0
aHJvdWdoIHBsYXRmb3JtLWluZGVwZW5kZW50IEdyYXBoaWNzQ29udGV4dCBBUEkuCkBAIC0yNDks
NyArMjQ5LDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlTdHJva2VDb2xvcihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQpIGNvbnN0CiAjaWYgVVNFKENHKQogICAgICAgICBDR0NvbnRleHRTZXRD
TVlLU3Ryb2tlQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY215a2EtPmMsIG1f
Y215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOwogI2Vsc2UKLSAg
ICAgICAgY29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9jbXlrYS0+cmdiYSk7CisgICAgICAgIGNv
bnRleHQtPnNldFN0cm9rZUNvbG9yKG1fY215a2EtPmNvbG9yKTsKICNlbmRpZgogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBDYW52YXNTdHlsZTo6YXBwbHlG
aWxsQ29sb3IoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0KSBjb25zdAogICAgICAgICByZXR1cm47
CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFJHQkE6Ci0gICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihtX3JnYmEpOworICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9j
b2xvcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ01ZS0E6IHsKICAgICAgICAgLy8gRklY
TUU6IERvIHRoaXMgdGhyb3VnaCBwbGF0Zm9ybS1pbmRlcGVuZGVudCBHcmFwaGljc0NvbnRleHQg
QVBJLgpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ2FudmFzU3R5bGU6OmFwcGx5RmlsbENvbG9y
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCkgY29uc3QKICNpZiBVU0UoQ0cpCiAgICAgICAgIENH
Q29udGV4dFNldENNWUtGaWxsQ29sb3IoY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIG1fY215
a2EtPmMsIG1fY215a2EtPm0sIG1fY215a2EtPnksIG1fY215a2EtPmssIG1fY215a2EtPmEpOwog
I2Vsc2UKLSAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKG1fY215a2EtPnJnYmEpOworICAg
ICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3IobV9jbXlrYS0+Y29sb3IpOwogI2VuZGlmCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1N0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNTdHlsZS5o
CmluZGV4IGFlOWRhYTg0NTJiYWIzNmMzMjZiZDExMzY4OTdmMDg1NzhiZThkOTAuLjM5MDhlODU2
NjMzOTQ3NzY1NGJlMWVlNmY2OTgxN2ZkZGY3ZTYyNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1N0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvQ2FudmFzU3R5bGUuaApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgQ2FudmFzU3R5bGUgewogICAgIHB1YmxpYzoKICAgICAgICAgQ2FudmFzU3R5
bGUoKTsKLSAgICAgICAgZXhwbGljaXQgQ2FudmFzU3R5bGUoUkdCQTMyKTsKKyAgICAgICAgZXhw
bGljaXQgQ2FudmFzU3R5bGUoQ29sb3IpOwogICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBncmF5
TGV2ZWwsIGZsb2F0IGFscGhhKTsKICAgICAgICAgQ2FudmFzU3R5bGUoZmxvYXQgciwgZmxvYXQg
ZywgZmxvYXQgYiwgZmxvYXQgYWxwaGEpOwogICAgICAgICBDYW52YXNTdHlsZShmbG9hdCBjLCBm
bG9hdCBtLCBmbG9hdCB5LCBmbG9hdCBrLCBmbG9hdCBhbHBoYSk7CkBAIC04MCw5ICs4MCwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENNWUtBVmFsdWVzKTsKICAgICAg
ICAgcHVibGljOgotICAgICAgICAgICAgQ01ZS0FWYWx1ZXMoKSA6IHJnYmEoMCksIGMoMCksIG0o
MCksIHkoMCksIGsoMCksIGEoMCkgeyB9Ci0gICAgICAgICAgICBDTVlLQVZhbHVlcyhSR0JBMzIg
cmdiYSwgZmxvYXQgY3lhbiwgZmxvYXQgbWFnZW50YSwgZmxvYXQgeWVsbG93LCBmbG9hdCBibGFj
aywgZmxvYXQgYWxwaGEpIDogcmdiYShyZ2JhKSwgYyhjeWFuKSwgbShtYWdlbnRhKSwgeSh5ZWxs
b3cpLCBrKGJsYWNrKSwgYShhbHBoYSkgeyB9Ci0gICAgICAgICAgICBSR0JBMzIgcmdiYTsKKyAg
ICAgICAgICAgIENNWUtBVmFsdWVzKCkKKyAgICAgICAgICAgICAgICA6IGNvbG9yKCksIGMoMCks
IG0oMCksIHkoMCksIGsoMCksIGEoMCkKKyAgICAgICAgICAgIHsgfQorCisgICAgICAgICAgICBD
TVlLQVZhbHVlcyhDb2xvciBjb2xvciwgZmxvYXQgY3lhbiwgZmxvYXQgbWFnZW50YSwgZmxvYXQg
eWVsbG93LCBmbG9hdCBibGFjaywgZmxvYXQgYWxwaGEpCisgICAgICAgICAgICAgICAgOiBjb2xv
cihjb2xvciksIGMoY3lhbiksIG0obWFnZW50YSksIHkoeWVsbG93KSwgayhibGFjayksIGEoYWxw
aGEpCisgICAgICAgICAgICB7IH0KKyAgICAgICAgICAgIENvbG9yIGNvbG9yOwogICAgICAgICAg
ICAgZmxvYXQgYzsKICAgICAgICAgICAgIGZsb2F0IG07CiAgICAgICAgICAgICBmbG9hdCB5OwpA
QCAtOTksNyArMTA0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICAg
ICAgdW5pb24gewotICAgICAgICAgICAgUkdCQTMyIG1fcmdiYTsKKyAgICAgICAgICAgIENvbG9y
IG1fY29sb3I7CiAgICAgICAgICAgICBmbG9hdCBtX292ZXJyaWRlQWxwaGE7CiAgICAgICAgICAg
ICBDYW52YXNHcmFkaWVudCogbV9ncmFkaWVudDsKICAgICAgICAgICAgIENhbnZhc1BhdHRlcm4q
IG1fcGF0dGVybjsKQEAgLTEzNCw4ICsxMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ewogICAgICAgICBBU1NFUlQobV90eXBlID09IFJHQkEgfHwgbV90eXBlID09IENNWUtBKTsKICAg
ICAgICAgaWYgKG1fdHlwZSA9PSBSR0JBKQotICAgICAgICAgICAgcmV0dXJuIENvbG9yKG1fcmdi
YSkuc2VyaWFsaXplZCgpOwotICAgICAgICByZXR1cm4gQ29sb3IobV9jbXlrYS0+cmdiYSkuc2Vy
aWFsaXplZCgpOworICAgICAgICAgICAgcmV0dXJuIG1fY29sb3Iuc2VyaWFsaXplZCgpOworICAg
ICAgICByZXR1cm4gbV9jbXlrYS0+Y29sb3Iuc2VyaWFsaXplZCgpOwogICAgIH0KIAogICAgIGlu
bGluZSBDYW52YXNTdHlsZTo6Q2FudmFzU3R5bGUoQ2FudmFzU3R5bGUmJiBvdGhlcikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKaW5kZXggM2Yz
NTY3MmRhNGYzNWMyMmI0ZjkyODQxMzQyOTM3ZDhiNDQ3N2MwMi4uNTM2Y2IwYTc0ZDBmYzkzYzI3
OWUwMzU0ZDdmNzBjMjcxMzhhYWQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9UZXh0VHJhY2tDdWVHZW5lcmljLmgKQEAgLTYyLDEzICs2MiwxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRGb250TmFtZShTdHJpbmcgbmFtZSkgeyBtX2ZvbnROYW1lID0gbmFtZTsgfQogCiAg
ICAgQ29sb3IgZm9yZWdyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kQ29s
b3I7IH0KLSAgICB2b2lkIHNldEZvcmVncm91bmRDb2xvcihSR0JBMzIgY29sb3IpIHsgbV9mb3Jl
Z3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQorICAgIHZvaWQgc2V0Rm9yZWdyb3VuZENvbG9y
KENvbG9yIGNvbG9yKSB7IG1fZm9yZWdyb3VuZENvbG9yID0gY29sb3I7IH0KICAgICAKICAgICBD
b2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsg
fQotICAgIHZvaWQgc2V0QmFja2dyb3VuZENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2JhY2tncm91
bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9CisgICAgdm9pZCBzZXRCYWNrZ3JvdW5kQ29sb3IoQ29s
b3IgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsgfQogICAgIAogICAgIENvbG9y
IGhpZ2hsaWdodENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRDb2xvcjsgfQotICAg
IHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoUkdCQTMyIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3Iu
c2V0UkdCKGNvbG9yKTsgfQorICAgIHZvaWQgc2V0SGlnaGxpZ2h0Q29sb3IoQ29sb3IgY29sb3Ip
IHsgbV9oaWdobGlnaHRDb2xvciA9IGNvbG9yOyB9CiAgICAgCiAgICAgdm9pZCBzZXRGb250U2l6
ZShpbnQsIGNvbnN0IEludFNpemUmLCBib29sIGltcG9ydGFudCkgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAKaW5kZXggNjRkMDdlNDhiMmFmZWExOWYyYzIxODc2MjBj
M2E2OTQ3MTU0ZjM5NC4uNGU4Mzc0YTE0NTA1OWE5YTVmZjI3NzQ4ZjQxYmUxMmM1NjhmNmY5NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5jcHAKQEAgLTEzNiw3ICsxMzYsNyBAQCBJbnRT
aXplIFBhZ2VPdmVybGF5Ojp2aWV3VG9PdmVybGF5T2Zmc2V0KCkgY29uc3QKICAgICByZXR1cm4g
SW50U2l6ZSgpOwogfQogCi12b2lkIFBhZ2VPdmVybGF5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoUkdC
QTMyIGJhY2tncm91bmRDb2xvcikKK3ZvaWQgUGFnZU92ZXJsYXk6OnNldEJhY2tncm91bmRDb2xv
cihDb2xvciBiYWNrZ3JvdW5kQ29sb3IpCiB7CiAgICAgaWYgKG1fYmFja2dyb3VuZENvbG9yID09
IGJhY2tncm91bmRDb2xvcikKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlT3Zlcmxh
eS5oCmluZGV4IGY5MGQwYzM2NGEwODZjMzRiZDZlYWIxMjE1N2Q0ZmVjNzg2OGE5OGQuLmY4ZDcz
NmFiNmJiN2I5ZTRlZDI1OTIwNWFkNmY4ZWM3YTNkOTkxYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZU92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VP
dmVybGF5LmgKQEAgLTEwNiw4ICsxMDYsOCBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBJbnRTaXplIHZpZXdUb092ZXJsYXlPZmZzZXQoKSBjb25zdDsKIAotICAgIFJHQkEzMiBiYWNr
Z3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91bmRDb2xvcjsgfQotICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKFJHQkEzMik7CisgICAgQ29sb3IgYmFja2dyb3VuZENvbG9y
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KKyAgICB2b2lkIHNldEJhY2tn
cm91bmRDb2xvcihDb2xvcik7CiAKICAgICB2b2lkIHNldFNob3VsZElnbm9yZU1vdXNlRXZlbnRz
T3V0c2lkZUJvdW5kcyhib29sIGZsYWcpIHsgbV9zaG91bGRJZ25vcmVNb3VzZUV2ZW50c091dHNp
ZGVCb3VuZHMgPSBmbGFnOyB9CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCBwcml2YXRlOgogICAgIE92
ZXJsYXlUeXBlIG1fb3ZlcmxheVR5cGU7CiAgICAgSW50UmVjdCBtX292ZXJyaWRlRnJhbWU7CiAK
LSAgICBSR0JBMzIgbV9iYWNrZ3JvdW5kQ29sb3IgeyBDb2xvcjo6dHJhbnNwYXJlbnQgfTsKKyAg
ICBDb2xvciBtX2JhY2tncm91bmRDb2xvciB7IENvbG9yOjp0cmFuc3BhcmVudCB9OwogICAgIFBh
Z2VPdmVybGF5SUQgbV9wYWdlT3ZlcmxheUlEOwogCiAgICAgYm9vbCBtX3Nob3VsZElnbm9yZU1v
dXNlRXZlbnRzT3V0c2lkZUJvdW5kcyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGll
bnQuaAppbmRleCAwNzYwMmQyN2U2ZTQwMWE1ZDY5YzQ4ZTlkZTNkNjBiNDE3MzJhZjY0Li4zMmE3
NDNiYTViOGQ0ZDg2MThlNDFlMTM4NTQ0MmFkODZhNjA3N2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUNsaWVudC5oCkBAIC04NywxMyArODcsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVs
YXRpdmVGb250U2l6ZShkb3VibGUgcmVsYXRpdmVGb250U2l6ZSkgeyBtX3JlbGF0aXZlRm9udFNp
emUgPSByZWxhdGl2ZUZvbnRTaXplOyB9CiAKICAgICBDb2xvciBmb3JlZ3JvdW5kQ29sb3IoKSBj
b25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRDb2xvcjsgfQotICAgIHZvaWQgc2V0Rm9yZWdyb3Vu
ZENvbG9yKFJHQkEzMiBjb2xvcikgeyBtX2ZvcmVncm91bmRDb2xvci5zZXRSR0IoY29sb3IpOyB9
CisgICAgdm9pZCBzZXRGb3JlZ3JvdW5kQ29sb3IoQ29sb3IgY29sb3IpIHsgbV9mb3JlZ3JvdW5k
Q29sb3IgPSBjb2xvcjsgfQogCiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyBy
ZXR1cm4gbV9iYWNrZ3JvdW5kQ29sb3I7IH0KLSAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihS
R0JBMzIgY29sb3IpIHsgbV9iYWNrZ3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQorICAgIHZv
aWQgc2V0QmFja2dyb3VuZENvbG9yKENvbG9yIGNvbG9yKSB7IG1fYmFja2dyb3VuZENvbG9yID0g
Y29sb3I7IH0KICAgICAKICAgICBDb2xvciBoaWdobGlnaHRDb2xvcigpIGNvbnN0IHsgcmV0dXJu
IG1faGlnaGxpZ2h0Q29sb3I7IH0KLSAgICB2b2lkIHNldEhpZ2hsaWdodENvbG9yKFJHQkEzMiBj
b2xvcikgeyBtX2hpZ2hsaWdodENvbG9yLnNldFJHQihjb2xvcik7IH0KKyAgICB2b2lkIHNldEhp
Z2hsaWdodENvbG9yKENvbG9yIGNvbG9yKSB7IG1faGlnaGxpZ2h0Q29sb3IgPSBjb2xvcjsgfQog
ICAgIAogICAgIGVudW0gU3RhdHVzIHsKICAgICAgICAgVW5pbml0aWFsaXplZCwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKaW5kZXggMzc2Zjc5
ZjgzOTgyZTJhYmNlZTE1M2M3ZjZhOWMwMDE3OWMzN2EzMC4uOTdmNDRjMTcxNjZkZTJkYjIxZmNl
NWEzZjRiYzlhNzJhZWQ5NjAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvbWFjL0NvbG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL0NvbG9yTWFjLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlc1Rlc3RNb2RlRm9jdXNSaW5nQ29sb3Io
Ym9vbCk7CiAgICAgCiAgICAgLy8gRm9jdXMgcmluZyBjb2xvciB1c2VkIGZvciB0ZXN0aW5nIHB1
cnBvc2VzLgotICAgIFJHQkEzMiBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKTsKKyAgICBDb2xvciBv
bGRBcXVhRm9jdXNSaW5nQ29sb3IoKTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KaW5kZXggMzkzYjNjNjQ4MTI1OTI1Y2FlOTlm
MmIzMTNhZWIzN2NmMjBlMDY5Ni4uY2RjYzZmNjdiZjU0NjRhYmJkOGQzZGZmOTAzZjgxMjBhOTAy
NGU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0Nv
bG9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xv
ck1hYy5tbQpAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBi
b29sIHVzZU9sZEFxdWFGb2N1c1JpbmdDb2xvcjsKIAotUkdCQTMyIG9sZEFxdWFGb2N1c1JpbmdD
b2xvcigpCitDb2xvciBvbGRBcXVhRm9jdXNSaW5nQ29sb3IoKQogewogICAgIHJldHVybiAweEZG
N0RBREQ5OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNw
cAppbmRleCA0ZDM4OWJjOTFmMTZkNDE5M2ZjMWJkNjZkYzVlZDU4MmJlMTk4NjhjLi40NWQ4Yzdi
ZWI0MWU2YmI4ZDQwZWYzM2Y3ZGFjNGM0N2QyNGJjYTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdHJ1Y3QgU2Ft
ZVNpemVBc1JlbmRlclRhYmxlQ2VsbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zsb3cgewogfTsKIAog
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKFJlbmRlclRhYmxlQ2VsbCkgPT0gc2l6ZW9mKFNhbWVTaXpl
QXNSZW5kZXJUYWJsZUNlbGwpLCBSZW5kZXJUYWJsZUNlbGxfc2hvdWxkX3N0YXlfc21hbGwpOwot
Q09NUElMRV9BU1NFUlQoc2l6ZW9mKENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAxMiwgQ29sbGFw
c2VkQm9yZGVyVmFsdWVfc2hvdWxkX3N0YXlfc21hbGwpOworQ09NUElMRV9BU1NFUlQoc2l6ZW9m
KENvbGxhcHNlZEJvcmRlclZhbHVlKSA9PSAxNiwgQ29sbGFwc2VkQm9yZGVyVmFsdWVfc2hvdWxk
X3N0YXlfc21hbGwpOwogCiBSZW5kZXJUYWJsZUNlbGw6OlJlbmRlclRhYmxlQ2VsbChFbGVtZW50
JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVt
ZS5jcHAKaW5kZXggZjg5Y2M4N2NhODBhNjMxYWE1MjNkYjAyOWVlMjY2MTNmMjY0NDEyNS4uMjc1
NmY2YjQ1NzA4MzM2ZmFlNjQzYTA2MTcwZmFiNThlYjFiMDgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCkBAIC0xMzM2LDQgKzEzMzYsMTQgQEAgU3RyaW5nIFJl
bmRlclRoZW1lOjpmaWxlTGlzdE5hbWVGb3JXaWR0aChjb25zdCBGaWxlTGlzdCogZmlsZUxpc3Qs
IGNvbnN0IEZvbnRDYXMKICAgICByZXR1cm4gU3RyaW5nVHJ1bmNhdG9yOjpjZW50ZXJUcnVuY2F0
ZShzdHJpbmcsIHdpZHRoLCBmb250KTsKIH0KIAorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCitD
b2xvciBSZW5kZXJUaGVtZTo6cGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0Cit7Cisg
ICAgLy8gVGhpcyBjb2xvciBpcyBleHBlY3RlZCB0byBiZSBkcmF3biBvbiBhIHNlbWktdHJhbnNw
YXJlbnQgb3ZlcmxheSwKKyAgICAvLyBtYWtpbmcgaXQgbW9yZSB0cmFuc3BhcmVudCB0aGFuIGl0
cyBhbHBoYSB2YWx1ZSBpbmRpY2F0ZXMuCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0
IENvbG9yPiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3IgPSBDb2xvcigwLCAwLCAwLCAxMDIpOwor
ICAgIHJldHVybiBkZWZhdWx0VGFwSGlnaGxpZ2h0Q29sb3I7Cit9CisjZW5kaWYKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAppbmRl
eCAxNmYwMDI3MGM5Yzc3ZTY4OTUzNjFhOWE0OTVlMDY0MjIxYzBiZjcwLi4zNmE0Yzg5YTZjZDFi
MzA3MjU2ODg1NDIwMmI1ZGVkNDI4NDFkYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWUuaApAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgZmxvYXQg
cGxhdGZvcm1Gb2N1c1JpbmdPZmZzZXQoZmxvYXQgb3V0bGluZVdpZHRoKSB7IHJldHVybiBzdGQ6
Om1heDxmbG9hdD4ob3V0bGluZVdpZHRoIC0gcGxhdGZvcm1Gb2N1c1JpbmdXaWR0aCgpLCAwKTsg
fQogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCiAgICAgc3RhdGljIENvbG9yIHRhcEhpZ2hsaWdo
dENvbG9yKCk7Ci0gICAgdmlydHVhbCBDb2xvciBwbGF0Zm9ybVRhcEhpZ2hsaWdodENvbG9yKCkg
Y29uc3QgeyByZXR1cm4gUmVuZGVyVGhlbWU6OmRlZmF1bHRUYXBIaWdobGlnaHRDb2xvcjsgfQor
ICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1UYXBIaWdobGlnaHRDb2xvcigpIGNvbnN0OwogI2Vu
ZGlmCiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtQ29sb3JzRGlkQ2hhbmdlKCk7CiAKQEAgLTQw
OSwxMiArNDA5LDYgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIENvbG9yIG1fYWN0aXZlTGlzdEJv
eFNlbGVjdGlvbkZvcmVncm91bmRDb2xvcjsKICAgICBtdXRhYmxlIENvbG9yIG1faW5hY3RpdmVM
aXN0Qm94U2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VWRU5U
UykKLSAgICAvLyBUaGlzIGNvbG9yIGlzIGV4cGVjdGVkIHRvIGJlIGRyYXduIG9uIGEgc2VtaS10
cmFuc3BhcmVudCBvdmVybGF5LAotICAgIC8vIG1ha2luZyBpdCBtb3JlIHRyYW5zcGFyZW50IHRo
YW4gaXRzIGFscGhhIHZhbHVlIGluZGljYXRlcy4KLSAgICBzdGF0aWMgY29uc3QgUkdCQTMyIGRl
ZmF1bHRUYXBIaWdobGlnaHRDb2xvciA9IDB4NjYwMDAwMDA7Ci0jZW5kaWYKLQogI2lmIFVTRShO
RVdfVEhFTUUpCiAgICAgVGhlbWUqIG1fdGhlbWU7IC8vIFRoZSBwbGF0Zm9ybS1zcGVjaWZpYyB0
aGVtZS4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0JvcmRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFs
dWUuaAppbmRleCBjZjM0MGQwZjY4MmU3NGFlNDkyY2NlZmNmYWNjYTExNjcyNzdhNGJkLi42YmJk
YmQyM2U0OGJiNzFjNGYyYTMzYzhkYzkzYTI1NjQzYTYyYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvQm9yZGVyVmFsdWUuaApAQCAtMzQsMTAgKzM0LDcgQEAgY2xhc3Mg
Qm9yZGVyVmFsdWUgewogZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwogcHVibGljOgogICAgIEJv
cmRlclZhbHVlKCkKLSAgICAgICAgOiBtX3dpZHRoKDMpCi0gICAgICAgICwgbV9jb2xvcigwKQot
ICAgICAgICAsIG1fY29sb3JJc1ZhbGlkKGZhbHNlKQotICAgICAgICAsIG1fc3R5bGUoQk5PTkUp
CisgICAgICAgIDogbV9zdHlsZShCTk9ORSkKICAgICAgICAgLCBtX2lzQXV0byhBVVRPX09GRikK
ICAgICB7CiAgICAgfQpAQCAtNDksNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzVHJh
bnNwYXJlbnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fY29sb3JJc1ZhbGlkICYm
ICFhbHBoYUNoYW5uZWwobV9jb2xvcik7CisgICAgICAgIHJldHVybiBtX2NvbG9yLmlzVmFsaWQo
KSAmJiAhbV9jb2xvci5hbHBoYSgpOwogICAgIH0KIAogICAgIGJvb2wgaXNWaXNpYmxlKGJvb2wg
Y2hlY2tTdHlsZSA9IHRydWUpIGNvbnN0CkBAIC01OSw3ICs1Niw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3JkZXJWYWx1ZSYgbykgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBtX3dpZHRoID09IG8ubV93aWR0aCAmJiBtX3N0eWxlID09IG8ubV9zdHlsZSAm
JiBtX2NvbG9yID09IG8ubV9jb2xvciAmJiBtX2NvbG9ySXNWYWxpZCA9PSBvLm1fY29sb3JJc1Zh
bGlkOworICAgICAgICByZXR1cm4gbV93aWR0aCA9PSBvLm1fd2lkdGggJiYgbV9zdHlsZSA9PSBv
Lm1fc3R5bGUgJiYgbV9jb2xvciA9PSBvLm1fY29sb3I7CiAgICAgfQogCiAgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IEJvcmRlclZhbHVlJiBvKSBjb25zdApAQCAtNjksMTkgKzY2LDE3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2V0Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIHsKLSAg
ICAgICAgbV9jb2xvciA9IGNvbG9yLnJnYigpOwotICAgICAgICBtX2NvbG9ySXNWYWxpZCA9IGNv
bG9yLmlzVmFsaWQoKTsKKyAgICAgICAgbV9jb2xvciA9IGNvbG9yOwogICAgIH0KIAotICAgIENv
bG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9jb2xvciwgbV9jb2xvcklzVmFsaWQp
OyB9CisgICAgQ29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAKICAgICBm
bG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBFQm9yZGVyU3R5bGUg
c3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyU3R5bGU+KG1fc3R5bGUp
OyB9CiAKIHByb3RlY3RlZDoKLSAgICBmbG9hdCBtX3dpZHRoOwotICAgIFJHQkEzMiBtX2NvbG9y
OwotICAgIHVuc2lnbmVkIG1fY29sb3JJc1ZhbGlkIDogMTsKKyAgICBmbG9hdCBtX3dpZHRoIHsg
MyB9OworICAgIENvbG9yIG1fY29sb3I7CiAKICAgICB1bnNpZ25lZCBtX3N0eWxlIDogNDsgLy8g
RUJvcmRlclN0eWxlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9Db2xsYXBzZWRCb3JkZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0NvbGxhcHNlZEJvcmRlclZhbHVlLmgKaW5kZXggNmU5YjMyODdlZjBjNDI4ZWUxOWIxZDI0Yjk0
ZWZiNDYwYjYxMGEzOS4uMTFjM2Y4NDJmMTIwOTgwZmFiZGMwZTQxOTA4YTQ4OGMwNDhmMjlkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJvcmRl
clZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvbGxhcHNlZEJv
cmRlclZhbHVlLmgKQEAgLTMzLDggKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
Q29sbGFwc2VkQm9yZGVyVmFsdWUgewogcHVibGljOgogICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
KCkKLSAgICAgICAgOiBtX2NvbG9ySXNWYWxpZChmYWxzZSkKLSAgICAgICAgLCBtX3N0eWxlKEJO
T05FKQorICAgICAgICA6IG1fc3R5bGUoQk5PTkUpCiAgICAgICAgICwgbV9wcmVjZWRlbmNlKEJP
RkYpCiAgICAgICAgICwgbV90cmFuc3BhcmVudChmYWxzZSkKICAgICB7CkBAIC00Miw4ICs0MSw3
IEBAIHB1YmxpYzoKIAogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbnN0IEJvcmRlclZhbHVl
JiBib3JkZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgRUJvcmRlclByZWNlZGVuY2UgcHJlY2VkZW5j
ZSkKICAgICAgICAgOiBtX3dpZHRoKExheW91dFVuaXQoYm9yZGVyLm5vblplcm8oKSA/IGJvcmRl
ci53aWR0aCgpIDogMCkpCi0gICAgICAgICwgbV9jb2xvcihjb2xvci5yZ2IoKSkKLSAgICAgICAg
LCBtX2NvbG9ySXNWYWxpZChjb2xvci5pc1ZhbGlkKCkpCisgICAgICAgICwgbV9jb2xvcihjb2xv
cikKICAgICAgICAgLCBtX3N0eWxlKGJvcmRlci5zdHlsZSgpKQogICAgICAgICAsIG1fcHJlY2Vk
ZW5jZShwcmVjZWRlbmNlKQogICAgICAgICAsIG1fdHJhbnNwYXJlbnQoYm9yZGVyLmlzVHJhbnNw
YXJlbnQoKSkKQEAgLTUzLDcgKzUxLDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgd2lkdGgo
KSBjb25zdCB7IHJldHVybiBtX3N0eWxlID4gQkhJRERFTiA/IG1fd2lkdGggOiBMYXlvdXRVbml0
Ojpmcm9tUGl4ZWwoMCk7IH0KICAgICBFQm9yZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVy
biBzdGF0aWNfY2FzdDxFQm9yZGVyU3R5bGU+KG1fc3R5bGUpOyB9CiAgICAgYm9vbCBleGlzdHMo
KSBjb25zdCB7IHJldHVybiBtX3ByZWNlZGVuY2UgIT0gQk9GRjsgfQotICAgIENvbG9yIGNvbG9y
KCkgY29uc3QgeyByZXR1cm4gQ29sb3IobV9jb2xvciwgbV9jb2xvcklzVmFsaWQpOyB9CisgICAg
Q29sb3IgY29sb3IoKSBjb25zdCB7IHJldHVybiBtX2NvbG9yOyB9CiAgICAgYm9vbCBpc1RyYW5z
cGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV90cmFuc3BhcmVudDsgfQogICAgIEVCb3JkZXJQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm9yZGVyUHJl
Y2VkZW5jZT4obV9wcmVjZWRlbmNlKTsgfQogCkBAIC02Niw4ICs2NCw3IEBAIHB1YmxpYzoKIAog
cHJpdmF0ZToKICAgICBMYXlvdXRVbml0IG1fd2lkdGg7Ci0gICAgUkdCQTMyIG1fY29sb3IgeyAw
IH07Ci0gICAgdW5zaWduZWQgbV9jb2xvcklzVmFsaWQgOiAxOworICAgIENvbG9yIG1fY29sb3I7
CiAgICAgdW5zaWduZWQgbV9zdHlsZSA6IDQ7IC8vIEVCb3JkZXJTdHlsZQogICAgIHVuc2lnbmVk
IG1fcHJlY2VkZW5jZSA6IDM7IC8vIEVCb3JkZXJQcmVjZWRlbmNlCiAgICAgdW5zaWduZWQgbV90
cmFuc3BhcmVudCA6IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvT3V0bGluZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvT3V0bGlu
ZVZhbHVlLmgKaW5kZXggMGFmZTVhODEyZjI5OTE4NWE3NWMzNWI0YjgzNTQyOGNhODU3NGM5NS4u
ZDU4YjBhMTJmYmZjYTY1ZWM1OTYyYzBkYTI0MjZkM2VmMjkzNzQ0NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL091dGxpbmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9PdXRsaW5lVmFsdWUuaApAQCAtMzQsNyArMzQsNyBAQCBm
cmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7CiBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IE91dGxpbmVWYWx1ZSYgbykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3dpZHRo
ID09IG8ubV93aWR0aCAmJiBtX3N0eWxlID09IG8ubV9zdHlsZSAmJiBtX2NvbG9yID09IG8ubV9j
b2xvciAmJiBtX2NvbG9ySXNWYWxpZCA9PSBvLm1fY29sb3JJc1ZhbGlkICYmIG1fb2Zmc2V0ID09
IG8ubV9vZmZzZXQgJiYgbV9pc0F1dG8gPT0gby5tX2lzQXV0bzsKKyAgICAgICAgcmV0dXJuIG1f
d2lkdGggPT0gby5tX3dpZHRoICYmIG1fc3R5bGUgPT0gby5tX3N0eWxlICYmIG1fY29sb3IgPT0g
by5tX2NvbG9yICYmIG1fb2Zmc2V0ID09IG8ubV9vZmZzZXQgJiYgbV9pc0F1dG8gPT0gby5tX2lz
QXV0bzsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IE91dGxpbmVWYWx1
ZSYgbykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuY3BwCmluZGV4IDM1NDA5YTFmY2M3YWFhMDBmZWVjZjhjZjA4NmYxMzk3YmVhY2FjNGEuLmQ4
NWIzODM3ZmJkZmQxYTZjZmY1ZTk0ZGZhYjA4Njc0MTJhNjk3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAtNjQsNyArNjQsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVjdCBTYW1lU2l6ZUFzQm9yZGVyVmFsdWUgewogICAg
IGZsb2F0IG1fd2lkdGg7Ci0gICAgUkdCQTMyIG1fY29sb3I7CisgICAgQ29sb3IgbV9jb2xvcjsK
ICAgICBpbnQgbV9yZXN0Qml0czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9NaXNjL1dl
YktpdE5TU3RyaW5nRXh0cmFzLm1tCmluZGV4IGI5YTg0ZTY2NDIwYmQ2Y2Y1MWMyODRmMjI5Nzcx
MmExNzBlODYwYTcuLmE3NjBjNzY4MmZlNWQ4ODNiYzkxNmFkY2U0MzViNjlmMzEzZGNiZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0TlNTdHJpbmdFeHRyYXMubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvTWlzYy9XZWJLaXROU1N0cmluZ0V4dHJhcy5tbQpAQCAt
MTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBCT09MIGNhblVzZUZhc3RSZW5kZXJlcihjb25zdCBVbmlD
aGFyICpidWZmZXIsIHVuc2lnbmVkIGxlbmd0aCkKICAgICAgICAgQ0dGbG9hdCBibHVlOwogICAg
ICAgICBDR0Zsb2F0IGFscGhhOwogICAgICAgICBbW3RleHRDb2xvciBjb2xvclVzaW5nQ29sb3JT
cGFjZU5hbWU6TlNEZXZpY2VSR0JDb2xvclNwYWNlXSBnZXRSZWQ6JnJlZCBncmVlbjomZ3JlZW4g
Ymx1ZTomYmx1ZSBhbHBoYTomYWxwaGFdOwotICAgICAgICBncmFwaGljc0NvbnRleHQuc2V0Rmls
bENvbG9yKG1ha2VSR0JBKHJlZCAqIDI1NSwgZ3JlZW4gKiAyNTUsIGJsdWUgKiAyNTUsIGFscGhh
ICogMjU1KSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4dC5zZXRGaWxsQ29sb3IoQ29sb3Ioc3Rh
dGljX2Nhc3Q8ZmxvYXQ+KHJlZCAqIDI1NSksIHN0YXRpY19jYXN0PGZsb2F0PihncmVlbiAqIDI1
NS4wZiksIHN0YXRpY19jYXN0PGZsb2F0PihibHVlICogMjU1LjBmKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KGFscGhhICogMjU1LjBmKSkpOwogCiAgICAgICAgIHdlYkNvcmVGb250LmRyYXdUZXh0KGdy
YXBoaWNzQ29udGV4dCwgcnVuLCBGbG9hdFBvaW50KHBvaW50LngsIChmbGlwcGVkID8gcG9pbnQu
eSA6ICgtMSAqIHBvaW50LnkpKSkpOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>