<?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>139971</bug_id>
          
          <creation_ts>2014-12-28 02:13:58 -0800</creation_ts>
          <short_desc>Convert OwnPtr to std::unique_ptr in WebCore/graphics/</short_desc>
          <delta_ts>2016-05-16 16:01:22 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>157749</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>noam</cc>
    
    <cc>roger_fong</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058015</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-28 02:13:58 -0800</bug_when>
    <thetext>SSIA</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058016</commentid>
    <comment_count>1</comment_count>
      <attachid>243780</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-28 02:18:49 -0800</bug_when>
    <thetext>Created attachment 243780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058023</commentid>
    <comment_count>2</comment_count>
      <attachid>243781</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-28 06:26:08 -0800</bug_when>
    <thetext>Created attachment 243781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058035</commentid>
    <comment_count>3</comment_count>
      <attachid>243781</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-28 11:05:26 -0800</bug_when>
    <thetext>Comment on attachment 243781
Patch

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

&gt; Source/WebCore/platform/graphics/GlyphMetricsMap.h:114
&gt;                  return page;
&gt;          } else
&gt; -            m_pages = adoptPtr(new HashMap&lt;int, OwnPtr&lt;GlyphMetricsPage&gt;&gt;);
&gt; +            m_pages = std::make_unique&lt;HashMap&lt;int, std::unique_ptr&lt;GlyphMetricsPage&gt;&gt;&gt;();
&gt;          page = new GlyphMetricsPage;
&gt; -        m_pages-&gt;set(pageNumber, adoptPtr(page));
&gt; +        m_pages-&gt;set(pageNumber, std::unique_ptr&lt;GlyphMetricsPage&gt;(page));

We are really trying to avoid this idiom where we adopt by invoking the std::unique_ptr constructor. This function also does double hash table lookup and it need not do that. I suggest this code instead:

    if (!m_pages)
        m_pages = std::make_unique&lt;HashMap&lt;int, std::unique_ptr&lt;GlyphMetricsPage&gt;&gt;&gt;();
    auto&amp; pageInMap = m_pages-&gt;add(pageNumber, nullptr).iterator-&gt;value;
    if (!pageInMap)
        pageInMap = std::make_unique&lt;GlyphMetricsPage&gt;();
    page = pageInMap;

This will set up the page in the map with only a single hash table lookup.

&gt; Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp:345
&gt; +        m_children.set(fontData, std::unique_ptr&lt;GlyphPageTreeNode&gt;(child));

Again, this is not the idiom we want. Instead we should put the GlyphPageTreeNode into a local variable that is already a unique_ptr.

One way to do this would be to have both a unique_ptr and a raw pointer pointing at the same thing.

But even better, it’s possible to rearrange this function so it won’t have a raw pointer and also eliminate the double hashing it does. We would figure out where the child goes right at the start, replacing the &quot;foundChild&quot; code.

    auto&amp; child = fontData ? m_children.add(fontData, nullptr).iterator-&gt;value : m_systemFallbackChild;
    if (child)
        return child.get();

    child = std::make_unique&lt;GlyphPageTreeNode&gt;();

    ...

    return child.get();

The other code in the function would stay the same.

&gt; Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h:40
&gt; +    explicit Extensions3DOpenGL(GraphicsContext3D*);

This argument should really be a reference rather than a pointer. But no need to change it right now.

&gt; Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h:61
&gt;      // This class only needs to be instantiated by GraphicsContext3D implementations.

I don’t think this comment makes sense any more.

&gt; Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h:62
&gt;      friend class GraphicsContext3D;

I don’t think this line of code is helpful any more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058036</commentid>
    <comment_count>4</comment_count>
      <attachid>243781</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-12-28 11:06:22 -0800</bug_when>
    <thetext>Comment on attachment 243781
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/opengl/Extensions3DOpenGL.h:61
&gt;&gt;      // This class only needs to be instantiated by GraphicsContext3D implementations.
&gt; 
&gt; I don’t think this comment makes sense any more.

The comment *might* have some value, but it belongs up at the constructor, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058068</commentid>
    <comment_count>5</comment_count>
      <attachid>243788</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-28 20:19:03 -0800</bug_when>
    <thetext>Created attachment 243788
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058069</commentid>
    <comment_count>6</comment_count>
      <attachid>243781</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-28 20:19:26 -0800</bug_when>
    <thetext>Comment on attachment 243781
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/GlyphMetricsMap.h:114
&gt;&gt; +        m_pages-&gt;set(pageNumber, std::unique_ptr&lt;GlyphMetricsPage&gt;(page));
&gt; 
&gt; We are really trying to avoid this idiom where we adopt by invoking the std::unique_ptr constructor. This function also does double hash table lookup and it need not do that. I suggest this code instead:
&gt; 
&gt;     if (!m_pages)
&gt;         m_pages = std::make_unique&lt;HashMap&lt;int, std::unique_ptr&lt;GlyphMetricsPage&gt;&gt;&gt;();
&gt;     auto&amp; pageInMap = m_pages-&gt;add(pageNumber, nullptr).iterator-&gt;value;
&gt;     if (!pageInMap)
&gt;         pageInMap = std::make_unique&lt;GlyphMetricsPage&gt;();
&gt;     page = pageInMap;
&gt; 
&gt; This will set up the page in the map with only a single hash table lookup.

Thank you for your suggestion. New patch uses this code.

&gt;&gt; Source/WebCore/platform/graphics/GlyphPageTreeNode.cpp:345
&gt;&gt; +        m_children.set(fontData, std::unique_ptr&lt;GlyphPageTreeNode&gt;(child));
&gt; 
&gt; Again, this is not the idiom we want. Instead we should put the GlyphPageTreeNode into a local variable that is already a unique_ptr.
&gt; 
&gt; One way to do this would be to have both a unique_ptr and a raw pointer pointing at the same thing.
&gt; 
&gt; But even better, it’s possible to rearrange this function so it won’t have a raw pointer and also eliminate the double hashing it does. We would figure out where the child goes right at the start, replacing the &quot;foundChild&quot; code.
&gt; 
&gt;     auto&amp; child = fontData ? m_children.add(fontData, nullptr).iterator-&gt;value : m_systemFallbackChild;
&gt;     if (child)
&gt;         return child.get();
&gt; 
&gt;     child = std::make_unique&lt;GlyphPageTreeNode&gt;();
&gt; 
&gt;     ...
&gt; 
&gt;     return child.get();
&gt; 
&gt; The other code in the function would stay the same.

I try to apply your second suggestion to new patch. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058072</commentid>
    <comment_count>7</comment_count>
      <attachid>243788</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-28 22:24:48 -0800</bug_when>
    <thetext>Comment on attachment 243788
Patch

Clearing flags on attachment: 243788

Committed r177786: &lt;http://trac.webkit.org/changeset/177786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058073</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-28 22:24:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058079</commentid>
    <comment_count>9</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-12-29 00:19:49 -0800</bug_when>
    <thetext>This commit made a build break on win port. I landed two fixes for win port though, second fix is not tested on win bot yet.

https://trac.webkit.org/changeset/177787
https://trac.webkit.org/changeset/177788</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193491</commentid>
    <comment_count>10</comment_count>
      <attachid>243788</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-16 13:22:44 -0700</bug_when>
    <thetext>Comment on attachment 243788
Patch

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

&gt; Source/WebCore/platform/graphics/GlyphMetricsMap.h:-110
&gt; -                return page;

Previously, there was an early return here, which meant that we would only do the for loop below (the one initializing the page with unknown metrics) if the page is new. After your change, we always fill the page with unknown metrics, even if it is an existing page :/
I will fix.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243780</attachid>
            <date>2014-12-28 02:18:49 -0800</date>
            <delta_ts>2014-12-28 06:25:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139971-20141228191852.patch</filename>
            <type>text/plain</type>
            <size>22077</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3NzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWMzYWZjMGJiMzU5MGMx
Mjk4ZDgwZDhiZjE2MWNhZGUwZDM1ZjM2Mi4uNzA1YTA4MmQxNjM0OTA5MTk3NTZlZjhiNDFjZjhk
OGIwZTkyZGEzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTEyLTI4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQ29udmVydCBP
d25QdHIgdG8gc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvZ3JhcGhpY3MvCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk5NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugc3RkOjp1bmlxdWVfcHRy
PD4gYW5kIHN0ZDo6bWFrZV91bmlxdWU8PiBpbnN0ZWFkIG9mIE93blB0ci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgorICAgICAgICAoV2ViQ29yZTo6
R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okds
eXBoUGFnZVRyZWVOb2RlOjpnZXRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VU
cmVlTm9kZTo6cHJ1bmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBh
Z2VUcmVlTm9kZTo6cHJ1bmVGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhQYWdlVHJlZU5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9MYXllclBvb2wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb3ZlcmFnZU1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9X
ZWJUaWxlZEJhY2tpbmdMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9E
cmF3aW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMz
RE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
YXlsYW5kL1dheWxhbmREaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldheWxhbmREaXNw
bGF5OjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1dheWxhbmREaXNwbGF5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXlsYW5kU3Vy
ZmFjZTo6Y3JlYXRlR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1dheWxhbmRTdXJmYWNlLmg6CisKIDIwMTQtMTItMjQgIEJlbmphbWluIFBvdWxhaW4gIDxi
cG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU21hbGwgY2xlYW51cCBvZiBSZW5kZXJCbG9j
azo6cGFpbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aE1ldHJpY3NNYXAuaAppbmRleCA3ZjQwZWRlZjE4NTUxMWU2NmRhNDY4NTQ1MjNjNzgzMzY5MDNm
ZTFhLi5mNjdkMjRjOTlhZjYwNWRjYTc2NmVmYTFiOTAwMGFhYzdjYTgzNjQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaApAQCAt
ODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2ZpbGxlZFByaW1hcnlQYWdlOwog
ICAgIEdseXBoTWV0cmljc1BhZ2UgbV9wcmltYXJ5UGFnZTsgLy8gV2Ugb3B0aW1pemUgZm9yIHRo
ZSBwYWdlIHRoYXQgY29udGFpbnMgZ2x5cGggaW5kaWNlcyAwLTI1NS4KLSAgICBPd25QdHI8SGFz
aE1hcDxpbnQsIE93blB0cjxHbHlwaE1ldHJpY3NQYWdlPj4+IG1fcGFnZXM7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+
PiBtX3BhZ2VzOwogfTsKIAogdGVtcGxhdGU8PiBpbmxpbmUgZmxvYXQgR2x5cGhNZXRyaWNzTWFw
PGZsb2F0Pjo6dW5rbm93bk1ldHJpY3MoKQpAQCAtMTA5LDkgKzEwOSw5IEBAIHRlbXBsYXRlPGNs
YXNzIFQ+IHR5cGVuYW1lIEdseXBoTWV0cmljc01hcDxUPjo6R2x5cGhNZXRyaWNzUGFnZSogR2x5
cGhNZXRyaWNzTWFwCiAgICAgICAgICAgICBpZiAoKHBhZ2UgPSBtX3BhZ2VzLT5nZXQocGFnZU51
bWJlcikpKQogICAgICAgICAgICAgICAgIHJldHVybiBwYWdlOwogICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIG1fcGFnZXMgPSBhZG9wdFB0cihuZXcgSGFzaE1hcDxpbnQsIE93blB0cjxHbHlw
aE1ldHJpY3NQYWdlPj4pOworICAgICAgICAgICAgbV9wYWdlcyA9IHN0ZDo6bWFrZV91bmlxdWU8
SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPj4+KCk7CiAgICAg
ICAgIHBhZ2UgPSBuZXcgR2x5cGhNZXRyaWNzUGFnZTsKLSAgICAgICAgbV9wYWdlcy0+c2V0KHBh
Z2VOdW1iZXIsIGFkb3B0UHRyKHBhZ2UpKTsKKyAgICAgICAgbV9wYWdlcy0+c2V0KHBhZ2VOdW1i
ZXIsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJpY3NQYWdlPihwYWdlKSk7CiAgICAgfQogCiAg
ICAgLy8gRmlsbCBpbiB0aGUgd2hvbGUgcGFnZSB3aXRoIHRoZSB1bmtub3duIGdseXBoIGluZm9y
bWF0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhQYWdlVHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhQYWdlVHJlZU5vZGUuY3BwCmluZGV4IDg5NjdmMjE3MWFjNjQ5MmNiNTc5MTYxMGQ5MmJiYTM2
YjRiNDJkMzguLmFmZWQxZTFmZjA5Y2I3NTA2MjcwNWM1Mjc1OWIzNzA3ZmE5YzMxZTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVl
Tm9kZS5jcHAKQEAgLTM0MiwxMCArMzQyLDEwIEBAIEdseXBoUGFnZVRyZWVOb2RlKiBHbHlwaFBh
Z2VUcmVlTm9kZTo6Z2V0Q2hpbGQoY29uc3QgRm9udERhdGEqIGZvbnREYXRhLCB1bnNpZ25lCiAg
ICAgY2hpbGQtPm1fcGFnZU51bWJlciA9IG1fcGFnZU51bWJlcjsKICNlbmRpZgogICAgIGlmIChm
b250RGF0YSkgewotICAgICAgICBtX2NoaWxkcmVuLnNldChmb250RGF0YSwgYWRvcHRQdHIoY2hp
bGQpKTsKKyAgICAgICAgbV9jaGlsZHJlbi5zZXQoZm9udERhdGEsIHN0ZDo6dW5pcXVlX3B0cjxH
bHlwaFBhZ2VUcmVlTm9kZT4oY2hpbGQpKTsKICAgICAgICAgZm9udERhdGEtPnNldE1heEdseXBo
UGFnZVRyZWVMZXZlbChzdGQ6Om1heChmb250RGF0YS0+bWF4R2x5cGhQYWdlVHJlZUxldmVsKCks
IGNoaWxkLT5tX2xldmVsKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9zeXN0ZW1GYWxsYmFj
a0NoaWxkID0gYWRvcHRQdHIoY2hpbGQpOworICAgICAgICBtX3N5c3RlbUZhbGxiYWNrQ2hpbGQg
PSBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhQYWdlVHJlZU5vZGU+KGNoaWxkKTsKICAgICAgICAgY2hp
bGQtPm1faXNTeXN0ZW1GYWxsYmFjayA9IHRydWU7CiAgICAgfQogICAgIGNoaWxkLT5pbml0aWFs
aXplUGFnZShmb250RGF0YSwgcGFnZU51bWJlcik7CkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBH
bHlwaFBhZ2VUcmVlTm9kZTo6cHJ1bmVDdXN0b21Gb250RGF0YShjb25zdCBGb250RGF0YSogZm9u
dERhdGEpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgLy8gUHJ1bmUgYW55IGJyYW5j
aCB0aGF0IGNvbnRhaW5zIHRoaXMgRm9udERhdGEuCi0gICAgaWYgKE93blB0cjxHbHlwaFBhZ2VU
cmVlTm9kZT4gbm9kZSA9IG1fY2hpbGRyZW4udGFrZShmb250RGF0YSkpIHsKKyAgICBpZiAoYXV0
byBub2RlID0gbV9jaGlsZHJlbi50YWtlKGZvbnREYXRhKSkgewogICAgICAgICBpZiAodW5zaWdu
ZWQgY3VzdG9tRm9udENvdW50ID0gbm9kZS0+bV9jdXN0b21Gb250Q291bnQgKyAxKSB7CiAgICAg
ICAgICAgICBmb3IgKEdseXBoUGFnZVRyZWVOb2RlKiBjdXJyID0gdGhpczsgY3VycjsgY3VyciA9
IGN1cnItPm1fcGFyZW50KQogICAgICAgICAgICAgICAgIGN1cnItPm1fY3VzdG9tRm9udENvdW50
IC09IGN1c3RvbUZvbnRDb3VudDsKQEAgLTM4Myw3ICszODMsNyBAQCB2b2lkIEdseXBoUGFnZVRy
ZWVOb2RlOjpwcnVuZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250RGF0YSwgdW5z
aWduZWQgbAogICAgICAgICBtX3N5c3RlbUZhbGxiYWNrQ2hpbGQtPm1fcGFnZS0+cmVtb3ZlRm9u
dERhdGFGcm9tU3lzdGVtRmFsbGJhY2tQYWdlKGZvbnREYXRhKTsKIAogICAgIC8vIFBydW5lIGFu
eSBicmFuY2ggdGhhdCBjb250YWlucyB0aGlzIEZvbnREYXRhLgotICAgIGlmIChPd25QdHI8R2x5
cGhQYWdlVHJlZU5vZGU+IG5vZGUgPSBtX2NoaWxkcmVuLnRha2UoZm9udERhdGEpKSB7CisgICAg
aWYgKGF1dG8gbm9kZSA9IG1fY2hpbGRyZW4udGFrZShmb250RGF0YSkpIHsKICAgICAgICAgaWYg
KHVuc2lnbmVkIGN1c3RvbUZvbnRDb3VudCA9IG5vZGUtPm1fY3VzdG9tRm9udENvdW50KSB7CiAg
ICAgICAgICAgICBmb3IgKEdseXBoUGFnZVRyZWVOb2RlKiBjdXJyID0gdGhpczsgY3VycjsgY3Vy
ciA9IGN1cnItPm1fcGFyZW50KQogICAgICAgICAgICAgICAgIGN1cnItPm1fY3VzdG9tRm9udENv
dW50IC09IGN1c3RvbUZvbnRDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5oCmluZGV4IDBhZjUyNTkyNTRiMzllZjcxNjM1
NTA4MjVkYzhiNjgyNjBlM2RiZGQuLjcwZjQyNGJhMjFmNjEzM2RhMWQxZDhmYjQ2MDdlNzlhYjYw
MGU1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
UGFnZVRyZWVOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhQYWdlVHJlZU5vZGUuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkdseXBoUGFnZS5o
IgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KIApAQCAtMTE3LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIEhhc2hNYXA8aW50LCBHbHlwaFBhZ2VUcmVlTm9kZSo+KiByb290czsKICAgICBzdGF0aWMg
R2x5cGhQYWdlVHJlZU5vZGUqIHBhZ2VaZXJvUm9vdDsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxj
b25zdCBGb250RGF0YSosIE93blB0cjxHbHlwaFBhZ2VUcmVlTm9kZT4+IEdseXBoUGFnZVRyZWVO
b2RlTWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBGb250RGF0YSosIHN0ZDo6dW5pcXVl
X3B0cjxHbHlwaFBhZ2VUcmVlTm9kZT4+IEdseXBoUGFnZVRyZWVOb2RlTWFwOwogCiAgICAgR2x5
cGhQYWdlVHJlZU5vZGVNYXAgbV9jaGlsZHJlbjsKICAgICBHbHlwaFBhZ2VUcmVlTm9kZSogbV9w
YXJlbnQ7CkBAIC0xMjUsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xldmVs
IDogMzE7CiAgICAgYm9vbCBtX2lzU3lzdGVtRmFsbGJhY2sgOiAxOwogICAgIHVuc2lnbmVkIG1f
Y3VzdG9tRm9udENvdW50OwotICAgIE93blB0cjxHbHlwaFBhZ2VUcmVlTm9kZT4gbV9zeXN0ZW1G
YWxsYmFja0NoaWxkOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaFBhZ2VUcmVlTm9kZT4gbV9z
eXN0ZW1GYWxsYmFja0NoaWxkOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHVuc2lnbmVkIG1fcGFn
ZU51bWJlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKaW5kZXggMGVmNGJlMGZkNGQyZDQ1MDQ3MzczMGU5YTBkNGQyNDIyZGZiZDE3
Ni4uMDczNzAwZWU2ODk3MzZmMDBiMDQxZWRkYTA4NGMxYTIyODJhNWY1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM3
LDcgKzM3LDYgQEAKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAK
ICNpZiBVU0UoQ0cpCiB0eXBlZGVmIHN0cnVjdCBDR0NvbnRleHQgUGxhdGZvcm1HcmFwaGljc0Nv
bnRleHQ7CkBAIC01MjIsNyArNTIxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgRElCUGl4ZWxEYXRhIG1fcGl4ZWxEYXRhOwogICAgICAgICB9OwogCi0gICAgICAgIFBhc3NP
d25QdHI8V2luZG93c0JpdG1hcD4gY3JlYXRlV2luZG93c0JpdG1hcChjb25zdCBJbnRTaXplJik7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxXaW5kb3dzQml0bWFwPiBjcmVhdGVXaW5kb3dzQml0
bWFwKGNvbnN0IEludFNpemUmKTsKICAgICAgICAgLy8gVGhlIGJpdG1hcCBzaG91bGQgYmUgbm9u
LXByZW11bHRpcGxpZWQuCiAgICAgICAgIHZvaWQgZHJhd1dpbmRvd3NCaXRtYXAoV2luZG93c0Jp
dG1hcCosIGNvbnN0IEludFBvaW50Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDcxMDhiZThkYTYz
M2EyYjEwZjE5MDJlOWZjZTk5YzNkMGNlZTYyY2MuLmFjOWRkYzI5OGNiMDQ2NzRjYjg5MjdjYzkw
MDczMDIzYjQwNzIxZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaApAQCAtMTEwMiwxNCArMTEwMiwxNCBAQCBwcml2YXRl
OgogCiAgICAgQU5HTEVXZWJLaXRCcmlkZ2UgbV9jb21waWxlcjsKIAotICAgIE93blB0cjxTaGFk
ZXJOYW1lSGFzaD4gbmFtZUhhc2hNYXBGb3JTaGFkZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFkZXJOYW1lSGFzaD4gbmFtZUhhc2hNYXBGb3JTaGFkZXJzOwogCiAjaWYgKChQTEFURk9STShH
VEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oV0lOKSkgJiYgVVNFKE9QRU5HTF9FU18y
KSkKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMRVM7Ci0gICAgT3duUHRyPEV4
dGVuc2lvbnMzRE9wZW5HTEVTPiBtX2V4dGVuc2lvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4
dGVuc2lvbnMzRE9wZW5HTEVTPiBtX2V4dGVuc2lvbnM7CiAjZWxzZQogICAgIGZyaWVuZCBjbGFz
cyBFeHRlbnNpb25zM0RPcGVuR0w7Ci0gICAgT3duUHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gbV9l
eHRlbnNpb25zOworICAgIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IG1fZXh0
ZW5zaW9uczsKICNlbmRpZgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xDb21t
b247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggMzg3ZWRhZGY0NjdmZDkwOGEyNjY2MDVl
MDg0MTNhMGI4YjE3OWIwMC4uOWQ3MGVlNjllMDIxZWQ1ZWJlZWE4ZThiY2IwZWQxMTdiOGY4MGMy
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTIyLDcgKzIyLDYgQEAKIAogI2luY2x1ZGUg
IkdMQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUikKICNpbmNsdWRlICJU
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDgzMzMzMjIwY2MyOTI3Zjk1ODMwNWI2
ZDcyYzg1Y2EwYjEyMTA3OTUuLjI2MWFlNGY2MWNmMzAxZDVlOGIyNDNmN2NhMmU5ZDgyZWVhZDQ3
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xh
eWVyLmgKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1MYXllci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvVHlwZUNhc3RzLmg+CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24u
aAppbmRleCA2ZWE2MDc5MjgzNmVhOWU4NjBkZWUzOTk0MWEzZTNmYzM2MGJhNGM0Li4yMDllY2Uy
YjRmY2IyMmU1YTc0YmQ3OWY4ZjAzZTI0MDg5M2EwM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaApAQCAtMzYsOCAr
MzYsNiBAQAogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNp
bmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9MYXllclBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9vbC5oCmluZGV4IGIzN2Y3MmMxMGJjYjM1NDM1Mjgy
ODg1YTQxYWU4ZmE2ZDZkZmFhYTEuLjUzNTFkYzZkZjAwYzFkMDEyZGNlM2EyYjEzYzMyODUzNmFl
NTFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xh
eWVyUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVy
UG9vbC5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNv
bnRyb2xsZXIuaAppbmRleCA4MjJkMmM0OGFjMzEwZDBmZjI3ODJjNTYwMDRjY2NmOWRmNThiNWNl
Li5hN2NmMzM5NTY2M2NlNDA3YzI0MmJhMTkzYTYxODdhMWEyMDZmMWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKQEAg
LTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxl
Q292ZXJhZ2VNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVD
b3ZlcmFnZU1hcC5oCmluZGV4IDJiOThhZmNhZjM3ZjAyNWQ0MThiMDM4ZjBhYzlhMzdlYzllNjAy
YmEuLmU0ZTU1YjU1ODFmMjVlOTQ1NTJhMDY3ODljZGY0MmI3MWUxNzA2ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5o
CkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1DQUxheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9XZWJUaWxlZEJhY2tpbmdMYXllci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVkQmFja2luZ0xheWVyLmgKaW5kZXgg
NGEyMjdiZWM2ZjU1ZDJjOWU2NjYyZjAwMDc1NDEyOWUyNGUxYzc3NS4uMGZjYjk3YjkzM2VlYjk0
YTE2ODc3NDYzZTI5YjcwNWFlMDdlNjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVkQmFja2luZ0xheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVkQmFja2luZ0xheWVyLmgK
QEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgV2ViVGlsZWRCYWNraW5nTGF5ZXJfaAogCiAjaW1w
b3J0IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCmluZGV4IDIyZDlkNGJm
NTIwODJmNmE2MWNhZjZmNDhjZGZhZjgyMDkyNmM2YjguLjliMzExOTY3ODhiZjQ3ODc0OWM0MmVi
MGNmNTkxMmI2M2U4NmY3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUg
IlBsYXRmb3JtTGF5ZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lmIFBMQVRG
T1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IDMxYWFh
NjNlZWJiOGI5ZDNhNDVlMTA3M2M2Yzg1NzQ2YWM2Y2JiMzkuLjUzZWMxZDE3OWMyYTNhMjVlMjNh
NjlhZTMzMmIzNjFhMmYwN2YzMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKQEAgLTQzLDExICs0MywxMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLVRleHR1cmU6OlRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQs
IFBhc3NPd25QdHI8VmVjdG9yPHVuc2lnbmVkIGludD4+IHRpbGVUZXh0dXJlSWRzLCBGb3JtYXQg
Zm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXhUZXh0dXJlU2l6ZSkKK1RleHR1
cmU6OlRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8dW5zaWduZWQ+PiB0aWxlVGV4dHVyZUlkcywgRm9ybWF0IGZvcm1hdCwgaW50IHdpZHRo
LCBpbnQgaGVpZ2h0LCBpbnQgbWF4VGV4dHVyZVNpemUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKICAgICAsIG1fZm9ybWF0KGZvcm1hdCkKICAgICAsIG1fdGlsZXMoSW50U2l6ZShtYXhUZXh0
dXJlU2l6ZSwgbWF4VGV4dHVyZVNpemUpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCB0cnVlKQot
ICAgICwgbV90aWxlVGV4dHVyZUlkcyh0aWxlVGV4dHVyZUlkcykKKyAgICAsIG1fdGlsZVRleHR1
cmVJZHMoV1RGOjptb3ZlKHRpbGVUZXh0dXJlSWRzKSkKIHsKIH0KIApAQCAtOTQsNyArOTQsNyBA
QCBQYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaQogICAgICAgICBudW1UaWxlcyA9IDA7CiAgICAgfQog
Ci0gICAgT3duUHRyPFZlY3Rvcjx1bnNpZ25lZCBpbnQ+PiB0ZXh0dXJlSWRzID0gYWRvcHRQdHIo
bmV3IFZlY3Rvcjx1bnNpZ25lZCBpbnQ+KG51bVRpbGVzKSk7CisgICAgYXV0byB0ZXh0dXJlSWRz
ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CiAgICAgdGV4
dHVyZUlkcy0+ZmlsbCgwLCBudW1UaWxlcyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bVRpbGVzOyBpKyspIHsKQEAgLTEyMCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRyPFRleHR1cmU+IFRl
eHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwg
aQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbGVCb3VuZHNXaXRo
Qm9yZGVyLmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDAsIGdsRm9ybWF0LCBnbFR5cGUpOwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRl
eHR1cmUoY29udGV4dCwgdGV4dHVyZUlkcy5yZWxlYXNlKCksIGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgbWF4VGV4dHVyZVNpemUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmUoY29u
dGV4dCwgV1RGOjptb3ZlKHRleHR1cmVJZHMpLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1heFRl
eHR1cmVTaXplKSk7CiB9CiAKIHRlbXBsYXRlIDxib29sIHN3aXp6bGU+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuaAppbmRleCA2ZTkzYjkxYzIzYjJj
NmFlZDBjMjQ2ZjJjN2VhMTBlY2QwMzJkZTc3Li4zYWE1NWY4MjE3MTA3MTA2YTU2MTM3NmZhZmVl
N2JlMjYyYzQ0NTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9UZXh0dXJlLmgKQEAgLTMyLDggKzMyLDYgQEAKICNkZWZpbmUgVGV4dHVyZV9oCiAKICNpbmNs
dWRlICJUaWxpbmdEYXRhLmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQsMTEgKzUyLDExIEBA
IHB1YmxpYzoKICAgICBGb3JtYXQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0K
ICAgICBjb25zdCBUaWxpbmdEYXRhJiB0aWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXM7IH0K
IHByaXZhdGU6Ci0gICAgVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBhc3NPd25QdHI8VmVj
dG9yPHVuc2lnbmVkIGludD4+IHRpbGVUZXh0dXJlSWRzLCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRCosIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8dW5zaWduZWQ+PiB0aWxlVGV4dHVy
ZUlkcywgRm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXhUZXh0dXJlU2l6ZSk7
CiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKICAgICBGb3JtYXQgbV9mb3JtYXQ7
CiAgICAgVGlsaW5nRGF0YSBtX3RpbGVzOwotICAgIE93blB0cjxWZWN0b3I8dW5zaWduZWQgaW50
Pj4gbV90aWxlVGV4dHVyZUlkczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHVuc2lnbmVk
Pj4gbV90aWxlVGV4dHVyZUlkczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAppbmRl
eCAzNGQwMjk2NTY2MTg3NmMzZGVjYjdhNGU3NjMzZTVlNzUxMTEwYjUyLi40MDk3ZTExZTQ2MzJk
NWYwMGIwZGYxMWRlNjM1ZmIxMDgxMTc4N2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCkBA
IC0zNyw2ICszNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEV4dGVuc2lvbnMzRE9w
ZW5HTCA6IHB1YmxpYyBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgorICAgIGV4cGxpY2l0IEV4dGVuc2lvbnMzRE9wZW5HTChH
cmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnMzRE9wZW5HTCgpOwog
CiAgICAgLy8gRXh0ZW5zaW9uczNEIG1ldGhvZHMuCkBAIC01OSw3ICs2MCw2IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkgbmVlZHMgdG8gYmUgaW5zdGFudGlh
dGVkIGJ5IEdyYXBoaWNzQ29udGV4dDNEIGltcGxlbWVudGF0aW9ucy4KICAgICBmcmllbmQgY2xh
c3MgR3JhcGhpY3NDb250ZXh0M0Q7Ci0gICAgRXh0ZW5zaW9uczNET3BlbkdMKEdyYXBoaWNzQ29u
dGV4dDNEKik7CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3QgV1RG
OjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRFeHRlbnNpb25zKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAppbmRleCBlY2Q2ODc2MWIxYWJjNDRiYzQ1NjVh
ZmFiZTM4YjVlNGVkODRjODdiLi5mZWExMjE5ZTQxMjFjMjAxODZlMmQ4ZmMwODAwMjNlOTFhMGU2
MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKQEAgLTM3Niw3ICsz
NzYsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjbGVhckRlcHRoKEdDM0RjbGFtcGYgZGVw
dGgpCiBFeHRlbnNpb25zM0QqIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRFeHRlbnNpb25zKCkKIHsK
ICAgICBpZiAoIW1fZXh0ZW5zaW9ucykKLSAgICAgICAgbV9leHRlbnNpb25zID0gYWRvcHRQdHIo
bmV3IEV4dGVuc2lvbnMzRE9wZW5HTCh0aGlzKSk7CisgICAgICAgIG1fZXh0ZW5zaW9ucyA9IHN0
ZDo6bWFrZV91bmlxdWU8RXh0ZW5zaW9uczNET3BlbkdMPih0aGlzKTsKICAgICByZXR1cm4gbV9l
eHRlbnNpb25zLmdldCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3Bl
bkdMQ29tbW9uLmNwcAppbmRleCBlYTdjMzMzMzZkOTk2MDY4YTZhODEzMzJlMjY3ZGE4M2NkMmY1
OGJkLi5lNGE4MDVjYTM3ZDU3Y2RjZmE5OGRiMTZlYjIxNTYyNmU4M2Y3YmQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
M0RPcGVuR0xDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTU2Niw3ICs1NjYs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpjb21waWxlU2hhZGVyKFBsYXRmb3JtM0RPYmpl
Y3Qgc2hhZGVyKQogICAgIEFOR0xFUmVzb3VyY2VzLkhhc2hGdW5jdGlvbiA9IG5hbWVIYXNoRm9y
U2hhZGVyOwogCiAgICAgaWYgKCFuYW1lSGFzaE1hcEZvclNoYWRlcnMpCi0gICAgICAgIG5hbWVI
YXNoTWFwRm9yU2hhZGVycyA9IGFkb3B0UHRyKG5ldyBTaGFkZXJOYW1lSGFzaCk7CisgICAgICAg
IG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFtZUhhc2g+
KCk7CiAgICAgY3VycmVudE5hbWVIYXNoTWFwRm9yU2hhZGVyID0gbmFtZUhhc2hNYXBGb3JTaGFk
ZXJzLmdldCgpOwogICAgIG1fY29tcGlsZXIuc2V0UmVzb3VyY2VzKEFOR0xFUmVzb3VyY2VzKTsK
IApAQCAtODczLDcgKzg3Myw3IEBAIFN0cmluZyBHcmFwaGljc0NvbnRleHQzRDo6bWFwcGVkU3lt
Ym9sTmFtZShQbGF0Zm9ybTNET2JqZWN0IHByb2dyYW0sIEFOR0xFU2hhZGVyCiAgICAgICAgIC8v
IEF0dHJpYnV0ZXMgYXJlIGEgc3BlY2lhbCBjYXNlOiB0aGV5IG1heSBiZSByZXF1ZXN0ZWQgYmVm
b3JlIGFueSBzaGFkZXJzIGhhdmUgYmVlbiBjb21waWxlZCwKICAgICAgICAgLy8gYW5kIGFyZW4n
dCBldmVuIHJlcXVpcmVkIHRvIGJlIHVzZWQgaW4gYW55IHNoYWRlciBwcm9ncmFtLgogICAgICAg
ICBpZiAoIW5hbWVIYXNoTWFwRm9yU2hhZGVycykKLSAgICAgICAgICAgIG5hbWVIYXNoTWFwRm9y
U2hhZGVycyA9IGFkb3B0UHRyKG5ldyBTaGFkZXJOYW1lSGFzaCk7CisgICAgICAgICAgICBuYW1l
SGFzaE1hcEZvclNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwog
ICAgICAgICBjdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXIgPSBuYW1lSGFzaE1hcEZvclNoYWRl
cnMuZ2V0KCk7CiAKICAgICAgICAgU3RyaW5nIGdlbmVyYXRlZE5hbWUgPSBnZW5lcmF0ZUhhc2hl
ZE5hbWUobmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1dheWxhbmREaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dheWxhbmQvV2F5bGFuZERpc3BsYXkuY3BwCmluZGV4IDAyYmE1Mjg1MzZlNGIzYzdh
NTgwOWE0ZDU2NGMxM2FiMjA0NzUwYTMuLjVmNTQ3YTZhMjFlZTQ5ZDUzMGYxZmRhOTVmYmVjZTYx
NjlmZmY3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvV2F5bGFuZERpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dheWxhbmQvV2F5bGFuZERpc3BsYXkuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPFdheWxhbmRTdXJmYWNlPiBXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU3VyZmFj
ZShjb25zdCBJbnRTaXplJiBzaXoKICAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxXYXlsYW5k
U3VyZmFjZT4od2xTdXJmYWNlLCBuYXRpdmVXaW5kb3cpOwogfQogCi1QYXNzT3duUHRyPEdMQ29u
dGV4dEVHTD4gV2F5bGFuZERpc3BsYXk6OmNyZWF0ZVNoYXJpbmdHTENvbnRleHQoKQorc3RkOjp1
bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gV2F5bGFuZERpc3BsYXk6OmNyZWF0ZVNoYXJpbmdHTENv
bnRleHQoKQogewogICAgIHN0cnVjdCB3bF9zdXJmYWNlKiB3bFN1cmZhY2UgPSB3bF9jb21wb3Np
dG9yX2NyZWF0ZV9zdXJmYWNlKG1fY29tcG9zaXRvcik7CiAgICAgRUdMTmF0aXZlV2luZG93VHlw
ZSBuYXRpdmVXaW5kb3cgPSB3bF9lZ2xfd2luZG93X2NyZWF0ZSh3bFN1cmZhY2UsIDEsIDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXls
YW5kRGlzcGxheS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9X
YXlsYW5kRGlzcGxheS5oCmluZGV4IGE1MjY4YjdmZTA0OTJiMTk2ODFmMGM2NWE2YjNhZTA3MGVj
NjRiM2IuLmQ0YmIwZmJlM2M3NGFlNGJjZWVjOGU3MmE5YmZlODdiOWFjNDZiMGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZERpc3Bs
YXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxh
bmREaXNwbGF5LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJXZWJLaXRHdGtXYXlsYW5k
Q2xpZW50UHJvdG9jb2wuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d2F5bGFuZC1j
bGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAjaW5jbHVkZSA8d2F5bGFu
ZC1lZ2wuaD4KICNpbmNsdWRlIDxFR0wvZWdsLmg+CkBAIC01MSw3ICs1MCw3IEBAIHB1YmxpYzoK
IAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXlsYW5kU3VyZmFjZT4gY3JlYXRlU3VyZmFjZShjb25z
dCBJbnRTaXplJiwgaW50IHdpZGdldElEKTsKIAotICAgIFBhc3NPd25QdHI8R0xDb250ZXh0RUdM
PiBjcmVhdGVTaGFyaW5nR0xDb250ZXh0KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4
dEVHTD4gY3JlYXRlU2hhcmluZ0dMQ29udGV4dCgpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyBj
b25zdCBzdHJ1Y3Qgd2xfcmVnaXN0cnlfbGlzdGVuZXIgbV9yZWdpc3RyeUxpc3RlbmVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5k
U3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dh
eWxhbmRTdXJmYWNlLmNwcAppbmRleCAwMmZkZmY3ZDM0MmUxZmE0N2E4NjUzMzdiNmE4NmViMjQ5
YzFjZTA3Li4xZGM3NGNlYzNlZjlkNmMxZmZmY2I5YTU4NzZlNTEyZTI4Y2IxMzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dh
eWxhbmRTdXJmYWNlLmNwcApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIFdheWxhbmRTdXJmYWNlOjpy
ZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICB3bF9lZ2xfd2luZG93X3Jlc2l6ZShtX25h
dGl2ZVdpbmRvdywgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpLCAwLCAwKTsKIH0KIAotUGFz
c093blB0cjxHTENvbnRleHRFR0w+IFdheWxhbmRTdXJmYWNlOjpjcmVhdGVHTENvbnRleHQoKQor
c3RkOjp1bmlxdWVfcHRyPEdMQ29udGV4dEVHTD4gV2F5bGFuZFN1cmZhY2U6OmNyZWF0ZUdMQ29u
dGV4dCgpCiB7CiAgICAgcmV0dXJuIEdMQ29udGV4dEVHTDo6Y3JlYXRlV2luZG93Q29udGV4dCht
X25hdGl2ZVdpbmRvdywgR0xDb250ZXh0OjpzaGFyaW5nQ29udGV4dCgpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1
cmZhY2UuaAppbmRleCBkYjdiNTI1NTE0Mzg3YjQ5ODAwM2MzNDlmZTM4OWJiZDIwMjQyZGU3Li42
OWYyMmIxY2Q2ZjNiMjZlMzViN2RkMmMyMzEwNDNjZjE4NjI2YjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFj
ZS5oCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgUExBVEZPUk0oV0FZTEFORCkKIAogI2luY2x1ZGUg
PHdheWxhbmQtY2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogI2luY2x1
ZGUgPHdheWxhbmQtZWdsLmg+CiAjaW5jbHVkZSA8RUdML2VnbHBsYXRmb3JtLmg+CkBAIC00OSw3
ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUmKTsKIAot
ICAgIFBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVHTENvbnRleHQoKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBjcmVhdGVHTENvbnRleHQoKTsKIAogICAgIHZvaWQg
cmVxdWVzdEZyYW1lKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243781</attachid>
            <date>2014-12-28 06:26:08 -0800</date>
            <delta_ts>2014-12-28 20:20:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139971-20141228232608.patch</filename>
            <type>text/plain</type>
            <size>22085</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3Nzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUwM2I2YmNjMzA1NTNj
NzRlMDRmYzE3Y2ZkMWQwZDE3OThiZGU2Ny4uYTlkODhkODY0MmIyMTM1YTA5NzlkZjg1ZjAyNzE0
ZWI4ODJhZDJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTEyLTI4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQ29udmVydCBP
d25QdHIgdG8gc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvZ3JhcGhpY3MvCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk5NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ugc3RkOjp1bmlxdWVfcHRy
PD4gYW5kIHN0ZDo6bWFrZV91bmlxdWU8PiBpbnN0ZWFkIG9mIE93blB0ci4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgorICAgICAgICAoV2ViQ29yZTo6
R2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okds
eXBoUGFnZVRyZWVOb2RlOjpnZXRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VU
cmVlTm9kZTo6cHJ1bmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBh
Z2VUcmVlTm9kZTo6cHJ1bmVGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R2x5cGhQYWdlVHJlZU5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYS9MYXllclBvb2wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYS9UaWxlQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1RpbGVDb3ZlcmFnZU1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9X
ZWJUaWxlZEJhY2tpbmdMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9E
cmF3aW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9U
ZXh0dXJlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMz
RE9wZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0Nv
bnRleHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6
Z2V0RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBo
aWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
YXlsYW5kL1dheWxhbmREaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldheWxhbmREaXNw
bGF5OjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy93YXlsYW5kL1dheWxhbmREaXNwbGF5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
d2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXlsYW5kU3Vy
ZmFjZTo6Y3JlYXRlR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1dheWxhbmRTdXJmYWNlLmg6CisKIDIwMTQtMTItMjYgIEFuZHJlYXMgS2xpbmcgIDxha2xp
bmdAYXBwbGUuY29tPgogCiAgICAgICAgIFB1cmdlIFBhc3NSZWZQdHIgZnJvbSBFbGVtZW50IGFu
ZCBFbGVtZW50UmFyZURhdGEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDdmNDBlZGVmMTg1NTExZTY2ZGE0Njg1NDUyM2M3
ODMzNjkwM2ZlMWEuLmY2N2QyNGM5OWFmNjA1ZGNhNzY2ZWZhMWI5MDAwYWFjN2NhODM2NDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fZmlsbGVkUHJpbWFy
eVBhZ2U7CiAgICAgR2x5cGhNZXRyaWNzUGFnZSBtX3ByaW1hcnlQYWdlOyAvLyBXZSBvcHRpbWl6
ZSBmb3IgdGhlIHBhZ2UgdGhhdCBjb250YWlucyBnbHlwaCBpbmRpY2VzIDAtMjU1LgotICAgIE93
blB0cjxIYXNoTWFwPGludCwgT3duUHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4gbV9wYWdlczsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SGFzaE1hcDxpbnQsIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaE1ldHJp
Y3NQYWdlPj4+IG1fcGFnZXM7CiB9OwogCiB0ZW1wbGF0ZTw+IGlubGluZSBmbG9hdCBHbHlwaE1l
dHJpY3NNYXA8ZmxvYXQ+Ojp1bmtub3duTWV0cmljcygpCkBAIC0xMDksOSArMTA5LDkgQEAgdGVt
cGxhdGU8Y2xhc3MgVD4gdHlwZW5hbWUgR2x5cGhNZXRyaWNzTWFwPFQ+OjpHbHlwaE1ldHJpY3NQ
YWdlKiBHbHlwaE1ldHJpY3NNYXAKICAgICAgICAgICAgIGlmICgocGFnZSA9IG1fcGFnZXMtPmdl
dChwYWdlTnVtYmVyKSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhZ2U7CiAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgbV9wYWdlcyA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPGludCwgT3du
UHRyPEdseXBoTWV0cmljc1BhZ2U+Pik7CisgICAgICAgICAgICBtX3BhZ2VzID0gc3RkOjptYWtl
X3VuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+Pj4o
KTsKICAgICAgICAgcGFnZSA9IG5ldyBHbHlwaE1ldHJpY3NQYWdlOwotICAgICAgICBtX3BhZ2Vz
LT5zZXQocGFnZU51bWJlciwgYWRvcHRQdHIocGFnZSkpOworICAgICAgICBtX3BhZ2VzLT5zZXQo
cGFnZU51bWJlciwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmljc1BhZ2U+KHBhZ2UpKTsKICAg
ICB9CiAKICAgICAvLyBGaWxsIGluIHRoZSB3aG9sZSBwYWdlIHdpdGggdGhlIHVua25vd24gZ2x5
cGggaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5jcHAKaW5kZXggODk2N2YyMTcxYWM2NDkyY2I1NzkxNjEw
ZDkyYmJhMzZiNGI0MmQzOC4uYWZlZDFlMWZmMDljYjc1MDYyNzA1YzUyNzU5YjM3MDdmYTljMzFl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdl
VHJlZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBo
UGFnZVRyZWVOb2RlLmNwcApAQCAtMzQyLDEwICszNDIsMTAgQEAgR2x5cGhQYWdlVHJlZU5vZGUq
IEdseXBoUGFnZVRyZWVOb2RlOjpnZXRDaGlsZChjb25zdCBGb250RGF0YSogZm9udERhdGEsIHVu
c2lnbmUKICAgICBjaGlsZC0+bV9wYWdlTnVtYmVyID0gbV9wYWdlTnVtYmVyOwogI2VuZGlmCiAg
ICAgaWYgKGZvbnREYXRhKSB7Ci0gICAgICAgIG1fY2hpbGRyZW4uc2V0KGZvbnREYXRhLCBhZG9w
dFB0cihjaGlsZCkpOworICAgICAgICBtX2NoaWxkcmVuLnNldChmb250RGF0YSwgc3RkOjp1bmlx
dWVfcHRyPEdseXBoUGFnZVRyZWVOb2RlPihjaGlsZCkpOwogICAgICAgICBmb250RGF0YS0+c2V0
TWF4R2x5cGhQYWdlVHJlZUxldmVsKHN0ZDo6bWF4KGZvbnREYXRhLT5tYXhHbHlwaFBhZ2VUcmVl
TGV2ZWwoKSwgY2hpbGQtPm1fbGV2ZWwpKTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3N5c3Rl
bUZhbGxiYWNrQ2hpbGQgPSBhZG9wdFB0cihjaGlsZCk7CisgICAgICAgIG1fc3lzdGVtRmFsbGJh
Y2tDaGlsZCA9IHN0ZDo6dW5pcXVlX3B0cjxHbHlwaFBhZ2VUcmVlTm9kZT4oY2hpbGQpOwogICAg
ICAgICBjaGlsZC0+bV9pc1N5c3RlbUZhbGxiYWNrID0gdHJ1ZTsKICAgICB9CiAgICAgY2hpbGQt
PmluaXRpYWxpemVQYWdlKGZvbnREYXRhLCBwYWdlTnVtYmVyKTsKQEAgLTM1OCw3ICszNTgsNyBA
QCB2b2lkIEdseXBoUGFnZVRyZWVOb2RlOjpwcnVuZUN1c3RvbUZvbnREYXRhKGNvbnN0IEZvbnRE
YXRhKiBmb250RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAvLyBQcnVuZSBh
bnkgYnJhbmNoIHRoYXQgY29udGFpbnMgdGhpcyBGb250RGF0YS4KLSAgICBpZiAoT3duUHRyPEds
eXBoUGFnZVRyZWVOb2RlPiBub2RlID0gbV9jaGlsZHJlbi50YWtlKGZvbnREYXRhKSkgeworICAg
IGlmIChhdXRvIG5vZGUgPSBtX2NoaWxkcmVuLnRha2UoZm9udERhdGEpKSB7CiAgICAgICAgIGlm
ICh1bnNpZ25lZCBjdXN0b21Gb250Q291bnQgPSBub2RlLT5tX2N1c3RvbUZvbnRDb3VudCArIDEp
IHsKICAgICAgICAgICAgIGZvciAoR2x5cGhQYWdlVHJlZU5vZGUqIGN1cnIgPSB0aGlzOyBjdXJy
OyBjdXJyID0gY3Vyci0+bV9wYXJlbnQpCiAgICAgICAgICAgICAgICAgY3Vyci0+bV9jdXN0b21G
b250Q291bnQgLT0gY3VzdG9tRm9udENvdW50OwpAQCAtMzgzLDcgKzM4Myw3IEBAIHZvaWQgR2x5
cGhQYWdlVHJlZU5vZGU6OnBydW5lRm9udERhdGEoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnRE
YXRhLCB1bnNpZ25lZCBsCiAgICAgICAgIG1fc3lzdGVtRmFsbGJhY2tDaGlsZC0+bV9wYWdlLT5y
ZW1vdmVGb250RGF0YUZyb21TeXN0ZW1GYWxsYmFja1BhZ2UoZm9udERhdGEpOwogCiAgICAgLy8g
UHJ1bmUgYW55IGJyYW5jaCB0aGF0IGNvbnRhaW5zIHRoaXMgRm9udERhdGEuCi0gICAgaWYgKE93
blB0cjxHbHlwaFBhZ2VUcmVlTm9kZT4gbm9kZSA9IG1fY2hpbGRyZW4udGFrZShmb250RGF0YSkp
IHsKKyAgICBpZiAoYXV0byBub2RlID0gbV9jaGlsZHJlbi50YWtlKGZvbnREYXRhKSkgewogICAg
ICAgICBpZiAodW5zaWduZWQgY3VzdG9tRm9udENvdW50ID0gbm9kZS0+bV9jdXN0b21Gb250Q291
bnQpIHsKICAgICAgICAgICAgIGZvciAoR2x5cGhQYWdlVHJlZU5vZGUqIGN1cnIgPSB0aGlzOyBj
dXJyOyBjdXJyID0gY3Vyci0+bV9wYXJlbnQpCiAgICAgICAgICAgICAgICAgY3Vyci0+bV9jdXN0
b21Gb250Q291bnQgLT0gY3VzdG9tRm9udENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmgKaW5kZXggMGFmNTI1OTI1NGIz
OWVmNzE2MzU1MDgyNWRjOGI2ODI2MGUzZGJkZC4uNzBmNDI0YmEyMWY2MTMzZGExZDFkOGZiNDYw
N2U3OWFiNjAwZTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR2x5cGhQYWdlVHJlZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiR2x5
cGhQYWdlLmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBAIC0xMTcsNyArMTE2LDcgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgSGFzaE1hcDxpbnQsIEdseXBoUGFnZVRyZWVOb2RlKj4qIHJvb3RzOwogICAg
IHN0YXRpYyBHbHlwaFBhZ2VUcmVlTm9kZSogcGFnZVplcm9Sb290OwogCi0gICAgdHlwZWRlZiBI
YXNoTWFwPGNvbnN0IEZvbnREYXRhKiwgT3duUHRyPEdseXBoUGFnZVRyZWVOb2RlPj4gR2x5cGhQ
YWdlVHJlZU5vZGVNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IEZvbnREYXRhKiwgc3Rk
Ojp1bmlxdWVfcHRyPEdseXBoUGFnZVRyZWVOb2RlPj4gR2x5cGhQYWdlVHJlZU5vZGVNYXA7CiAK
ICAgICBHbHlwaFBhZ2VUcmVlTm9kZU1hcCBtX2NoaWxkcmVuOwogICAgIEdseXBoUGFnZVRyZWVO
b2RlKiBtX3BhcmVudDsKQEAgLTEyNSw3ICsxMjQsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVk
IG1fbGV2ZWwgOiAzMTsKICAgICBib29sIG1faXNTeXN0ZW1GYWxsYmFjayA6IDE7CiAgICAgdW5z
aWduZWQgbV9jdXN0b21Gb250Q291bnQ7Ci0gICAgT3duUHRyPEdseXBoUGFnZVRyZWVOb2RlPiBt
X3N5c3RlbUZhbGxiYWNrQ2hpbGQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdseXBoUGFnZVRyZWVO
b2RlPiBtX3N5c3RlbUZhbGxiYWNrQ2hpbGQ7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdW5zaWdu
ZWQgbV9wYWdlTnVtYmVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc0NvbnRleHQuaAppbmRleCBjZTI4YjQ0ZWU2NjAwMDMzZDY4ZWQ5NTRmM2QxYjg4
NTJmNzVlMGQyLi41MWVlNTZhMzI3MDRhYjkxMTk3MDQyZTkwYjdkMTQ0NzA5NjNhNWI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
aApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJQYXR0ZXJu
LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KIAogI2lmIFVTRShDRykKIHR5cGVkZWYgc3RydWN0IENHQ29udGV4dCBQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dDsKQEAgLTUyMiw3ICs1MjEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICBESUJQaXhlbERhdGEgbV9waXhlbERhdGE7CiAgICAgICAgIH07CiAKLSAgICAg
ICAgUGFzc093blB0cjxXaW5kb3dzQml0bWFwPiBjcmVhdGVXaW5kb3dzQml0bWFwKGNvbnN0IElu
dFNpemUmKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFdpbmRvd3NCaXRtYXA+IGNyZWF0ZVdp
bmRvd3NCaXRtYXAoY29uc3QgSW50U2l6ZSYpOwogICAgICAgICAvLyBUaGUgYml0bWFwIHNob3Vs
ZCBiZSBub24tcHJlbXVsdGlwbGllZC4KICAgICAgICAgdm9pZCBkcmF3V2luZG93c0JpdG1hcChX
aW5kb3dzQml0bWFwKiwgY29uc3QgSW50UG9pbnQmKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmgKaW5kZXggNzEw
OGJlOGRhNjMzYTJiMTBmMTkwMmU5ZmNlOTljM2QwY2VlNjJjYy4uYWM5ZGRjMjk4Y2IwNDY3NGNi
ODkyN2NjOTAwNzMwMjNiNDA3MjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5oCkBAIC0xMTAyLDE0ICsxMTAyLDE0IEBA
IHByaXZhdGU6CiAKICAgICBBTkdMRVdlYktpdEJyaWRnZSBtX2NvbXBpbGVyOwogCi0gICAgT3du
UHRyPFNoYWRlck5hbWVIYXNoPiBuYW1lSGFzaE1hcEZvclNoYWRlcnM7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFNoYWRlck5hbWVIYXNoPiBuYW1lSGFzaE1hcEZvclNoYWRlcnM7CiAKICNpZiAoKFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShXSU4pKSAmJiBVU0UoT1BF
TkdMX0VTXzIpKQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xFUzsKLSAgICBP
d25QdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IG1fZXh0ZW5zaW9uczsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RXh0ZW5zaW9uczNET3BlbkdMRVM+IG1fZXh0ZW5zaW9uczsKICNlbHNlCiAgICAgZnJp
ZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTDsKLSAgICBPd25QdHI8RXh0ZW5zaW9uczNET3Bl
bkdMPiBtX2V4dGVuc2lvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5H
TD4gbV9leHRlbnNpb25zOwogI2VuZGlmCiAgICAgZnJpZW5kIGNsYXNzIEV4dGVuc2lvbnMzRE9w
ZW5HTENvbW1vbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAppbmRleCAzODdlZGFkZjQ2N2ZkOTA4
YTI2NjYwNWUwODQxM2EwYjhiMTc5YjAwLi45ZDcwZWU2OWUwMjFlZDVlYmVlYThlOGJjYjBlZDEx
N2I4ZjgwYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMjIsNyArMjIsNiBAQAogCiAj
aW5jbHVkZSAiR0xDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSKQogI2lu
Y2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKaW5kZXggMzc1ZTlhMDM5ODRjMTEw
YzQ2YTVlYjU1YjhiZjJhMTQ1YjdmYjE4Zi4uN2JlNmE5ZjY5ZmExMjcwNWQ1MDVmZjNkNmJjMDUz
ZWRiNWM1NDM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dy
YXBoaWNzTGF5ZXIuaApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybUxheWVyLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtT3BlcmF0aW9ucy5o
IgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VP
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9w
ZXJhdGlvbi5oCmluZGV4IDZlYTYwNzkyODM2ZWE5ZTg2MGRlZTM5OTQxYTNlM2ZjMzYwYmE0YzQu
LjIwOWVjZTJiNGZjYjIyZTVhNzRiZDc5ZjhmMDNlMjQwODkzYTAzYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01hc2tJbWFnZU9wZXJhdGlvbi5oCkBA
IC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFn
ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9vbC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvTGF5ZXJQb29sLmgKaW5kZXggYjM3ZjcyYzEwYmNi
MzU0MzUyODI4ODVhNDFhZThmYTZkNmRmYWFhMS4uNTM1MWRjNmRmMDBjMWQwMTJkY2UzYTJiMTNj
MzI4NTM2YWU1MWVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvTGF5ZXJQb29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvTGF5ZXJQb29sLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9UaWxlQ29udHJvbGxlci5oCmluZGV4IDE1MjljZWQ2ODcxNWU3Y2ZlZGU5YTcwMmZlY2Y1YjRm
YWJlYTYwMDEuLjdlYzE4MDBkNzA4MThiYjY5ZDdkNjFlZTU4NTE4YjBiZTc1OTYxYWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xs
ZXIuaApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL1RpbGVDb3ZlcmFnZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvVGlsZUNvdmVyYWdlTWFwLmgKaW5kZXggMmI5OGFmY2FmMzdmMDI1ZDQxOGIwMzhmMGFjOWEz
N2VjOWU2MDJiYS4uZTRlNTViNTU4MWYyNWU5NDU1MmEwNjc4OWNkZjQyYjcxZTE3MDZmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVyYWdl
TWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvdmVy
YWdlTWFwLmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXIuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUNBTGF5ZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1dlYlRpbGVkQmFja2luZ0xheWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZWRCYWNraW5nTGF5ZXIu
aAppbmRleCA0YTIyN2JlYzZmNTVkMmM5ZTY2NjJmMDAwNzU0MTI5ZTI0ZTFjNzc1Li4wZmNiOTdi
OTMzZWViOTRhMTY4Nzc0NjNlMjliNzA1YWUwN2U2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZWRCYWNraW5nTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvV2ViVGlsZWRCYWNraW5n
TGF5ZXIuaApAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBXZWJUaWxlZEJhY2tpbmdMYXllcl9o
CiAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZS5oPgotI2ltcG9ydCA8d3RmL093blB0
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVmZmVyLmgKaW5kZXgg
MjJkOWQ0YmY1MjA4MmY2YTYxY2FmNmY0OGNkZmFmODIwOTI2YzZiOC4uOWIzMTE5Njc4OGJmNDc4
NzQ5YzQyZWIwY2Y1OTEyYjYzZTg2ZjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ncHUvRHJhd2luZ0J1ZmZlci5oCkBAIC0zNyw4ICszNyw2IEBACiAj
aW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+
Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5jcHAKaW5k
ZXggMzFhYWE2M2VlYmI4YjlkM2E0NWUxMDczYzZjODU3NDZhYzZjYmIzOS4uNTNlYzFkMTc5YzJh
M2EyNWUyM2E2OWFlMzMyYjM2MWEyZjA3ZjMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmNwcApAQCAtNDMsMTEgKzQzLDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotVGV4dHVyZTo6VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgUGFzc093blB0cjxWZWN0b3I8dW5zaWduZWQgaW50Pj4gdGlsZVRleHR1cmVJZHMs
IEZvcm1hdCBmb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1heFRleHR1cmVTaXpl
KQorVGV4dHVyZTo6VGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgc3RkOjp1bmlx
dWVfcHRyPFZlY3Rvcjx1bnNpZ25lZD4+IHRpbGVUZXh0dXJlSWRzLCBGb3JtYXQgZm9ybWF0LCBp
bnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXhUZXh0dXJlU2l6ZSkKICAgICA6IG1fY29udGV4
dChjb250ZXh0KQogICAgICwgbV9mb3JtYXQoZm9ybWF0KQogICAgICwgbV90aWxlcyhJbnRTaXpl
KG1heFRleHR1cmVTaXplLCBtYXhUZXh0dXJlU2l6ZSksIEludFNpemUod2lkdGgsIGhlaWdodCks
IHRydWUpCi0gICAgLCBtX3RpbGVUZXh0dXJlSWRzKHRpbGVUZXh0dXJlSWRzKQorICAgICwgbV90
aWxlVGV4dHVyZUlkcyhXVEY6Om1vdmUodGlsZVRleHR1cmVJZHMpKQogewogfQogCkBAIC05NCw3
ICs5NCw3IEBAIFBhc3NSZWZQdHI8VGV4dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBGb3JtYXQgZm9ybWF0LCBpCiAgICAgICAgIG51bVRpbGVzID0gMDsK
ICAgICB9CiAKLSAgICBPd25QdHI8VmVjdG9yPHVuc2lnbmVkIGludD4+IHRleHR1cmVJZHMgPSBh
ZG9wdFB0cihuZXcgVmVjdG9yPHVuc2lnbmVkIGludD4obnVtVGlsZXMpKTsKKyAgICBhdXRvIHRl
eHR1cmVJZHMgPSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3Rvcjx1bnNpZ25lZD4+KG51bVRpbGVzKTsK
ICAgICB0ZXh0dXJlSWRzLT5maWxsKDAsIG51bVRpbGVzKTsKIAogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbnVtVGlsZXM7IGkrKykgewpAQCAtMTIwLDcgKzEyMCw3IEBAIFBhc3NSZWZQdHI8VGV4
dHVyZT4gVGV4dHVyZTo6Y3JlYXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBGb3JtYXQg
Zm9ybWF0LCBpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZUJv
dW5kc1dpdGhCb3JkZXIuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgZ2xGb3JtYXQsIGdsVHlwZSk7CiAgICAgfQotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgVGV4dHVyZShjb250ZXh0LCB0ZXh0dXJlSWRzLnJlbGVhc2UoKSwgZm9ybWF0LCB3aWR0
aCwgaGVpZ2h0LCBtYXhUZXh0dXJlU2l6ZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4
dHVyZShjb250ZXh0LCBXVEY6Om1vdmUodGV4dHVyZUlkcyksIGZvcm1hdCwgd2lkdGgsIGhlaWdo
dCwgbWF4VGV4dHVyZVNpemUpKTsKIH0KIAogdGVtcGxhdGUgPGJvb2wgc3dpenpsZT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCmluZGV4IDZlOTNi
OTFjMjNiMmM2YWVkMGMyNDZmMmM3ZWExMGVjZDAzMmRlNzcuLjNhYTU1ZjgyMTcxMDcxMDZhNTYx
Mzc2ZmFmZWU3YmUyNjJjNDQ1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3B1L1RleHR1cmUuaApAQCAtMzIsOCArMzIsNiBAQAogI2RlZmluZSBUZXh0dXJlX2gK
IAogI2luY2x1ZGUgIlRpbGluZ0RhdGEuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC01NCwxMSAr
NTIsMTEgQEAgcHVibGljOgogICAgIEZvcm1hdCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zv
cm1hdDsgfQogICAgIGNvbnN0IFRpbGluZ0RhdGEmIHRpbGVzKCkgY29uc3QgeyByZXR1cm4gbV90
aWxlczsgfQogcHJpdmF0ZToKLSAgICBUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFzc093
blB0cjxWZWN0b3I8dW5zaWduZWQgaW50Pj4gdGlsZVRleHR1cmVJZHMsIEZvcm1hdCBmb3JtYXQs
IGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1heFRleHR1cmVTaXplKTsKKyAgICBUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEKiwgc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjx1bnNpZ25lZD4+IHRp
bGVUZXh0dXJlSWRzLCBGb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IG1heFRleHR1
cmVTaXplKTsKICAgICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEZvcm1hdCBt
X2Zvcm1hdDsKICAgICBUaWxpbmdEYXRhIG1fdGlsZXM7Ci0gICAgT3duUHRyPFZlY3Rvcjx1bnNp
Z25lZCBpbnQ+PiBtX3RpbGVUZXh0dXJlSWRzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8
dW5zaWduZWQ+PiBtX3RpbGVUZXh0dXJlSWRzOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5H
TC5oCmluZGV4IDM0ZDAyOTY1NjYxODc2YzNkZWNiN2E0ZTc2MzNlNWU3NTExMTBiNTIuLjQwOTdl
MTFlNDYzMmQ1ZjAwYjBkZjExZGU2MzVmYjEwODExNzg3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMLmgKQEAgLTM3LDYgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRXh0ZW5z
aW9uczNET3BlbkdMIDogcHVibGljIEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbiB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CisgICAgZXhwbGljaXQgRXh0ZW5zaW9uczNE
T3BlbkdMKEdyYXBoaWNzQ29udGV4dDNEKik7CiAgICAgdmlydHVhbCB+RXh0ZW5zaW9uczNET3Bl
bkdMKCk7CiAKICAgICAvLyBFeHRlbnNpb25zM0QgbWV0aG9kcy4KQEAgLTU5LDcgKzYwLDYgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBp
bnN0YW50aWF0ZWQgYnkgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb25zLgogICAgIGZy
aWVuZCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKLSAgICBFeHRlbnNpb25zM0RPcGVuR0woR3Jh
cGhpY3NDb250ZXh0M0QqKTsKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihj
b25zdCBXVEY6OlN0cmluZyYpOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEV4dGVuc2lvbnMoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHQzRE9wZW5HTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCmluZGV4IGVjZDY4NzYxYjFhYmM0
NGJjNDU2NWFmYWJlMzhiNWU0ZWQ4NGM4N2IuLmZlYTEyMTllNDEyMWMyMDE4NmUyZDhmYzA4MDAy
M2U5MWEwZTYxOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcApAQCAt
Mzc2LDcgKzM3Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNsZWFyRGVwdGgoR0MzRGNs
YW1wZiBkZXB0aCkKIEV4dGVuc2lvbnMzRCogR3JhcGhpY3NDb250ZXh0M0Q6OmdldEV4dGVuc2lv
bnMoKQogewogICAgIGlmICghbV9leHRlbnNpb25zKQotICAgICAgICBtX2V4dGVuc2lvbnMgPSBh
ZG9wdFB0cihuZXcgRXh0ZW5zaW9uczNET3BlbkdMKHRoaXMpKTsKKyAgICAgICAgbV9leHRlbnNp
b25zID0gc3RkOjptYWtlX3VuaXF1ZTxFeHRlbnNpb25zM0RPcGVuR0w+KHRoaXMpOwogICAgIHJl
dHVybiBtX2V4dGVuc2lvbnMuZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0M0RPcGVuR0xDb21tb24uY3BwCmluZGV4IGVhN2MzMzMzNmQ5OTYwNjhhNmE4MTMzMmUyNjdk
YTgzY2QyZjU4YmQuLmU0YTgwNWNhMzdkNTdjZGNmYTk4ZGIxNmViMjE1NjI2ZTgzZjdiZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGlj
c0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcApAQCAtNTY2
LDcgKzU2Niw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OmNvbXBpbGVTaGFkZXIoUGxhdGZv
cm0zRE9iamVjdCBzaGFkZXIpCiAgICAgQU5HTEVSZXNvdXJjZXMuSGFzaEZ1bmN0aW9uID0gbmFt
ZUhhc2hGb3JTaGFkZXI7CiAKICAgICBpZiAoIW5hbWVIYXNoTWFwRm9yU2hhZGVycykKLSAgICAg
ICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gYWRvcHRQdHIobmV3IFNoYWRlck5hbWVIYXNoKTsK
KyAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFkZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJO
YW1lSGFzaD4oKTsKICAgICBjdXJyZW50TmFtZUhhc2hNYXBGb3JTaGFkZXIgPSBuYW1lSGFzaE1h
cEZvclNoYWRlcnMuZ2V0KCk7CiAgICAgbV9jb21waWxlci5zZXRSZXNvdXJjZXMoQU5HTEVSZXNv
dXJjZXMpOwogCkBAIC04NzMsNyArODczLDcgQEAgU3RyaW5nIEdyYXBoaWNzQ29udGV4dDNEOjpt
YXBwZWRTeW1ib2xOYW1lKFBsYXRmb3JtM0RPYmplY3QgcHJvZ3JhbSwgQU5HTEVTaGFkZXIKICAg
ICAgICAgLy8gQXR0cmlidXRlcyBhcmUgYSBzcGVjaWFsIGNhc2U6IHRoZXkgbWF5IGJlIHJlcXVl
c3RlZCBiZWZvcmUgYW55IHNoYWRlcnMgaGF2ZSBiZWVuIGNvbXBpbGVkLAogICAgICAgICAvLyBh
bmQgYXJlbid0IGV2ZW4gcmVxdWlyZWQgdG8gYmUgdXNlZCBpbiBhbnkgc2hhZGVyIHByb2dyYW0u
CiAgICAgICAgIGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICAgICAgbmFtZUhh
c2hNYXBGb3JTaGFkZXJzID0gYWRvcHRQdHIobmV3IFNoYWRlck5hbWVIYXNoKTsKKyAgICAgICAg
ICAgIG5hbWVIYXNoTWFwRm9yU2hhZGVycyA9IHN0ZDo6bWFrZV91bmlxdWU8U2hhZGVyTmFtZUhh
c2g+KCk7CiAgICAgICAgIGN1cnJlbnROYW1lSGFzaE1hcEZvclNoYWRlciA9IG5hbWVIYXNoTWFw
Rm9yU2hhZGVycy5nZXQoKTsKIAogICAgICAgICBTdHJpbmcgZ2VuZXJhdGVkTmFtZSA9IGdlbmVy
YXRlSGFzaGVkTmFtZShuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRGlzcGxheS5jcHAKaW5kZXggMDJiYTUyODUz
NmU0YjNjN2E1ODA5YTRkNTY0YzEzYWIyMDQ3NTBhMy4uNWY1NDdhNmEyMWVlNDlkNTMwZjFmZGE5
NWZiZWNlNjE2OWZmZjc5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2F5bGFuZC9XYXlsYW5kRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRGlzcGxheS5jcHAKQEAgLTEzMSw3ICsxMzEs
NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8V2F5bGFuZFN1cmZhY2U+IFdheWxhbmREaXNwbGF5OjpjcmVh
dGVTdXJmYWNlKGNvbnN0IEludFNpemUmIHNpegogICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PFdheWxhbmRTdXJmYWNlPih3bFN1cmZhY2UsIG5hdGl2ZVdpbmRvdyk7CiB9CiAKLVBhc3NPd25Q
dHI8R0xDb250ZXh0RUdMPiBXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU2hhcmluZ0dMQ29udGV4dCgp
CitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBXYXlsYW5kRGlzcGxheTo6Y3JlYXRlU2hh
cmluZ0dMQ29udGV4dCgpCiB7CiAgICAgc3RydWN0IHdsX3N1cmZhY2UqIHdsU3VyZmFjZSA9IHds
X2NvbXBvc2l0b3JfY3JlYXRlX3N1cmZhY2UobV9jb21wb3NpdG9yKTsKICAgICBFR0xOYXRpdmVX
aW5kb3dUeXBlIG5hdGl2ZVdpbmRvdyA9IHdsX2VnbF93aW5kb3dfY3JlYXRlKHdsU3VyZmFjZSwg
MSwgMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1dheWxhbmREaXNwbGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
YXlsYW5kL1dheWxhbmREaXNwbGF5LmgKaW5kZXggYTUyNjhiN2ZlMDQ5MmIxOTY4MWYwYzY1YTZi
M2FlMDcwZWM2NGIzYi4uZDRiYjBmYmUzYzc0YWU0YmNlZWM4ZTcyYTliZmU4N2I5YWM0NmIwZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXls
YW5kRGlzcGxheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxh
bmQvV2F5bGFuZERpc3BsYXkuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIldlYktpdEd0
a1dheWxhbmRDbGllbnRQcm90b2NvbC5oIgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3
YXlsYW5kLWNsaWVudC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpbmNsdWRl
IDx3YXlsYW5kLWVnbC5oPgogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KQEAgLTUxLDcgKzUwLDcgQEAg
cHVibGljOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdheWxhbmRTdXJmYWNlPiBjcmVhdGVTdXJm
YWNlKGNvbnN0IEludFNpemUmLCBpbnQgd2lkZ2V0SUQpOwogCi0gICAgUGFzc093blB0cjxHTENv
bnRleHRFR0w+IGNyZWF0ZVNoYXJpbmdHTENvbnRleHQoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
R0xDb250ZXh0RUdMPiBjcmVhdGVTaGFyaW5nR0xDb250ZXh0KCk7CiAKIHByaXZhdGU6CiAgICAg
c3RhdGljIGNvbnN0IHN0cnVjdCB3bF9yZWdpc3RyeV9saXN0ZW5lciBtX3JlZ2lzdHJ5TGlzdGVu
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dheWxhbmRTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwCmluZGV4IDAyZmRmZjdkMzQyZTFmYTQ3YTg2NTMzN2I2
YTg2ZWIyNDljMWNlMDcuLjFkYzc0Y2VjM2VmOWQ2YzFmZmZjYjlhNTg3NmU1MTJlMjhjYjEzNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5
bGFuZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dh
eWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgV2F5bGFuZFN1
cmZhY2U6OnJlc2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIHdsX2VnbF93aW5kb3dfcmVz
aXplKG1fbmF0aXZlV2luZG93LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIDAsIDApOwog
fQogCi1QYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gV2F5bGFuZFN1cmZhY2U6OmNyZWF0ZUdMQ29u
dGV4dCgpCitzdGQ6OnVuaXF1ZV9wdHI8R0xDb250ZXh0RUdMPiBXYXlsYW5kU3VyZmFjZTo6Y3Jl
YXRlR0xDb250ZXh0KCkKIHsKICAgICByZXR1cm4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5kb3dD
b250ZXh0KG1fbmF0aXZlV2luZG93LCBHTENvbnRleHQ6OnNoYXJpbmdDb250ZXh0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXls
YW5kU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9X
YXlsYW5kU3VyZmFjZS5oCmluZGV4IGRiN2I1MjU1MTQzODdiNDk4MDAzYzM0OWZlMzg5YmJkMjAy
NDJkZTcuLjY5ZjIyYjFjZDZmM2IyNmUzNWI3ZGQyYzIzMTA0M2NmMTg2MjZiNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZh
Y2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxh
bmRTdXJmYWNlLmgKQEAgLTI5LDcgKzI5LDYgQEAKICNpZiBQTEFURk9STShXQVlMQU5EKQogCiAj
aW5jbHVkZSA8d2F5bGFuZC1jbGllbnQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
CiAjaW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KICNpbmNsdWRlIDxFR0wvZWdscGxhdGZvcm0uaD4K
QEAgLTQ5LDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZXNpemUoY29uc3QgSW50U2l6
ZSYpOwogCi0gICAgUGFzc093blB0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUdMQ29udGV4dCgpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZUdMQ29udGV4dCgpOwogCiAg
ICAgdm9pZCByZXF1ZXN0RnJhbWUoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243788</attachid>
            <date>2014-12-28 20:19:03 -0800</date>
            <delta_ts>2014-12-28 22:24:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139971-20141229131904.patch</filename>
            <type>text/plain</type>
            <size>24172</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3Nzg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDBkMzVkMDk1ZjBiY2Nl
ZmEwZGYyYmMwNGZjMDYzYzVmMWNkMWFhYy4uYThlM2ZmYzdhMjFiMWE4NjQ3N2JiZTZmZDU3ODRj
Yzc5Y2M1NTUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE0LTEyLTI4ICBHeXV5
b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgQ29udmVydCBP
d25QdHIgdG8gc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvZ3JhcGhpY3MvCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzk5NzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBVc2Ugc3RkOjp1bmlxdWVfcHRyPD4g
YW5kIHN0ZDo6bWFrZV91bmlxdWU8PiBpbnN0ZWFkIG9mIE93blB0ci4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01hcC5oOgorICAgICAgICAoV2ViQ29yZTo6R2x5
cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xvd0Nhc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdseXBo
UGFnZVRyZWVOb2RlOjpnZXRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VUcmVl
Tm9kZTo6cHJ1bmVDdXN0b21Gb250RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpHbHlwaFBhZ2VU
cmVlTm9kZTo6cHJ1bmVGb250RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR2x5
cGhQYWdlVHJlZU5vZGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS9MYXllclBvb2wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jYS9UaWxlQ29udHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1Rp
bGVDb3ZlcmFnZU1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9XZWJU
aWxlZEJhY2tpbmdMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3
aW5nQnVmZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0
dXJlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0
RXh0ZW5zaW9ucyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNz
Q29udGV4dDNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29u
dGV4dDNEOjpjb21waWxlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjptYXBwZWRTeW1ib2xOYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXls
YW5kL1dheWxhbmREaXNwbGF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldheWxhbmREaXNwbGF5
OjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
YXlsYW5kL1dheWxhbmREaXNwbGF5Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5
bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXYXlsYW5kU3VyZmFj
ZTo6Y3JlYXRlR0xDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dheWxhbmRTdXJmYWNlLmg6CisKIDIwMTQtMTItMjggIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFw
cGxlLmNvbT4KIAogICAgICAgICBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhNZXRyaWNzTWFwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaAppbmRleCA3ZjQwZWRlZjE4NTUx
MWU2NmRhNDY4NTQ1MjNjNzgzMzY5MDNmZTFhLi5iM2NkZjQ5NjQ1MTJmZmRkNDM1MjljMTkwNjRl
ZjAyODNhY2UzOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaE1ldHJpY3NNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9HbHlwaE1ldHJpY3NNYXAuaApAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBtX2ZpbGxlZFByaW1hcnlQYWdlOwogICAgIEdseXBoTWV0cmljc1BhZ2UgbV9wcmltYXJ5UGFn
ZTsgLy8gV2Ugb3B0aW1pemUgZm9yIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgZ2x5cGggaW5kaWNl
cyAwLTI1NS4KLSAgICBPd25QdHI8SGFzaE1hcDxpbnQsIE93blB0cjxHbHlwaE1ldHJpY3NQYWdl
Pj4+IG1fcGFnZXM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhhc2hNYXA8aW50LCBzdGQ6OnVuaXF1
ZV9wdHI8R2x5cGhNZXRyaWNzUGFnZT4+PiBtX3BhZ2VzOwogfTsKIAogdGVtcGxhdGU8PiBpbmxp
bmUgZmxvYXQgR2x5cGhNZXRyaWNzTWFwPGZsb2F0Pjo6dW5rbm93bk1ldHJpY3MoKQpAQCAtMTA1
LDEzICsxMDUsMTIgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gdHlwZW5hbWUgR2x5cGhNZXRyaWNzTWFw
PFQ+OjpHbHlwaE1ldHJpY3NQYWdlKiBHbHlwaE1ldHJpY3NNYXAKICAgICAgICAgcGFnZSA9ICZt
X3ByaW1hcnlQYWdlOwogICAgICAgICBtX2ZpbGxlZFByaW1hcnlQYWdlID0gdHJ1ZTsKICAgICB9
IGVsc2UgewotICAgICAgICBpZiAobV9wYWdlcykgewotICAgICAgICAgICAgaWYgKChwYWdlID0g
bV9wYWdlcy0+Z2V0KHBhZ2VOdW1iZXIpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFnZTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3BhZ2VzID0gYWRvcHRQdHIobmV3IEhhc2hN
YXA8aW50LCBPd25QdHI8R2x5cGhNZXRyaWNzUGFnZT4+KTsKLSAgICAgICAgcGFnZSA9IG5ldyBH
bHlwaE1ldHJpY3NQYWdlOwotICAgICAgICBtX3BhZ2VzLT5zZXQocGFnZU51bWJlciwgYWRvcHRQ
dHIocGFnZSkpOworICAgICAgICBpZiAoIW1fcGFnZXMpCisgICAgICAgICAgICBtX3BhZ2VzID0g
c3RkOjptYWtlX3VuaXF1ZTxIYXNoTWFwPGludCwgc3RkOjp1bmlxdWVfcHRyPEdseXBoTWV0cmlj
c1BhZ2U+Pj4oKTsKKyAgICAgICAgYXV0byYgcGFnZUluTWFwID0gbV9wYWdlcy0+YWRkKHBhZ2VO
dW1iZXIsIG51bGxwdHIpLml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgaWYgKCFwYWdlSW5NYXAp
CisgICAgICAgICAgICBwYWdlSW5NYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPEdseXBoTWV0cmljc1Bh
Z2U+KCk7CisgICAgICAgIHBhZ2UgPSBwYWdlSW5NYXAuZ2V0KCk7CiAgICAgfQogCiAgICAgLy8g
RmlsbCBpbiB0aGUgd2hvbGUgcGFnZSB3aXRoIHRoZSB1bmtub3duIGdseXBoIGluZm9ybWF0aW9u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdl
VHJlZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQYWdl
VHJlZU5vZGUuY3BwCmluZGV4IDg5NjdmMjE3MWFjNjQ5MmNiNTc5MTYxMGQ5MmJiYTM2YjRiNDJk
MzguLmZmMDkxYjNlMjMzYTczY2MxZDEwZTE2YjE1NmE4YzNlZTkwNmY0MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFBhZ2VUcmVlTm9kZS5j
cHAKQEAgLTMzMCw5ICszMzAsMTQgQEAgR2x5cGhQYWdlVHJlZU5vZGUqIEdseXBoUGFnZVRyZWVO
b2RlOjpnZXRDaGlsZChjb25zdCBGb250RGF0YSogZm9udERhdGEsIHVuc2lnbmUKICAgICBpZiAo
R2x5cGhQYWdlVHJlZU5vZGUqIGZvdW5kQ2hpbGQgPSBmb250RGF0YSA/IG1fY2hpbGRyZW4uZ2V0
KGZvbnREYXRhKSA6IG1fc3lzdGVtRmFsbGJhY2tDaGlsZC5nZXQoKSkKICAgICAgICAgcmV0dXJu
IGZvdW5kQ2hpbGQ7CiAKLSAgICBHbHlwaFBhZ2VUcmVlTm9kZSogY2hpbGQgPSBuZXcgR2x5cGhQ
YWdlVHJlZU5vZGU7CisgICAgYXV0byYgY2hpbGQgPSBmb250RGF0YSA/IG1fY2hpbGRyZW4uYWRk
KGZvbnREYXRhLCBudWxscHRyKS5pdGVyYXRvci0+dmFsdWUgOiBtX3N5c3RlbUZhbGxiYWNrQ2hp
bGQ7CisgICAgaWYgKGNoaWxkKQorICAgICAgICByZXR1cm4gY2hpbGQuZ2V0KCk7CisgICAgCisg
ICAgY2hpbGQgPSBzdGQ6Om1ha2VfdW5pcXVlPEdseXBoUGFnZVRyZWVOb2RlPigpOwogICAgIGNo
aWxkLT5tX3BhcmVudCA9IHRoaXM7CiAgICAgY2hpbGQtPm1fbGV2ZWwgPSBtX2xldmVsICsgMTsK
KwogICAgIGlmIChmb250RGF0YSAmJiBmb250RGF0YS0+aXNDdXN0b21Gb250KCkpIHsKICAgICAg
ICAgZm9yIChHbHlwaFBhZ2VUcmVlTm9kZSogY3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJy
LT5tX3BhcmVudCkKICAgICAgICAgICAgIGN1cnItPm1fY3VzdG9tRm9udENvdW50Kys7CkBAIC0z
NDIsMTQgKzM0NywxNCBAQCBHbHlwaFBhZ2VUcmVlTm9kZSogR2x5cGhQYWdlVHJlZU5vZGU6Omdl
dENoaWxkKGNvbnN0IEZvbnREYXRhKiBmb250RGF0YSwgdW5zaWduZQogICAgIGNoaWxkLT5tX3Bh
Z2VOdW1iZXIgPSBtX3BhZ2VOdW1iZXI7CiAjZW5kaWYKICAgICBpZiAoZm9udERhdGEpIHsKLSAg
ICAgICAgbV9jaGlsZHJlbi5zZXQoZm9udERhdGEsIGFkb3B0UHRyKGNoaWxkKSk7CisgICAgICAg
IG1fY2hpbGRyZW4uc2V0KGZvbnREYXRhLCBXVEY6Om1vdmUoY2hpbGQpKTsKICAgICAgICAgZm9u
dERhdGEtPnNldE1heEdseXBoUGFnZVRyZWVMZXZlbChzdGQ6Om1heChmb250RGF0YS0+bWF4R2x5
cGhQYWdlVHJlZUxldmVsKCksIGNoaWxkLT5tX2xldmVsKSk7CiAgICAgfSBlbHNlIHsKLSAgICAg
ICAgbV9zeXN0ZW1GYWxsYmFja0NoaWxkID0gYWRvcHRQdHIoY2hpbGQpOworICAgICAgICBtX3N5
c3RlbUZhbGxiYWNrQ2hpbGQgPSBXVEY6Om1vdmUoY2hpbGQpOwogICAgICAgICBjaGlsZC0+bV9p
c1N5c3RlbUZhbGxiYWNrID0gdHJ1ZTsKICAgICB9CiAgICAgY2hpbGQtPmluaXRpYWxpemVQYWdl
KGZvbnREYXRhLCBwYWdlTnVtYmVyKTsKLSAgICByZXR1cm4gY2hpbGQ7CisgICAgcmV0dXJuIGNo
aWxkLmdldCgpOwogfQogCiB2b2lkIEdseXBoUGFnZVRyZWVOb2RlOjpwcnVuZUN1c3RvbUZvbnRE
YXRhKGNvbnN0IEZvbnREYXRhKiBmb250RGF0YSkKQEAgLTM1OCw3ICszNjMsNyBAQCB2b2lkIEds
eXBoUGFnZVRyZWVOb2RlOjpwcnVuZUN1c3RvbUZvbnREYXRhKGNvbnN0IEZvbnREYXRhKiBmb250
RGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAvLyBQcnVuZSBhbnkgYnJhbmNo
IHRoYXQgY29udGFpbnMgdGhpcyBGb250RGF0YS4KLSAgICBpZiAoT3duUHRyPEdseXBoUGFnZVRy
ZWVOb2RlPiBub2RlID0gbV9jaGlsZHJlbi50YWtlKGZvbnREYXRhKSkgeworICAgIGlmIChhdXRv
IG5vZGUgPSBtX2NoaWxkcmVuLnRha2UoZm9udERhdGEpKSB7CiAgICAgICAgIGlmICh1bnNpZ25l
ZCBjdXN0b21Gb250Q291bnQgPSBub2RlLT5tX2N1c3RvbUZvbnRDb3VudCArIDEpIHsKICAgICAg
ICAgICAgIGZvciAoR2x5cGhQYWdlVHJlZU5vZGUqIGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJyID0g
Y3Vyci0+bV9wYXJlbnQpCiAgICAgICAgICAgICAgICAgY3Vyci0+bV9jdXN0b21Gb250Q291bnQg
LT0gY3VzdG9tRm9udENvdW50OwpAQCAtMzgzLDcgKzM4OCw3IEBAIHZvaWQgR2x5cGhQYWdlVHJl
ZU5vZGU6OnBydW5lRm9udERhdGEoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnREYXRhLCB1bnNp
Z25lZCBsCiAgICAgICAgIG1fc3lzdGVtRmFsbGJhY2tDaGlsZC0+bV9wYWdlLT5yZW1vdmVGb250
RGF0YUZyb21TeXN0ZW1GYWxsYmFja1BhZ2UoZm9udERhdGEpOwogCiAgICAgLy8gUHJ1bmUgYW55
IGJyYW5jaCB0aGF0IGNvbnRhaW5zIHRoaXMgRm9udERhdGEuCi0gICAgaWYgKE93blB0cjxHbHlw
aFBhZ2VUcmVlTm9kZT4gbm9kZSA9IG1fY2hpbGRyZW4udGFrZShmb250RGF0YSkpIHsKKyAgICBp
ZiAoYXV0byBub2RlID0gbV9jaGlsZHJlbi50YWtlKGZvbnREYXRhKSkgewogICAgICAgICBpZiAo
dW5zaWduZWQgY3VzdG9tRm9udENvdW50ID0gbm9kZS0+bV9jdXN0b21Gb250Q291bnQpIHsKICAg
ICAgICAgICAgIGZvciAoR2x5cGhQYWdlVHJlZU5vZGUqIGN1cnIgPSB0aGlzOyBjdXJyOyBjdXJy
ID0gY3Vyci0+bV9wYXJlbnQpCiAgICAgICAgICAgICAgICAgY3Vyci0+bV9jdXN0b21Gb250Q291
bnQgLT0gY3VzdG9tRm9udENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhQYWdlVHJlZU5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dseXBoUGFnZVRyZWVOb2RlLmgKaW5kZXggMGFmNTI1OTI1NGIzOWVmNzE2MzU1
MDgyNWRjOGI2ODI2MGUzZGJkZC4uZGM4NGMxZWY5ODYyOTUxNWE4ODBmZTExZDQwMTUzYzAyNDBh
MTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2x5cGhQ
YWdlVHJlZU5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HbHlw
aFBhZ2VUcmVlTm9kZS5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiR2x5cGhQYWdlLmgi
CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCkBAIC03NCw2ICs3MywxNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBnZXRSb290KHBhZ2VOdW1iZXIpLT5nZXRDaGlsZChmb250RGF0YSwgcGFnZU51bWJlcik7
CiAgICAgfQogCisgICAgR2x5cGhQYWdlVHJlZU5vZGUoKQorICAgICAgICA6IG1fcGFyZW50KDAp
CisgICAgICAgICwgbV9sZXZlbCgwKQorICAgICAgICAsIG1faXNTeXN0ZW1GYWxsYmFjayhmYWxz
ZSkKKyAgICAgICAgLCBtX2N1c3RvbUZvbnRDb3VudCgwKQorI2lmbmRlZiBOREVCVUcKKyAgICAg
ICAgLCBtX3BhZ2VOdW1iZXIoMCkKKyNlbmRpZgorICAgIHsKKyAgICB9CisKICAgICBzdGF0aWMg
dm9pZCBwcnVuZVRyZWVDdXN0b21Gb250RGF0YShjb25zdCBGb250RGF0YSopOwogICAgIHN0YXRp
YyB2b2lkIHBydW5lVHJlZUZvbnREYXRhKGNvbnN0IFNpbXBsZUZvbnREYXRhKik7CiAKQEAgLTk2
LDE3ICsxMDYsNiBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IHBhZ2VDb3VudCgpIGNvbnN0OwogCiBw
cml2YXRlOgotICAgIEdseXBoUGFnZVRyZWVOb2RlKCkKLSAgICAgICAgOiBtX3BhcmVudCgwKQot
ICAgICAgICAsIG1fbGV2ZWwoMCkKLSAgICAgICAgLCBtX2lzU3lzdGVtRmFsbGJhY2soZmFsc2Up
Ci0gICAgICAgICwgbV9jdXN0b21Gb250Q291bnQoMCkKLSNpZm5kZWYgTkRFQlVHCi0gICAgICAg
ICwgbV9wYWdlTnVtYmVyKDApCi0jZW5kaWYKLSAgICB7Ci0gICAgfQotCiAgICAgc3RhdGljIEds
eXBoUGFnZVRyZWVOb2RlKiBnZXRSb290KHVuc2lnbmVkIHBhZ2VOdW1iZXIpOwogICAgIHZvaWQg
aW5pdGlhbGl6ZVBhZ2UoY29uc3QgRm9udERhdGEqLCB1bnNpZ25lZCBwYWdlTnVtYmVyKTsKIApA
QCAtMTE3LDcgKzExNiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEhhc2hNYXA8aW50LCBHbHlw
aFBhZ2VUcmVlTm9kZSo+KiByb290czsKICAgICBzdGF0aWMgR2x5cGhQYWdlVHJlZU5vZGUqIHBh
Z2VaZXJvUm9vdDsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBGb250RGF0YSosIE93blB0
cjxHbHlwaFBhZ2VUcmVlTm9kZT4+IEdseXBoUGFnZVRyZWVOb2RlTWFwOworICAgIHR5cGVkZWYg
SGFzaE1hcDxjb25zdCBGb250RGF0YSosIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaFBhZ2VUcmVlTm9k
ZT4+IEdseXBoUGFnZVRyZWVOb2RlTWFwOwogCiAgICAgR2x5cGhQYWdlVHJlZU5vZGVNYXAgbV9j
aGlsZHJlbjsKICAgICBHbHlwaFBhZ2VUcmVlTm9kZSogbV9wYXJlbnQ7CkBAIC0xMjUsNyArMTI0
LDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2xldmVsIDogMzE7CiAgICAgYm9vbCBtX2lz
U3lzdGVtRmFsbGJhY2sgOiAxOwogICAgIHVuc2lnbmVkIG1fY3VzdG9tRm9udENvdW50OwotICAg
IE93blB0cjxHbHlwaFBhZ2VUcmVlTm9kZT4gbV9zeXN0ZW1GYWxsYmFja0NoaWxkOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxHbHlwaFBhZ2VUcmVlTm9kZT4gbV9zeXN0ZW1GYWxsYmFja0NoaWxkOwog
CiAjaWZuZGVmIE5ERUJVRwogICAgIHVuc2lnbmVkIG1fcGFnZU51bWJlcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggY2Uy
OGI0NGVlNjYwMDAzM2Q2OGVkOTU0ZjNkMWI4ODUyZjc1ZTBkMi4uNTFlZTU2YTMyNzA0YWI5MTE5
NzA0MmU5MGI3ZDE0NDcwOTYzYTViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRl
ICJQYXRoLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpZiBVU0UoQ0cpCiB0eXBlZGVm
IHN0cnVjdCBDR0NvbnRleHQgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQ7CkBAIC01MjIsNyArNTIx
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgRElCUGl4ZWxEYXRhIG1fcGl4
ZWxEYXRhOwogICAgICAgICB9OwogCi0gICAgICAgIFBhc3NPd25QdHI8V2luZG93c0JpdG1hcD4g
Y3JlYXRlV2luZG93c0JpdG1hcChjb25zdCBJbnRTaXplJik7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxXaW5kb3dzQml0bWFwPiBjcmVhdGVXaW5kb3dzQml0bWFwKGNvbnN0IEludFNpemUmKTsK
ICAgICAgICAgLy8gVGhlIGJpdG1hcCBzaG91bGQgYmUgbm9uLXByZW11bHRpcGxpZWQuCiAgICAg
ICAgIHZvaWQgZHJhd1dpbmRvd3NCaXRtYXAoV2luZG93c0JpdG1hcCosIGNvbnN0IEludFBvaW50
Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dDNELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRC5oCmluZGV4IDcxMDhiZThkYTYzM2EyYjEwZjE5MDJlOWZjZTk5YzNk
MGNlZTYyY2MuLmFjOWRkYzI5OGNiMDQ2NzRjYjg5MjdjYzkwMDczMDIzYjQwNzIxZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0QuaApAQCAtMTEwMiwxNCArMTEwMiwxNCBAQCBwcml2YXRlOgogCiAgICAgQU5HTEVXZWJLaXRC
cmlkZ2UgbV9jb21waWxlcjsKIAotICAgIE93blB0cjxTaGFkZXJOYW1lSGFzaD4gbmFtZUhhc2hN
YXBGb3JTaGFkZXJzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkZXJOYW1lSGFzaD4gbmFtZUhh
c2hNYXBGb3JTaGFkZXJzOwogCiAjaWYgKChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkg
fHwgUExBVEZPUk0oV0lOKSkgJiYgVVNFKE9QRU5HTF9FU18yKSkKICAgICBmcmllbmQgY2xhc3Mg
RXh0ZW5zaW9uczNET3BlbkdMRVM7Ci0gICAgT3duUHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBt
X2V4dGVuc2lvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4dGVuc2lvbnMzRE9wZW5HTEVTPiBt
X2V4dGVuc2lvbnM7CiAjZWxzZQogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0w7
Ci0gICAgT3duUHRyPEV4dGVuc2lvbnMzRE9wZW5HTD4gbV9leHRlbnNpb25zOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxFeHRlbnNpb25zM0RPcGVuR0w+IG1fZXh0ZW5zaW9uczsKICNlbmRpZgogICAg
IGZyaWVuZCBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xDb21tb247CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgKaW5kZXggMzg3ZWRhZGY0NjdmZDkwOGEyNjY2MDVlMDg0MTNhMGI4YjE3OWIwMC4uOWQ3
MGVlNjllMDIxZWQ1ZWJlZWE4ZThiY2IwZWQxMTdiOGY4MGMyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlLmgKQEAgLTIyLDcgKzIyLDYgQEAKIAogI2luY2x1ZGUgIkdMQ29udGV4dC5oIgogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAog
I2lmIFVTRShURVhUVVJFX01BUFBFUikKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NM
YXllci5oCmluZGV4IDM3NWU5YTAzOTg0YzExMGM0NmE1ZWI1NWI4YmYyYTE0NWI3ZmIxOGYuLjdi
ZTZhOWY2OWZhMTI3MDVkNTA1ZmYzZDZiYzA1M2VkYjVjNTQzNTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTM3LDggKzM3LDYg
QEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1MYXllci5oIgogI2lu
Y2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAK
ICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWFza0ltYWdlT3BlcmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaAppbmRleCA2ZWE2MDc5MjgzNmVh
OWU4NjBkZWUzOTk0MWEzZTNmYzM2MGJhNGM0Li4yMDllY2UyYjRmY2IyMmU1YTc0YmQ3OWY4ZjAz
ZTI0MDg5M2EwM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9NYXNrSW1hZ2VPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NYXNrSW1hZ2VPcGVyYXRpb24uaApAQCAtMzYsOCArMzYsNiBAQAogI2luY2x1ZGUgIkxl
bmd0aC5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvSGFzaENvdW50
ZWRTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9MYXllclBvb2wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xh
eWVyUG9vbC5oCmluZGV4IGIzN2Y3MmMxMGJjYjM1NDM1MjgyODg1YTQxYWU4ZmE2ZDZkZmFhYTEu
LjUzNTFkYzZkZjAwYzFkMDEyZGNlM2EyYjEzYzMyODUzNmFlNTFlZDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9vbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0xheWVyUG9vbC5oCkBAIC0zMiw3ICszMiw2
IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvVGlsZUNvbnRyb2xsZXIuaAppbmRleCAxNTI5
Y2VkNjg3MTVlN2NmZWRlOWE3MDJmZWNmNWI0ZmFiZWE2MDAxLi43ZWMxODAwZDcwODE4YmI2OWQ3
ZDYxZWU1ODUxOGIwYmU3NTk2MWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9UaWxlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb250cm9sbGVyLmgKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNs
dWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9UaWxlQ292ZXJhZ2VNYXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5oCmluZGV4IDJi
OThhZmNhZjM3ZjAyNWQ0MThiMDM4ZjBhYzlhMzdlYzllNjAyYmEuLmU0ZTU1YjU1ODFmMjVlOTQ1
NTJhMDY3ODljZGY0MmI3MWUxNzA2ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL1RpbGVDb3ZlcmFnZU1hcC5oCkBAIC0zMSw3ICszMSw2IEBACiAj
aW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyQ2xp
ZW50LmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9X
ZWJUaWxlZEJhY2tpbmdMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1dlYlRpbGVkQmFja2luZ0xheWVyLmgKaW5kZXggNGEyMjdiZWM2ZjU1ZDJjOWU2NjYy
ZjAwMDc1NDEyOWUyNGUxYzc3NS4uMGZjYjk3YjkzM2VlYjk0YTE2ODc3NDYzZTI5YjcwNWFlMDdl
NjBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFj
L1dlYlRpbGVkQmFja2luZ0xheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1dlYlRpbGVkQmFja2luZ0xheWVyLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNk
ZWZpbmUgV2ViVGlsZWRCYWNraW5nTGF5ZXJfaAogCiAjaW1wb3J0IDxRdWFydHpDb3JlL1F1YXJ0
ekNvcmUuaD4KLSNpbXBvcnQgPHd0Zi9Pd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW50UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dwdS9EcmF3aW5nQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ncHUvRHJhd2luZ0J1ZmZlci5oCmluZGV4IDIyZDlkNGJmNTIwODJmNmE2MWNhZjZmNDhjZGZh
ZjgyMDkyNmM2YjguLjliMzExOTY3ODhiZjQ3ODc0OWM0MmViMGNmNTkxMmI2M2U4NmY3MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9EcmF3aW5nQnVm
ZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0RyYXdpbmdC
dWZmZXIuaApAQCAtMzcsOCArMzcsNiBAQAogI2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKIAog
I2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3B1L1RleHR1cmUuY3BwCmluZGV4IDMxYWFhNjNlZWJiOGI5ZDNhNDVlMTA3M2M2
Yzg1NzQ2YWM2Y2JiMzkuLjUzZWMxZDE3OWMyYTNhMjVlMjNhNjlhZTMzMmIzNjFhMmYwN2YzMGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5j
cHAKQEAgLTQzLDExICs0MywxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVRleHR1cmU6
OlRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFBhc3NPd25QdHI8VmVjdG9yPHVu
c2lnbmVkIGludD4+IHRpbGVUZXh0dXJlSWRzLCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQsIGludCBtYXhUZXh0dXJlU2l6ZSkKK1RleHR1cmU6OlRleHR1cmUoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8dW5zaWduZWQ+PiB0aWxl
VGV4dHVyZUlkcywgRm9ybWF0IGZvcm1hdCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWF4
VGV4dHVyZVNpemUpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fZm9ybWF0KGZv
cm1hdCkKICAgICAsIG1fdGlsZXMoSW50U2l6ZShtYXhUZXh0dXJlU2l6ZSwgbWF4VGV4dHVyZVNp
emUpLCBJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCB0cnVlKQotICAgICwgbV90aWxlVGV4dHVyZUlk
cyh0aWxlVGV4dHVyZUlkcykKKyAgICAsIG1fdGlsZVRleHR1cmVJZHMoV1RGOjptb3ZlKHRpbGVU
ZXh0dXJlSWRzKSkKIHsKIH0KIApAQCAtOTQsNyArOTQsNyBAQCBQYXNzUmVmUHRyPFRleHR1cmU+
IFRleHR1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1h
dCwgaQogICAgICAgICBudW1UaWxlcyA9IDA7CiAgICAgfQogCi0gICAgT3duUHRyPFZlY3Rvcjx1
bnNpZ25lZCBpbnQ+PiB0ZXh0dXJlSWRzID0gYWRvcHRQdHIobmV3IFZlY3Rvcjx1bnNpZ25lZCBp
bnQ+KG51bVRpbGVzKSk7CisgICAgYXV0byB0ZXh0dXJlSWRzID0gc3RkOjptYWtlX3VuaXF1ZTxW
ZWN0b3I8dW5zaWduZWQ+PihudW1UaWxlcyk7CiAgICAgdGV4dHVyZUlkcy0+ZmlsbCgwLCBudW1U
aWxlcyk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVRpbGVzOyBpKyspIHsKQEAgLTEy
MCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRyPFRleHR1cmU+IFRleHR1cmU6OmNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgRm9ybWF0IGZvcm1hdCwgaQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbGVCb3VuZHNXaXRoQm9yZGVyLmhlaWdodCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGdsRm9ybWF0LCBnbFR5cGUp
OwogICAgIH0KLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmUoY29udGV4dCwgdGV4dHVy
ZUlkcy5yZWxlYXNlKCksIGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgbWF4VGV4dHVyZVNpemUpKTsK
KyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmUoY29udGV4dCwgV1RGOjptb3ZlKHRleHR1
cmVJZHMpLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIG1heFRleHR1cmVTaXplKSk7CiB9CiAKIHRl
bXBsYXRlIDxib29sIHN3aXp6bGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L1RleHR1cmUuaAppbmRleCA2ZTkzYjkxYzIzYjJjNmFlZDBjMjQ2ZjJjN2VhMTBlY2Qw
MzJkZTc3Li4zYWE1NWY4MjE3MTA3MTA2YTU2MTM3NmZhZmVlN2JlMjYyYzQ0NTBkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvVGV4dHVyZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9UZXh0dXJlLmgKQEAgLTMyLDgg
KzMyLDYgQEAKICNkZWZpbmUgVGV4dHVyZV9oCiAKICNpbmNsdWRlICJUaWxpbmdEYXRhLmgiCi0j
aW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNTQsMTEgKzUyLDExIEBAIHB1YmxpYzoKICAgICBGb3JtYXQg
Zm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KICAgICBjb25zdCBUaWxpbmdEYXRh
JiB0aWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZXM7IH0KIHByaXZhdGU6Ci0gICAgVGV4dHVy
ZShHcmFwaGljc0NvbnRleHQzRCosIFBhc3NPd25QdHI8VmVjdG9yPHVuc2lnbmVkIGludD4+IHRp
bGVUZXh0dXJlSWRzLCBGb3JtYXQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBt
YXhUZXh0dXJlU2l6ZSk7CisgICAgVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIHN0ZDo6dW5p
cXVlX3B0cjxWZWN0b3I8dW5zaWduZWQ+PiB0aWxlVGV4dHVyZUlkcywgRm9ybWF0LCBpbnQgd2lk
dGgsIGludCBoZWlnaHQsIGludCBtYXhUZXh0dXJlU2l6ZSk7CiAgICAgR3JhcGhpY3NDb250ZXh0
M0QqIG1fY29udGV4dDsKICAgICBGb3JtYXQgbV9mb3JtYXQ7CiAgICAgVGlsaW5nRGF0YSBtX3Rp
bGVzOwotICAgIE93blB0cjxWZWN0b3I8dW5zaWduZWQgaW50Pj4gbV90aWxlVGV4dHVyZUlkczsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHVuc2lnbmVkPj4gbV90aWxlVGV4dHVyZUlkczsK
IH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0wuaAppbmRleCAzNGQwMjk2NTY2MTg3NmMzZGVj
YjdhNGU3NjMzZTVlNzUxMTEwYjUyLi44NzNjMTg1OTc2MzM5NTFmNTI2Y2U4NDFhNGE4YzdhMjQy
Yjg5MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvRXh0ZW5zaW9uczNET3BlbkdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTC5oCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEV4dGVuc2lvbnMzRE9wZW5HTCA6IHB1YmxpYyBFeHRlbnNp
b25zM0RPcGVuR0xDb21tb24gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgorICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3Jh
cGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb25zLgorICAgIGV4cGxpY2l0IEV4dGVuc2lvbnMz
RE9wZW5HTChHcmFwaGljc0NvbnRleHQzRCopOwogICAgIHZpcnR1YWwgfkV4dGVuc2lvbnMzRE9w
ZW5HTCgpOwogCiAgICAgLy8gRXh0ZW5zaW9uczNEIG1ldGhvZHMuCkBAIC01NywxMCArNTksNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZlcnRleEF0dHJpYkRpdmlzb3IoR0MzRHVpbnQg
aW5kZXgsIEdDM0R1aW50IGRpdmlzb3IpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgLy8gVGhpcyBjbGFz
cyBvbmx5IG5lZWRzIHRvIGJlIGluc3RhbnRpYXRlZCBieSBHcmFwaGljc0NvbnRleHQzRCBpbXBs
ZW1lbnRhdGlvbnMuCi0gICAgZnJpZW5kIGNsYXNzIEdyYXBoaWNzQ29udGV4dDNEOwotICAgIEV4
dGVuc2lvbnMzRE9wZW5HTChHcmFwaGljc0NvbnRleHQzRCopOwotCiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFdURjo6U3RyaW5nJik7CiAgICAgdmlydHVhbCBTdHJp
bmcgZ2V0RXh0ZW5zaW9ucygpOwogI2lmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkg
fHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShJT1MpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRl
eHQzRE9wZW5HTC5jcHAKaW5kZXggZWNkNjg3NjFiMWFiYzQ0YmM0NTY1YWZhYmUzOGI1ZTRlZDg0
Yzg3Yi4uZmVhMTIxOWU0MTIxYzIwMTg2ZTJkOGZjMDgwMDIzZTkxYTBlNjE5OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4
dDNET3BlbkdMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVu
Z2wvR3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCkBAIC0zNzYsNyArMzc2LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQzRDo6Y2xlYXJEZXB0aChHQzNEY2xhbXBmIGRlcHRoKQogRXh0ZW5zaW9u
czNEKiBHcmFwaGljc0NvbnRleHQzRDo6Z2V0RXh0ZW5zaW9ucygpCiB7CiAgICAgaWYgKCFtX2V4
dGVuc2lvbnMpCi0gICAgICAgIG1fZXh0ZW5zaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHRlbnNpb25z
M0RPcGVuR0wodGhpcykpOworICAgICAgICBtX2V4dGVuc2lvbnMgPSBzdGQ6Om1ha2VfdW5pcXVl
PEV4dGVuc2lvbnMzRE9wZW5HTD4odGhpcyk7CiAgICAgcmV0dXJuIG1fZXh0ZW5zaW9ucy5nZXQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAK
aW5kZXggZWE3YzMzMzM2ZDk5NjA2OGE2YTgxMzMyZTI2N2RhODNjZDJmNThiZC4uZTRhODA1Y2Ez
N2Q1N2NkY2ZhOThkYjE2ZWIyMTU2MjZlODNmN2JkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhp
Y3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC01NjYsNyArNTY2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRDo6Y29tcGlsZVNoYWRlcihQbGF0Zm9ybTNET2JqZWN0IHNoYWRlcikKICAg
ICBBTkdMRVJlc291cmNlcy5IYXNoRnVuY3Rpb24gPSBuYW1lSGFzaEZvclNoYWRlcjsKIAogICAg
IGlmICghbmFtZUhhc2hNYXBGb3JTaGFkZXJzKQotICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRl
cnMgPSBhZG9wdFB0cihuZXcgU2hhZGVyTmFtZUhhc2gpOworICAgICAgICBuYW1lSGFzaE1hcEZv
clNoYWRlcnMgPSBzdGQ6Om1ha2VfdW5pcXVlPFNoYWRlck5hbWVIYXNoPigpOwogICAgIGN1cnJl
bnROYW1lSGFzaE1hcEZvclNoYWRlciA9IG5hbWVIYXNoTWFwRm9yU2hhZGVycy5nZXQoKTsKICAg
ICBtX2NvbXBpbGVyLnNldFJlc291cmNlcyhBTkdMRVJlc291cmNlcyk7CiAKQEAgLTg3Myw3ICs4
NzMsNyBAQCBTdHJpbmcgR3JhcGhpY3NDb250ZXh0M0Q6Om1hcHBlZFN5bWJvbE5hbWUoUGxhdGZv
cm0zRE9iamVjdCBwcm9ncmFtLCBBTkdMRVNoYWRlcgogICAgICAgICAvLyBBdHRyaWJ1dGVzIGFy
ZSBhIHNwZWNpYWwgY2FzZTogdGhleSBtYXkgYmUgcmVxdWVzdGVkIGJlZm9yZSBhbnkgc2hhZGVy
cyBoYXZlIGJlZW4gY29tcGlsZWQsCiAgICAgICAgIC8vIGFuZCBhcmVuJ3QgZXZlbiByZXF1aXJl
ZCB0byBiZSB1c2VkIGluIGFueSBzaGFkZXIgcHJvZ3JhbS4KICAgICAgICAgaWYgKCFuYW1lSGFz
aE1hcEZvclNoYWRlcnMpCi0gICAgICAgICAgICBuYW1lSGFzaE1hcEZvclNoYWRlcnMgPSBhZG9w
dFB0cihuZXcgU2hhZGVyTmFtZUhhc2gpOworICAgICAgICAgICAgbmFtZUhhc2hNYXBGb3JTaGFk
ZXJzID0gc3RkOjptYWtlX3VuaXF1ZTxTaGFkZXJOYW1lSGFzaD4oKTsKICAgICAgICAgY3VycmVu
dE5hbWVIYXNoTWFwRm9yU2hhZGVyID0gbmFtZUhhc2hNYXBGb3JTaGFkZXJzLmdldCgpOwogCiAg
ICAgICAgIFN0cmluZyBnZW5lcmF0ZWROYW1lID0gZ2VuZXJhdGVIYXNoZWROYW1lKG5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXls
YW5kRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dheWxhbmREaXNwbGF5LmNwcAppbmRleCAwMmJhNTI4NTM2ZTRiM2M3YTU4MDlhNGQ1NjRjMTNh
YjIwNDc1MGEzLi41ZjU0N2E2YTIxZWU0OWQ1MzBmMWZkYTk1ZmJlY2U2MTY5ZmZmNzkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRE
aXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5k
L1dheWxhbmREaXNwbGF5LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxX
YXlsYW5kU3VyZmFjZT4gV2F5bGFuZERpc3BsYXk6OmNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6
ZSYgc2l6CiAgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8V2F5bGFuZFN1cmZhY2U+KHdsU3Vy
ZmFjZSwgbmF0aXZlV2luZG93KTsKIH0KIAotUGFzc093blB0cjxHTENvbnRleHRFR0w+IFdheWxh
bmREaXNwbGF5OjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KCkKK3N0ZDo6dW5pcXVlX3B0cjxHTENv
bnRleHRFR0w+IFdheWxhbmREaXNwbGF5OjpjcmVhdGVTaGFyaW5nR0xDb250ZXh0KCkKIHsKICAg
ICBzdHJ1Y3Qgd2xfc3VyZmFjZSogd2xTdXJmYWNlID0gd2xfY29tcG9zaXRvcl9jcmVhdGVfc3Vy
ZmFjZShtX2NvbXBvc2l0b3IpOwogICAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgbmF0aXZlV2luZG93
ID0gd2xfZWdsX3dpbmRvd19jcmVhdGUod2xTdXJmYWNlLCAxLCAxKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZERpc3BsYXkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZERpc3BsYXku
aAppbmRleCBhNTI2OGI3ZmUwNDkyYjE5NjgxZjBjNjVhNmIzYWUwNzBlYzY0YjNiLi5kNGJiMGZi
ZTNjNzRhZTRiY2VlYzhlNzJhOWJmZTg3YjlhYzQ2YjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmREaXNwbGF5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kRGlzcGxheS5oCkBA
IC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiV2ViS2l0R3RrV2F5bGFuZENsaWVudFByb3RvY29s
LmgiCiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50Lmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogI2luY2x1ZGUgPHdheWxhbmQtZWdsLmg+CiAjaW5j
bHVkZSA8RUdML2VnbC5oPgpAQCAtNTEsNyArNTAsNyBAQCBwdWJsaWM6CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2F5bGFuZFN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoY29uc3QgSW50U2l6ZSYsIGlu
dCB3aWRnZXRJRCk7CiAKLSAgICBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gY3JlYXRlU2hhcmlu
Z0dMQ29udGV4dCgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHTENvbnRleHRFR0w+IGNyZWF0ZVNo
YXJpbmdHTENvbnRleHQoKTsKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHds
X3JlZ2lzdHJ5X2xpc3RlbmVyIG1fcmVnaXN0cnlMaXN0ZW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5j
cHAKaW5kZXggMDJmZGZmN2QzNDJlMWZhNDdhODY1MzM3YjZhODZlYjI0OWMxY2UwNy4uMWRjNzRj
ZWMzZWY5ZDZjMWZmZmNiOWE1ODc2ZTUxMmUyOGNiMTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBXYXlsYW5kU3VyZmFjZTo6cmVzaXplKGNvbnN0IElu
dFNpemUmIHNpemUpCiAgICAgd2xfZWdsX3dpbmRvd19yZXNpemUobV9uYXRpdmVXaW5kb3csIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSwgMCwgMCk7CiB9CiAKLVBhc3NPd25QdHI8R0xDb250
ZXh0RUdMPiBXYXlsYW5kU3VyZmFjZTo6Y3JlYXRlR0xDb250ZXh0KCkKK3N0ZDo6dW5pcXVlX3B0
cjxHTENvbnRleHRFR0w+IFdheWxhbmRTdXJmYWNlOjpjcmVhdGVHTENvbnRleHQoKQogewogICAg
IHJldHVybiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQobV9uYXRpdmVXaW5kb3cs
IEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93YXlsYW5kL1dheWxhbmRTdXJmYWNlLmgKaW5kZXgg
ZGI3YjUyNTUxNDM4N2I0OTgwMDNjMzQ5ZmUzODliYmQyMDI0MmRlNy4uNjlmMjJiMWNkNmYzYjI2
ZTM1YjdkZDJjMjMxMDQzY2YxODYyNmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2F5bGFuZC9XYXlsYW5kU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dheWxhbmQvV2F5bGFuZFN1cmZhY2UuaApAQCAtMjksNyAr
MjksNiBAQAogI2lmIFBMQVRGT1JNKFdBWUxBTkQpCiAKICNpbmNsdWRlIDx3YXlsYW5kLWNsaWVu
dC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKICNpbmNsdWRlIDx3YXlsYW5kLWVn
bC5oPgogI2luY2x1ZGUgPEVHTC9lZ2xwbGF0Zm9ybS5oPgpAQCAtNDksNyArNDgsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIHJlc2l6ZShjb25zdCBJbnRTaXplJik7CiAKLSAgICBQYXNzT3duUHRy
PEdMQ29udGV4dEVHTD4gY3JlYXRlR0xDb250ZXh0KCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdM
Q29udGV4dEVHTD4gY3JlYXRlR0xDb250ZXh0KCk7CiAKICAgICB2b2lkIHJlcXVlc3RGcmFtZSgp
OwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>