<?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>137840</bug_id>
          
          <creation_ts>2014-10-17 16:14:35 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for all SVG RenderObjects</short_desc>
          <delta_ts>2014-10-17 17:21:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>137424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mario</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042517</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 16:14:35 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for all SVG RenderObjects</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042518</commentid>
    <comment_count>1</comment_count>
      <attachid>240050</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 16:18:04 -0700</bug_when>
    <thetext>Created attachment 240050
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042523</commentid>
    <comment_count>2</comment_count>
      <attachid>240050</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-10-17 16:41:13 -0700</bug_when>
    <thetext>Comment on attachment 240050
Patch

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

&gt; Source/WebCore/rendering/RenderLayerFilterInfo.cpp:131
&gt; +    for (const auto&amp; filter : m_internalSVGReferences) {

Shouldn&apos;t this be const auto*?

&gt; Source/WebCore/rendering/svg/SVGRootInlineBox.cpp:-80
&gt; -    RenderSVGText* textRoot = toRenderSVGText(&amp;blockFlow());
&gt; -    ASSERT(textRoot);

ahahahahah</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042525</commentid>
    <comment_count>3</comment_count>
      <attachid>240050</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-17 16:43:44 -0700</bug_when>
    <thetext>Comment on attachment 240050
Patch

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

&gt;&gt; Source/WebCore/rendering/RenderLayerFilterInfo.cpp:131
&gt;&gt; +    for (const auto&amp; filter : m_internalSVGReferences) {
&gt; 
&gt; Shouldn&apos;t this be const auto*?

It is a RefPtr type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042537</commentid>
    <comment_count>4</comment_count>
      <attachid>240050</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-17 17:21:45 -0700</bug_when>
    <thetext>Comment on attachment 240050
Patch

Clearing flags on attachment: 240050

Committed r174854: &lt;http://trac.webkit.org/changeset/174854&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042538</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-17 17:21:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240050</attachid>
            <date>2014-10-17 16:18:04 -0700</date>
            <delta_ts>2014-10-17 17:21:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137840-20141017161809.patch</filename>
            <type>text/plain</type>
            <size>33776</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0ODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDdiNGVjOTc4ODkxZTg0
YzJiMzQ4MzI3Yzk1YjNiNDg4YTY2YzFiNC4uZDVmYjQ1Yjk1NDI1MDgyMTIxYzg3OGEyNDdlZWI3
NTkxYzMxOWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE0LTEwLTE3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgYWxsIFNWRyBSZW5kZXJPYmplY3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc4NDAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBh
bGwgU1ZHIFJlbmRlck9iamVjdHMgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJyb3VuZGlu
ZyBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpcm8gY2hhbmdlLgorCisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN1cHBvcnRzUGF0aCk6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjplbGVtZW50UGF0
aCk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmZvcmNlTGF5b3V0UGFyZW50Vmlld0lmTmVlZGVkKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpGaWx0ZXJJbmZvOjpyZW1vdmVSZWZlcmVuY2VGaWx0ZXJDbGllbnRzKToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTVkdHcmFkaWVudFN0b3A6OnN0eWxlRGlkQ2hhbmdlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbmxpbmVUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUNvbnRhaW5lcjo6bWFya0FsbENsaWVudHNGb3JJbnZhbGlkYXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
Um9vdDo6YWRkUmVzb3VyY2VGb3JDbGllbnRJbnZhbGlkYXRpb24pOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdExheW91dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHVGV4dDo6c3VidHJlZUNoaWxkV2lsbEJlUmVtb3ZlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0OjpzdWJ0cmVlVGV4dERpZENoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjp1cGRhdGVGb250SW5BbGxEZXNjZW5kYW50cyk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUZXh0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbmxp
bmVUZXh0Qm94Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6Om1hcExvY2FsVG9Db250YWlu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0Nv
bnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpjb21wdXRlQ29u
dGFpbmVyQm91bmRpbmdCb3hlcyk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OndyaXRlU3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZW5kZXJpbmdDb250ZXh0OjpidWZmZXJGb3JlZ3JvdW5kKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0N5Y2xlU29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1Jlc291cmNlc0N5Y2xlU29sdmVyOjpyZXNvbHZlQ3ljbGVzKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUm9v
dElubGluZUJveDo6cmVuZGVyU1ZHVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSb290SW5s
aW5lQm94Ojpjb21wdXRlUGVyQ2hhcmFjdGVyTGF5b3V0SW5mb3JtYXRpb24pOgorICAgICAgICAq
IHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50Ojpk
aWRBdHRhY2hSZW5kZXJlcnMpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Bv
bHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUmVjdEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmN1cnJlbnRWaWV3Qm94UmVjdCk6CisgICAg
ICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlOjpzZXRDb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpjb250
YWluZXJTaXplKToKKwogMjAxNC0xMC0xNyAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmUtYXJyYW5nZSBwYXJlbnRoZXNlcyBmb3IgY29tcGlsYXRpb24gcHVy
cG9zZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0MmRiMzU3MjFhMWRiZjgwMGEzNjRjOWE3
YzcwZGVhZGJkNzJhM2ZmLi43NjlhNTYyZDJiMDEwZDZhZGE0YTcyYjY5N2E2YjA2OTRmNDA5NWZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTg1MiwxNiArODUyLDEzIEBAIExheW91dFJlY3Qg
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudFJlY3QoKSBjb25zdAogICAgIAogYm9v
bCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdXBwb3J0c1BhdGgoKSBjb25zdAogewotICAg
IGlmIChtX3JlbmRlcmVyICYmIG1fcmVuZGVyZXItPmlzU1ZHU2hhcGUoKSkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgCi0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpczxSZW5kZXJT
VkdTaGFwZT4obV9yZW5kZXJlcik7CiB9CiAKIFBhdGggQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZWxlbWVudFBhdGgoKSBjb25zdAogewotICAgIGlmIChtX3JlbmRlcmVyICYmIG1fcmVuZGVy
ZXItPmlzU1ZHU2hhcGUoKSAmJiB0b1JlbmRlclNWR1NoYXBlKG1fcmVuZGVyZXIpLT5oYXNQYXRo
KCkpIHsKLSAgICAgICAgUGF0aCBwYXRoID0gdG9SZW5kZXJTVkdTaGFwZShtX3JlbmRlcmVyKS0+
cGF0aCgpOworICAgIGlmIChpczxSZW5kZXJTVkdTaGFwZT4obV9yZW5kZXJlcikgJiYgZG93bmNh
c3Q8UmVuZGVyU1ZHU2hhcGU+KCptX3JlbmRlcmVyKS5oYXNQYXRoKCkpIHsKKyAgICAgICAgUGF0
aCBwYXRoID0gZG93bmNhc3Q8UmVuZGVyU1ZHU2hhcGU+KCptX3JlbmRlcmVyKS5wYXRoKCk7CiAg
ICAgICAgIAogICAgICAgICAvLyBUaGUgU1ZHIHBhdGggaXMgaW4gdGVybXMgb2YgdGhlIHBhcmVu
dCdzIGJvdW5kaW5nIGJveC4gVGhlIHBhdGggbmVlZHMgdG8gYmUgb2Zmc2V0IHRvIGZyYW1lIGNv
b3JkaW5hdGVzLgogICAgICAgICBpZiAoYXV0byBzdmdSb290ID0gYW5jZXN0b3JzT2ZUeXBlPFJl
bmRlclNWR1Jvb3Q+KCptX3JlbmRlcmVyKS5maXJzdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKaW5kZXggMjQ5NzkxOThmNzE5YTMzN2YxYmUyNzA5ZGJjMTc2Y2JhMTMzOTQzZS4uZjc4
OTBkNDVjMjk4YzhmM2FkNDY0YzZkZmYzZjk0ODhiZDNmZWZjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcApAQCAtNTkwLDcgKzU5MCw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RWaWV3
U2l6ZSgpCiAgICAgc2V0Q29udGVudHNTaXplKHNpemUpOwogfQogCi12b2lkIEZyYW1lVmlldzo6
YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoUmVuZGVyRWxlbWVudCogbywgU2Nyb2xsYmFyTW9kZSYg
aE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlKQordm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZs
b3dUb1ZpZXdwb3J0KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBTY3JvbGxiYXJNb2RlJiBoTW9k
ZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpCiB7CiAgICAgLy8gSGFuZGxlIHRoZSBvdmVyZmxvdzpo
aWRkZW4vc2Nyb2xsIGNhc2UgZm9yIHRoZSBib2R5L2h0bWwgZWxlbWVudHMuICBXaW5JRSB0cmVh
dHMKICAgICAvLyBvdmVyZmxvdzpoaWRkZW4gYW5kIG92ZXJmbG93OnNjcm9sbCBvbiA8Ym9keT4g
YXMgYXBwbHlpbmcgdG8gdGhlIGRvY3VtZW50J3MKQEAgLTYwMywxMyArNjAzLDEzIEBAIHZvaWQg
RnJhbWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJFbGVtZW50KiBvLCBTY3Jv
bGxiYXJNb2RlJiBoTW9kZSwKIAogICAgIGJvb2wgb3ZlcnJpZGVIaWRkZW4gPSBmcmFtZSgpLmlz
TWFpbkZyYW1lKCkgJiYgKChmcmFtZSgpLmZyYW1lU2NhbGVGYWN0b3IoKSA+IDEpIHx8IGhlYWRl
ckhlaWdodCgpIHx8IGZvb3RlckhlaWdodCgpKTsKIAotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1gg
PSBvLT5zdHlsZSgpLm92ZXJmbG93WCgpOwotICAgIEVPdmVyZmxvdyBvdmVyZmxvd1kgPSBvLT5z
dHlsZSgpLm92ZXJmbG93WSgpOworICAgIEVPdmVyZmxvdyBvdmVyZmxvd1ggPSByZW5kZXJlci0+
c3R5bGUoKS5vdmVyZmxvd1goKTsKKyAgICBFT3ZlcmZsb3cgb3ZlcmZsb3dZID0gcmVuZGVyZXIt
PnN0eWxlKCkub3ZlcmZsb3dZKCk7CiAKLSAgICBpZiAoby0+aXNTVkdSb290KCkpIHsKKyAgICBp
ZiAoaXM8UmVuZGVyU1ZHUm9vdD4oKnJlbmRlcmVyKSkgewogICAgICAgICAvLyBGSVhNRTogZXZh
bHVhdGUgaWYgd2UgY2FuIGFsbG93IG92ZXJmbG93IGZvciB0aGVzZSBjYXNlcyB0b28uCiAgICAg
ICAgIC8vIE92ZXJmbG93IGlzIGFsd2F5cyBoaWRkZW4gd2hlbiBzdGFuZC1hbG9uZSBTVkcgZG9j
dW1lbnRzIGFyZSBlbWJlZGRlZC4KLSAgICAgICAgaWYgKHRvUmVuZGVyU1ZHUm9vdChvKS0+aXNF
bWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpKSB7CisgICAgICAgIGlm
IChkb3duY2FzdDxSZW5kZXJTVkdSb290PigqcmVuZGVyZXIpLmlzRW1iZWRkZWRUaHJvdWdoRnJh
bWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSkgewogICAgICAgICAgICAgb3ZlcmZsb3dYID0gT0hJ
RERFTjsKICAgICAgICAgICAgIG92ZXJmbG93WSA9IE9ISURERU47CiAgICAgICAgIH0KQEAgLTY1
MSw3ICs2NTEsNyBAQCB2b2lkIEZyYW1lVmlldzo6YXBwbHlPdmVyZmxvd1RvVmlld3BvcnQoUmVu
ZGVyRWxlbWVudCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsCiAgICAgICAgICAgICA7CiAgICAg
fQogCi0gICAgbV92aWV3cG9ydFJlbmRlcmVyID0gbzsKKyAgICBtX3ZpZXdwb3J0UmVuZGVyZXIg
PSByZW5kZXJlcjsKIH0KIAogdm9pZCBGcmFtZVZpZXc6OmFwcGx5UGFnaW5hdGlvblRvVmlld3Bv
cnQoKQpAQCAtMTA4OCw4ICsxMDg4LDggQEAgaW5saW5lIHZvaWQgRnJhbWVWaWV3Ojpmb3JjZUxh
eW91dFBhcmVudFZpZXdJZk5lZWRlZCgpCiAgICAgaWYgKCFjb250ZW50Qm94KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZW5kZXJTVkdSb290KiBzdmdSb290ID0gdG9SZW5kZXJTVkdSb290KGNv
bnRlbnRCb3gpOwotICAgIGlmIChzdmdSb290LT5ldmVySGFkTGF5b3V0KCkgJiYgIXN2Z1Jvb3Qt
Pm5lZWRzTGF5b3V0KCkpCisgICAgYXV0byYgc3ZnUm9vdCA9IGRvd25jYXN0PFJlbmRlclNWR1Jv
b3Q+KCpjb250ZW50Qm94KTsKKyAgICBpZiAoc3ZnUm9vdC5ldmVySGFkTGF5b3V0KCkgJiYgIXN2
Z1Jvb3QubmVlZHNMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gSWYgdGhlIGVt
YmVkZGVkIFNWRyBkb2N1bWVudCBhcHBlYXJzIHRoZSBmaXJzdCB0aW1lLCB0aGUgb3duZXJSZW5k
ZXJlciBoYXMgYWxyZWFkeSBmaW5pc2hlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyRmlsdGVySW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcAppbmRleCA2MmUwNGJjN2IwZWNmOTFiMDk1Y2Y5
NWFiMzk4NjY3NTBhMTlkYjE2Li42NTQ2NjcxYjM5MDc0ZTEyMGZkMzY4ZmJjNGEzMzcyYWFkZjJi
NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0
ZXJJbmZvLmNwcApAQCAtMTI1LDE0ICsxMjUsMTMgQEAgdm9pZCBSZW5kZXJMYXllcjo6RmlsdGVy
SW5mbzo6dXBkYXRlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cyhjb25zdCBGaWx0ZXJPcGVyYXRpb24K
IAogdm9pZCBSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xp
ZW50cygpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBtX2V4dGVybmFsU1ZHUmVm
ZXJlbmNlcy5zaXplKCk7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIG1fZXh0ZXJuYWxTVkdSZWZl
cmVuY2VzW2ldLT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgZm9yIChhdXRvJiByZXNvdXJjZUhh
bmRsZSA6IG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzKQorICAgICAgICByZXNvdXJjZUhhbmRsZS0+
cmVtb3ZlQ2xpZW50KHRoaXMpOwogICAgIG1fZXh0ZXJuYWxTVkdSZWZlcmVuY2VzLmNsZWFyKCk7
Ci0gICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBtX2ludGVybmFsU1ZHUmVmZXJlbmNlcy5z
aXplKCk7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRWxlbWVudCogZmlsdGVyID0gbV9pbnRl
cm5hbFNWR1JlZmVyZW5jZXNbaV0uZ2V0KCk7CisgICAgZm9yIChjb25zdCBhdXRvJiBmaWx0ZXIg
OiBtX2ludGVybmFsU1ZHUmVmZXJlbmNlcykgewogICAgICAgICBpZiAoIWZpbHRlci0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB0b1JlbmRlclNWR1Jlc291cmNl
Q29udGFpbmVyKCpmaWx0ZXItPnJlbmRlcmVyKCkpLnJlbW92ZUNsaWVudFJlbmRlckxheWVyKCZt
X2xheWVyKTsKKyAgICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI+KCpm
aWx0ZXItPnJlbmRlcmVyKCkpLnJlbW92ZUNsaWVudFJlbmRlckxheWVyKCZtX2xheWVyKTsKICAg
ICB9CiAgICAgbV9pbnRlcm5hbFNWR1JlZmVyZW5jZXMuY2xlYXIoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcApp
bmRleCA4ODNhMjJkYmJlYjlmMmVkOWU2YTY5YzQ2ZTY4NzQ4ZGUzZGRiMjQ5Li4yODNjZmJiMWVh
Y2ZmY2ZlNjhhMGMwM2I0ZjUwZTY0ZmY3NGJhZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwCkBAIC01MiwxMSAr
NTIsMTEgQEAgdm9pZCBSZW5kZXJTVkdHcmFkaWVudFN0b3A6OnN0eWxlRGlkQ2hhbmdlKFN0eWxl
RGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHkKICAgICBpZiAoIWdyYWRpZW50KQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZ3JhZGllbnQtPnJl
bmRlcmVyKCk7CisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBncmFkaWVudC0+cmVuZGVy
ZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICB0b1JlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyKCpyZW5kZXJlcikucmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNo
ZSgpOworICAgIGRvd25jYXN0PFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyPigqcmVuZGVyZXIp
LnJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdHcmFkaWVu
dFN0b3A6OmxheW91dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmgKaW5kZXggMTg5MTZjYjkzNWFlMDkyZWFjNzZkNGE1MTg1ZDkwNzk3OWQ3Y2Q1OC4u
ODYxZDEzMjJhNzEyOTI1MGVhZDBhZjkyZjI3YTRiMjAyYzBiNDQwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuaApAQCAtOTAsOCArOTAsNiBAQCBw
cml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9idWZmZXJlZEZvcmVn
cm91bmQ7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU1ZHSW1hZ2UsIGlz
U1ZHSW1hZ2UoKSkKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiBTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX1JFTkRFUl9PQkpFQ1QoUmVuZGVyU1ZHSW1hZ2UsIGlzU1ZHSW1hZ2UoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW5saW5lVGV4dC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKaW5k
ZXggOTE1M2FhYWM1MGRkYWNiZmFkOTJmZGYxNzczYzZkODQzOWNmZDk5NS4uYjQ1ZGY3Yzc5MzQ3
YTc5N2YyYzRhZWNiOWQ4ZjFhZGUxMDc5NDRiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbmxpbmVUZXh0LmgKQEAgLTY5LDggKzY5LDYgQEAgcHJp
dmF0ZToKICAgICBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyBtX2xheW91dEF0dHJpYnV0ZXM7CiB9
OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVfQ0FTVFMoUmVuZGVyU1ZHSW5saW5lVGV4dCwgaXNTVkdJ
bmxpbmVUZXh0KCkpCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBF
X1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNWR0lubGluZVRleHQsIGlzU1ZHSW5saW5lVGV4
dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAppbmRleCAzNmU3NDdmN2Q5NzE3MmE3NjJlZTQyODBj
ZTkyNWQ4NWMyM2M3ZmEzLi43OGQzY2U2MjkyYjA2ZmI2ZmIwMzA1ZDAwMTQwYWZjYzA1ZDg4NDA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyLmNwcApAQCAtOTYsOCArOTYsOCBAQCB2b2lkIFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyOjptYXJrQWxsQ2xpZW50c0ZvckludmFsaWRhdGlvbihJbnZhbGlk
YXRpb25Nb2RlCiAgICAgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gbW9kZSAhPSBQYXJlbnRP
bmx5SW52YWxpZGF0aW9uOwogCiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpIHsK
LSAgICAgICAgaWYgKGNsaWVudC0+aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpKSB7Ci0gICAgICAg
ICAgICB0b1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKCpjbGllbnQpLnJlbW92ZUFsbENsaWVu
dHNGcm9tQ2FjaGUobWFya0ZvckludmFsaWRhdGlvbik7CisgICAgICAgIGlmIChpczxSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lcj4oKmNsaWVudCkpIHsKKyAgICAgICAgICAgIGRvd25jYXN0PFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyPigqY2xpZW50KS5yZW1vdmVBbGxDbGllbnRzRnJvbUNh
Y2hlKG1hcmtGb3JJbnZhbGlkYXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lci5oCmluZGV4IDlmMzY0OWEyNDA0MTZmMjM5ZmJjNzM3NDlkNzQ5
NDMwODUxZDE2MGUuLjM2YmUzNGQyMTJlYmE3ZGYwNTRjMGU5MjBmOTMxZDA5MTBmNTBjMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyLmgKQEAgLTc1LDggKzc1LDYgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0
PFJlbmRlckxheWVyKj4gbV9jbGllbnRMYXllcnM7CiB9OwogCi1SRU5ERVJfT0JKRUNUX1RZUEVf
Q0FTVFMoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIsIGlzU1ZHUmVzb3VyY2VDb250YWluZXIo
KSkKLQogaW5saW5lIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKiBnZXRSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lckJ5SWQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkKQogewogICAgIGlmIChpZC5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCBhOGI4MjgwMzBjMmQ0ZTJlNzFkNjFhY2Yy
NTRjYzA1ZWZmNTA0NDI0Li5mZTFkZGVkYjY3ODBlMTczMjhiNWJlYjBmNzhjMTFiYzkwYzk2YzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAK
QEAgLTQ0MSwxMiArNDQxLDEyIEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aGFzUmVsYXRpdmVEaW1l
bnNpb25zKCkgY29uc3QKIAogdm9pZCBSZW5kZXJTVkdSb290OjphZGRSZXNvdXJjZUZvckNsaWVu
dEludmFsaWRhdGlvbihSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciogcmVzb3VyY2UpCiB7Ci0g
ICAgUmVuZGVyT2JqZWN0KiBzdmdSb290ID0gcmVzb3VyY2UtPnBhcmVudCgpOwotICAgIHdoaWxl
IChzdmdSb290ICYmICFzdmdSb290LT5pc1NWR1Jvb3QoKSkKKyAgICBSZW5kZXJFbGVtZW50KiBz
dmdSb290ID0gcmVzb3VyY2UtPnBhcmVudCgpOworICAgIHdoaWxlIChzdmdSb290ICYmICFpczxS
ZW5kZXJTVkdSb290Pigqc3ZnUm9vdCkpCiAgICAgICAgIHN2Z1Jvb3QgPSBzdmdSb290LT5wYXJl
bnQoKTsKICAgICBpZiAoIXN2Z1Jvb3QpCiAgICAgICAgIHJldHVybjsKLSAgICB0b1JlbmRlclNW
R1Jvb3Qoc3ZnUm9vdCktPm1fcmVzb3VyY2VzTmVlZGluZ1RvSW52YWxpZGF0ZUNsaWVudHMuYWRk
KHJlc291cmNlKTsKKyAgICBkb3duY2FzdDxSZW5kZXJTVkdSb290Pigqc3ZnUm9vdCkubV9yZXNv
dXJjZXNOZWVkaW5nVG9JbnZhbGlkYXRlQ2xpZW50cy5hZGQocmVzb3VyY2UpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IDU1MDM2
NDNhODAwZGRmM2Q1OWQzYWZjMDljODY5NDJkNTI4ZjU2YzUuLmZmNTQ4ZWFjOTkwOTNmM2IzMmNj
ODUxYWU5ODE5ODllN2ZmZDQzZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5oCkBAIC0xMjIsOCArMTIyLDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
aGFzQm94RGVjb3JhdGlvbnMgOiAxOwogfTsKIAotUkVOREVSX09CSkVDVF9UWVBFX0NBU1RTKFJl
bmRlclNWR1Jvb3QsIGlzU1ZHUm9vdCgpKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKIFNQ
RUNJQUxJWkVfVFlQRV9UUkFJVFNfUkVOREVSX09CSkVDVChSZW5kZXJTVkdSb290LCBpc1NWR1Jv
b3QoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApp
bmRleCA5YjNmZDdhMzYwM2ZiMTE1M2QwY2VjNWVlMGMwMTMxNDhkYzA5ODc3Li4xMDhjZTQ4MWI4
MGNkMGFlZDhhZDJjZGJjMDk1NTgyNTJkMzFlZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCkBAIC0xMzMsOCArMTMzLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fbmVlZHNUcmFuc2Zvcm1VcGRhdGUgOiAxOwogfTsKIAotUkVOREVSX09CSkVD
VF9UWVBFX0NBU1RTKFJlbmRlclNWR1NoYXBlLCBpc1NWR1NoYXBlKCkpCi0KIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRl
clNWR1NoYXBlLCBpc1NWR1NoYXBlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBmZTAwOWEyZTBmM2VhNDJjYzIxOTRmNzI1OTJkNWI5
NTVmMGQ0OTdkLi42MjdhOTY3ZWVmZjU1NjU3N2Q4ODQ4OTY4YTE2ZWE0NDJhYWZjM2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTEx
Nyw4ICsxMTcsOCBAQCBjb25zdCBSZW5kZXJPYmplY3QqIFJlbmRlclNWR1RleHQ6OnB1c2hNYXBw
aW5nVG9Db250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbAogc3RhdGljIGlubGluZSB2b2lk
IGNvbGxlY3RMYXlvdXRBdHRyaWJ1dGVzKFJlbmRlck9iamVjdCogdGV4dCwgVmVjdG9yPFNWR1Rl
eHRMYXlvdXRBdHRyaWJ1dGVzKj4mIGF0dHJpYnV0ZXMpCiB7CiAgICAgZm9yIChSZW5kZXJPYmpl
Y3QqIGRlc2NlbmRhbnQgPSB0ZXh0OyBkZXNjZW5kYW50OyBkZXNjZW5kYW50ID0gZGVzY2VuZGFu
dC0+bmV4dEluUHJlT3JkZXIodGV4dCkpIHsKLSAgICAgICAgaWYgKGRlc2NlbmRhbnQtPmlzU1ZH
SW5saW5lVGV4dCgpKQotICAgICAgICAgICAgYXR0cmlidXRlcy5hcHBlbmQodG9SZW5kZXJTVkdJ
bmxpbmVUZXh0KGRlc2NlbmRhbnQpLT5sYXlvdXRBdHRyaWJ1dGVzKCkpOworICAgICAgICBpZiAo
aXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmRlc2NlbmRhbnQpKQorICAgICAgICAgICAgYXR0cmli
dXRlcy5hcHBlbmQoZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmRlc2NlbmRhbnQpLmxh
eW91dEF0dHJpYnV0ZXMoKSk7CiAgICAgfQogfQogCkBAIC0yNTQsMTkgKzI1NCwxOSBAQCB2b2lk
IFJlbmRlclNWR1RleHQ6OnN1YnRyZWVDaGlsZFdpbGxCZVJlbW92ZWQoUmVuZGVyT2JqZWN0KiBj
aGlsZCwgVmVjdG9yPFNWR1RleAogICAgICAgICByZXR1cm47CiAKICAgICAvLyBUaGlzIGxvZ2lj
IHJlcXVpcmVzIHRoYXQgdGhlICd0ZXh0JyBjaGlsZCBpcyBzdGlsbCBpbnNlcnRlZCBpbiB0aGUg
dHJlZS4KLSAgICBSZW5kZXJTVkdJbmxpbmVUZXh0KiB0ZXh0ID0gdG9SZW5kZXJTVkdJbmxpbmVU
ZXh0KGNoaWxkKTsKKyAgICBhdXRvJiB0ZXh0ID0gZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4
dD4oKmNoaWxkKTsKICAgICBib29sIHN0b3BBZnRlck5leHQgPSBmYWxzZTsKLSAgICBTVkdUZXh0
TGF5b3V0QXR0cmlidXRlcyogcHJldmlvdXMgPSAwOwotICAgIFNWR1RleHRMYXlvdXRBdHRyaWJ1
dGVzKiBuZXh0ID0gMDsKKyAgICBTVkdUZXh0TGF5b3V0QXR0cmlidXRlcyogcHJldmlvdXMgPSBu
dWxscHRyOworICAgIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzKiBuZXh0ID0gbnVsbHB0cjsKICAg
ICBpZiAoIWRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgZmluZFByZXZpb3VzQW5k
TmV4dEF0dHJpYnV0ZXModGhpcywgdGV4dCwgc3RvcEFmdGVyTmV4dCwgcHJldmlvdXMsIG5leHQp
OworICAgICAgICBmaW5kUHJldmlvdXNBbmROZXh0QXR0cmlidXRlcyh0aGlzLCAmdGV4dCwgc3Rv
cEFmdGVyTmV4dCwgcHJldmlvdXMsIG5leHQpOwogCiAgICAgaWYgKHByZXZpb3VzKQogICAgICAg
ICBhZmZlY3RlZEF0dHJpYnV0ZXMuYXBwZW5kKHByZXZpb3VzKTsKICAgICBpZiAobmV4dCkKICAg
ICAgICAgYWZmZWN0ZWRBdHRyaWJ1dGVzLmFwcGVuZChuZXh0KTsKIAotICAgIHNpemVfdCBwb3Np
dGlvbiA9IG1fbGF5b3V0QXR0cmlidXRlcy5maW5kKHRleHQtPmxheW91dEF0dHJpYnV0ZXMoKSk7
CisgICAgc2l6ZV90IHBvc2l0aW9uID0gbV9sYXlvdXRBdHRyaWJ1dGVzLmZpbmQodGV4dC5sYXlv
dXRBdHRyaWJ1dGVzKCkpOwogICAgIEFTU0VSVChwb3NpdGlvbiAhPSBub3RGb3VuZCk7CiAgICAg
bV9sYXlvdXRBdHRyaWJ1dGVzLnJlbW92ZShwb3NpdGlvbik7CiB9CkBAIC0zMjYsMTcgKzMyNiwx
NyBAQCB2b2lkIFJlbmRlclNWR1RleHQ6OnN1YnRyZWVUZXh0RGlkQ2hhbmdlKFJlbmRlclNWR0lu
bGluZVRleHQqIHRleHQpCiAKICAgICBjaGVja0xheW91dEF0dHJpYnV0ZXNDb25zaXN0ZW5jeSh0
aGlzLCBtX2xheW91dEF0dHJpYnV0ZXMpOwogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBkZXNjZW5k
YW50ID0gdGV4dDsgZGVzY2VuZGFudDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblBy
ZU9yZGVyKHRleHQpKSB7Ci0gICAgICAgIGlmIChkZXNjZW5kYW50LT5pc1NWR0lubGluZVRleHQo
KSkKLSAgICAgICAgICAgIG1fbGF5b3V0QXR0cmlidXRlc0J1aWxkZXIuYnVpbGRMYXlvdXRBdHRy
aWJ1dGVzRm9yVGV4dFJlbmRlcmVyKHRvUmVuZGVyU1ZHSW5saW5lVGV4dCgqZGVzY2VuZGFudCkp
OworICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmRlc2NlbmRhbnQpKQorICAg
ICAgICAgICAgbV9sYXlvdXRBdHRyaWJ1dGVzQnVpbGRlci5idWlsZExheW91dEF0dHJpYnV0ZXNG
b3JUZXh0UmVuZGVyZXIoZG93bmNhc3Q8UmVuZGVyU1ZHSW5saW5lVGV4dD4oKmRlc2NlbmRhbnQp
KTsKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCB1cGRhdGVGb250SW5BbGxEZXNjZW5k
YW50cyhSZW5kZXJPYmplY3QqIHN0YXJ0LCBTVkdUZXh0TGF5b3V0QXR0cmlidXRlc0J1aWxkZXIq
IGJ1aWxkZXIgPSAwKQorc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUZvbnRJbkFsbERlc2NlbmRh
bnRzKFJlbmRlck9iamVjdCogc3RhcnQsIFNWR1RleHRMYXlvdXRBdHRyaWJ1dGVzQnVpbGRlciog
YnVpbGRlciA9IG51bGxwdHIpCiB7CiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGRlc2NlbmRhbnQg
PSBzdGFydDsgZGVzY2VuZGFudDsgZGVzY2VuZGFudCA9IGRlc2NlbmRhbnQtPm5leHRJblByZU9y
ZGVyKHN0YXJ0KSkgewotICAgICAgICBpZiAoIWRlc2NlbmRhbnQtPmlzU1ZHSW5saW5lVGV4dCgp
KQorICAgICAgICBpZiAoIWlzPFJlbmRlclNWR0lubGluZVRleHQ+KCpkZXNjZW5kYW50KSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiB0ZXh0ID0g
dG9SZW5kZXJTVkdJbmxpbmVUZXh0KCpkZXNjZW5kYW50KTsKKyAgICAgICAgYXV0byYgdGV4dCA9
IGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KCpkZXNjZW5kYW50KTsKICAgICAgICAgdGV4
dC51cGRhdGVTY2FsZWRGb250KCk7CiAgICAgICAgIGlmIChidWlsZGVyKQogICAgICAgICAgICAg
YnVpbGRlci0+cmVidWlsZE1ldHJpY3NGb3JUZXh0UmVuZGVyZXIodGV4dCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5oCmluZGV4IGJjNjM5ZmVlYzIxNzk4
MWRkNmMwNjQ3NDg4MDYyZjAzYWZlZjg4YTMuLjA3YjE4MTNhNjNmMWZhY2JkNjE4N2YxZDQyOTEw
ODhiODMxYzVhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
VGV4dC5oCkBAIC0xMDUsOCArMTA1LDYgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8U1ZHVGV4dExh
eW91dEF0dHJpYnV0ZXMqPiBtX2xheW91dEF0dHJpYnV0ZXM7CiB9OwogCi1SRU5ERVJfT0JKRUNU
X1RZUEVfQ0FTVFMoUmVuZGVyU1ZHVGV4dCwgaXNTVkdUZXh0KCkpCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19SRU5ERVJfT0JKRUNUKFJlbmRlclNW
R1RleHQsIGlzU1ZHVGV4dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdJbmxpbmVUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R0lubGluZVRleHRCb3guaAppbmRleCAzMDFmOTRkYTQxYjZhMWVjZDE4N2Y0NjM0MjkxMTY0ODVk
OGFjZWI3Li43YjdkODU3ZjEyZjljODk5MDc4MGY3OTE1ZDYzYWI2NzlmNzI5YmJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR0lubGluZVRleHRCb3guaApAQCAtMzUs
NyArMzUsNyBAQCBjbGFzcyBTVkdJbmxpbmVUZXh0Qm94IGZpbmFsIDogcHVibGljIElubGluZVRl
eHRCb3ggewogcHVibGljOgogICAgIGV4cGxpY2l0IFNWR0lubGluZVRleHRCb3goUmVuZGVyU1ZH
SW5saW5lVGV4dCYpOwogCi0gICAgUmVuZGVyU1ZHSW5saW5lVGV4dCYgcmVuZGVyZXIoKSBjb25z
dCB7IHJldHVybiB0b1JlbmRlclNWR0lubGluZVRleHQoSW5saW5lVGV4dEJveDo6cmVuZGVyZXIo
KSk7IH0KKyAgICBSZW5kZXJTVkdJbmxpbmVUZXh0JiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJu
IGRvd25jYXN0PFJlbmRlclNWR0lubGluZVRleHQ+KElubGluZVRleHRCb3g6OnJlbmRlcmVyKCkp
OyB9CiAKICAgICB2aXJ0dWFsIGZsb2F0IHZpcnR1YWxMb2dpY2FsSGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2dpY2FsSGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0KGZsb2F0
IGhlaWdodCkgeyBtX2xvZ2ljYWxIZWlnaHQgPSBoZWlnaHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmluZGV4IDQxNWQ3NTc3ZmNl
OWEyZDBjZTkzMWViZGY3NzE2NDlkNjJhNDk1NTIuLjkwZTJhYjFhOTY3YmIxMmYzNjI2OTc1ZTVh
M2MyMGJhOGM5OGQ4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtOTEsOCArOTEsOCBAQCB2b2lkIFNWR1JlbmRlclN1cHBv
cnQ6Om1hcExvY2FsVG9Db250YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNv
bnN0CiAgICAgLy8gQXQgdGhlIFNWRy9IVE1MIGJvdW5kYXJ5IChha2EgUmVuZGVyU1ZHUm9vdCks
IHdlIGFwcGx5IHRoZSBsb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtIAogICAgIC8vIHRvIG1hcCBh
biBlbGVtZW50IGZyb20gU1ZHIHZpZXdwb3J0IGNvb3JkaW5hdGVzIHRvIENTUyBib3ggY29vcmRp
bmF0ZXMuCiAgICAgLy8gUmVuZGVyU1ZHUm9vdCdzIG1hcExvY2FsVG9Db250YWluZXIgbWV0aG9k
IGV4cGVjdHMgQ1NTIGJveCBjb29yZGluYXRlcy4KLSAgICBpZiAocGFyZW50LmlzU1ZHUm9vdCgp
KQotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybSh0b1JlbmRlclNWR1Jvb3Qo
cGFyZW50KS5sb2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtKCkpOworICAgIGlmIChpczxSZW5kZXJT
VkdSb290PihwYXJlbnQpKQorICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybShk
b3duY2FzdDxSZW5kZXJTVkdSb290PihwYXJlbnQpLmxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0o
KSk7CiAKICAgICB0cmFuc2Zvcm1TdGF0ZS5hcHBseVRyYW5zZm9ybShyZW5kZXJlci5sb2NhbFRv
UGFyZW50VHJhbnNmb3JtKCkpOwogCkBAIC0xMTAsOSArMTEwLDkgQEAgY29uc3QgUmVuZGVyRWxl
bWVudCogU1ZHUmVuZGVyU3VwcG9ydDo6cHVzaE1hcHBpbmdUb0NvbnRhaW5lcihjb25zdCBSZW5k
ZXJFbGVtZW4KICAgICAvLyBBdCB0aGUgU1ZHL0hUTUwgYm91bmRhcnkgKGFrYSBSZW5kZXJTVkdS
b290KSwgd2UgYXBwbHkgdGhlIGxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0gCiAgICAgLy8gdG8g
bWFwIGFuIGVsZW1lbnQgZnJvbSBTVkcgdmlld3BvcnQgY29vcmRpbmF0ZXMgdG8gQ1NTIGJveCBj
b29yZGluYXRlcy4KICAgICAvLyBSZW5kZXJTVkdSb290J3MgbWFwTG9jYWxUb0NvbnRhaW5lciBt
ZXRob2QgZXhwZWN0cyBDU1MgYm94IGNvb3JkaW5hdGVzLgotICAgIGlmIChwYXJlbnQuaXNTVkdS
b290KCkpIHsKKyAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4ocGFyZW50KSkgewogICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXgocmVuZGVyZXIubG9jYWxUb1BhcmVudFRyYW5zZm9y
bSgpKTsKLSAgICAgICAgbWF0cml4Lm11bHRpcGx5KHRvUmVuZGVyU1ZHUm9vdChwYXJlbnQpLmxv
Y2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0oKSk7CisgICAgICAgIG1hdHJpeC5tdWx0aXBseShkb3du
Y2FzdDxSZW5kZXJTVkdSb290PihwYXJlbnQpLmxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0oKSk7
CiAgICAgICAgIGdlb21ldHJ5TWFwLnB1c2goJnJlbmRlcmVyLCBtYXRyaXgpOwogICAgIH0gZWxz
ZQogICAgICAgICBnZW9tZXRyeU1hcC5wdXNoKCZyZW5kZXJlciwgcmVuZGVyZXIubG9jYWxUb1Bh
cmVudFRyYW5zZm9ybSgpKTsKQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBv
cnQ6OmNvbXB1dGVDb250YWluZXJCb3VuZGluZ0JveGVzKGNvbnN0IFJlbmRlckVsZW1lbnQmIGNv
bnRhaQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gRG9uJ3QgaW5jbHVkZSBl
bGVtZW50cyBpbiB0aGUgdW5pb24gdGhhdCBkbyBub3QgcmVuZGVyLgotICAgICAgICBpZiAoY3Vy
cmVudC0+aXNTVkdTaGFwZSgpICYmIHRvUmVuZGVyU1ZHU2hhcGUoY3VycmVudCktPmlzUmVuZGVy
aW5nRGlzYWJsZWQoKSkKKyAgICAgICAgaWYgKGlzPFJlbmRlclNWR1NoYXBlPigqY3VycmVudCkg
JiYgZG93bmNhc3Q8UmVuZGVyU1ZHU2hhcGU+KCpjdXJyZW50KS5pc1JlbmRlcmluZ0Rpc2FibGVk
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zZm9ybSA9IGN1cnJlbnQtPmxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3Bw
CmluZGV4IGIwNmE4ODk0MzM5OWZhOWRhYTIwZWYzODJkYTE0NDQ2OWI3NmU2ZjQuLjAxM2FhM2Qx
OTAyMzFiNzUzMWYzMWRlN2RkM2FjNzU5N2QwMmUyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtMjU4LDggKzI1
OCw4IEBAIHN0YXRpYyB2b2lkIHdyaXRlU3R5bGUoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyKQogICAgICAgICB3cml0ZU5hbWVWYWx1ZVBhaXIodHMsICJ0cmFu
c2Zvcm0iLCByZW5kZXJlci5sb2NhbFRyYW5zZm9ybSgpKTsKICAgICB3cml0ZUlmTm90RGVmYXVs
dCh0cywgImltYWdlIHJlbmRlcmluZyIsIHN0eWxlLmltYWdlUmVuZGVyaW5nKCksIFJlbmRlclN0
eWxlOjppbml0aWFsSW1hZ2VSZW5kZXJpbmcoKSk7CiAgICAgd3JpdGVJZk5vdERlZmF1bHQodHMs
ICJvcGFjaXR5Iiwgc3R5bGUub3BhY2l0eSgpLCBSZW5kZXJTdHlsZTo6aW5pdGlhbE9wYWNpdHko
KSk7Ci0gICAgaWYgKHJlbmRlcmVyLmlzU1ZHU2hhcGUoKSkgewotICAgICAgICBjb25zdCBhdXRv
JiBzaGFwZSA9IHRvUmVuZGVyU1ZHU2hhcGUocmVuZGVyZXIpOworICAgIGlmIChpczxSZW5kZXJT
VkdTaGFwZT4ocmVuZGVyZXIpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHNoYXBlID0gZG93bmNh
c3Q8UmVuZGVyU1ZHU2hhcGU+KHJlbmRlcmVyKTsKIAogICAgICAgICBDb2xvciBmYWxsYmFja0Nv
bG9yOwogICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50aW5nUmVzb3Vy
Y2UgPSBSZW5kZXJTVkdSZXNvdXJjZTo6c3Ryb2tlUGFpbnRpbmdSZXNvdXJjZShjb25zdF9jYXN0
PFJlbmRlclNWR1NoYXBlJj4oc2hhcGUpLCBzaGFwZS5zdHlsZSgpLCBmYWxsYmFja0NvbG9yKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggNzY2MDcwNjhlMDc1NDhlOWUzZTM3NTZhZTFiZWE0M2M3ZjI3YWNiMi4u
NmMxMmUxYzg3MTY0MmQzMTkyMTUzNGIxNzliOGMzZjA5NTdhMWU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0z
NDUsNyArMzQ1LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpjbGVhcjJEUm90YXRpb24o
QWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCiBib29sIFNWR1JlbmRlcmluZ0NvbnRleHQ6OmJ1
ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1hZ2VCdWZmZXIp
CiB7CiAgICAgQVNTRVJUKG1fcGFpbnRJbmZvKTsKLSAgICBBU1NFUlQobV9yZW5kZXJlci0+aXNT
VkdJbWFnZSgpKTsKKyAgICBBU1NFUlQoaXM8UmVuZGVyU1ZHSW1hZ2U+KCptX3JlbmRlcmVyKSk7
CiAgICAgRmxvYXRSZWN0IGJvdW5kaW5nQm94ID0gbV9yZW5kZXJlci0+b2JqZWN0Qm91bmRpbmdC
b3goKTsKIAogICAgIC8vIEludmFsaWRhdGUgYW4gZXhpc3RpbmcgYnVmZmVyIGlmIHRoZSBzY2Fs
ZSBpcyBub3QgY29ycmVjdC4KQEAgLTM2NCw3ICszNjQsNyBAQCBib29sIFNWR1JlbmRlcmluZ0Nv
bnRleHQ6OmJ1ZmZlckZvcmVncm91bmQoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiYgaW1h
Z2VCdQogICAgICAgICAgICAgYnVmZmVyZWRSZW5kZXJpbmdDb250ZXh0LT50cmFuc2xhdGUoLWJv
dW5kaW5nQm94LngoKSwgLWJvdW5kaW5nQm94LnkoKSk7CiAgICAgICAgICAgICBQYWludEluZm8g
YnVmZmVyZWRJbmZvKCptX3BhaW50SW5mbyk7CiAgICAgICAgICAgICBidWZmZXJlZEluZm8uY29u
dGV4dCA9IGJ1ZmZlcmVkUmVuZGVyaW5nQ29udGV4dDsKLSAgICAgICAgICAgIHRvUmVuZGVyU1ZH
SW1hZ2UobV9yZW5kZXJlciktPnBhaW50Rm9yZWdyb3VuZChidWZmZXJlZEluZm8pOworICAgICAg
ICAgICAgZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCptX3JlbmRlcmVyKS5wYWludEZvcmVncm91
bmQoYnVmZmVyZWRJbmZvKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZXNvdXJjZXNDeWNsZVNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1Jlc291cmNlc0N5Y2xlU29sdmVyLmNwcAppbmRleCA3ZTg0OWMwMzMwOTg2NmVmYWRkOGVhMWQw
OTZmY2JlZmY5MjJjYmFhLi43NmUxZmJkNjRmMGExNmYwMjc4OTNhNTgxM2RkZmVmMDM2ZjM4Njhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0N5
Y2xlU29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291
cmNlc0N5Y2xlU29sdmVyLmNwcApAQCAtMTI1LDggKzEyNSw4IEBAIHZvaWQgU1ZHUmVzb3VyY2Vz
Q3ljbGVTb2x2ZXI6OnJlc29sdmVDeWNsZXMoKQogICAgICAgICBtX2FsbFJlc291cmNlcy5hZGQo
cmVzb3VyY2UpOwogCiAgICAgLy8gSWYgd2UncmUgYSByZXNvdXJjZSwgYWRkIG91cnNlbHZlcyB0
byB0aGUgSGFzaFNldC4KLSAgICBpZiAobV9yZW5kZXJlci5pc1NWR1Jlc291cmNlQ29udGFpbmVy
KCkpCi0gICAgICAgIG1fYWxsUmVzb3VyY2VzLmFkZCgmdG9SZW5kZXJTVkdSZXNvdXJjZUNvbnRh
aW5lcihtX3JlbmRlcmVyKSk7CisgICAgaWYgKGlzPFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
PihtX3JlbmRlcmVyKSkKKyAgICAgICAgbV9hbGxSZXNvdXJjZXMuYWRkKCZkb3duY2FzdDxSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lcj4obV9yZW5kZXJlcikpOwogCiAgICAgQVNTRVJUKCFtX2Fs
bFJlc291cmNlcy5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSb290SW5saW5lQm94LmNwcAppbmRleCA1YjkyMWVkMDM2NTQ4Y2QzMmIyMDI1Y2Y4
ZGYzMWE5MTcwYzljZGFkLi5iMmMyZjJkMTMwNjJlMTZkNGRiOGNhMDg2ZDYzYWYwNThiMGRjYjk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jvb3RJbmxpbmVC
b3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUm9vdElubGluZUJv
eC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgU1ZHUm9vdElubGluZUJveDo6U1ZHUm9vdElubGluZUJv
eChSZW5kZXJTVkdUZXh0JiByZW5kZXJTVkdUZXh0KQogCiBSZW5kZXJTVkdUZXh0JiBTVkdSb290
SW5saW5lQm94OjpyZW5kZXJTVkdUZXh0KCkKIHsKLSAgICByZXR1cm4gdG9SZW5kZXJTVkdUZXh0
KGJsb2NrRmxvdygpKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8UmVuZGVyU1ZHVGV4dD4oYmxvY2tG
bG93KCkpOwogfQogCiB2b2lkIFNWR1Jvb3RJbmxpbmVCb3g6OnBhaW50KFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIExheW91dFVuaXQsIExheW91
dFVuaXQpCkBAIC03NiwxNCArNzYsMTMgQEAgdm9pZCBTVkdSb290SW5saW5lQm94OjpwYWludChQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKIAogdm9p
ZCBTVkdSb290SW5saW5lQm94Ojpjb21wdXRlUGVyQ2hhcmFjdGVyTGF5b3V0SW5mb3JtYXRpb24o
KQogewotICAgIFJlbmRlclNWR1RleHQqIHRleHRSb290ID0gdG9SZW5kZXJTVkdUZXh0KCZibG9j
a0Zsb3coKSk7Ci0gICAgQVNTRVJUKHRleHRSb290KTsKKyAgICBhdXRvJiB0ZXh0Um9vdCA9IGRv
d25jYXN0PFJlbmRlclNWR1RleHQ+KGJsb2NrRmxvdygpKTsKIAotICAgIFZlY3RvcjxTVkdUZXh0
TGF5b3V0QXR0cmlidXRlcyo+JiBsYXlvdXRBdHRyaWJ1dGVzID0gdGV4dFJvb3QtPmxheW91dEF0
dHJpYnV0ZXMoKTsKKyAgICBWZWN0b3I8U1ZHVGV4dExheW91dEF0dHJpYnV0ZXMqPiYgbGF5b3V0
QXR0cmlidXRlcyA9IHRleHRSb290LmxheW91dEF0dHJpYnV0ZXMoKTsKICAgICBpZiAobGF5b3V0
QXR0cmlidXRlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh0ZXh0Um9v
dC0+bmVlZHNSZW9yZGVyaW5nKCkpCisgICAgaWYgKHRleHRSb290Lm5lZWRzUmVvcmRlcmluZygp
KQogICAgICAgICByZW9yZGVyVmFsdWVMaXN0cyhsYXlvdXRBdHRyaWJ1dGVzKTsKIAogICAgIC8v
IFBlcmZvcm0gU1ZHIHRleHQgbGF5b3V0IHBoYXNlIHR3byAoc2VlIFNWR1RleHRMYXlvdXRFbmdp
bmUgZm9yIGRldGFpbHMpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNs
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCmlu
ZGV4IDU1MTMwZWM4NThhY2MwMzBlODllYzg1Yjc4MDcwNTRmYTI1MTE0YWYuLjA4MmY3YWJhMDQz
ZWM1YWI2MmE4MTE3NDdhNzY4MmFiYWM1YTNmZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZW5kZXJTVkdTaGFwZSogcmVuZGVyZXIgPSB0b1Jl
bmRlclNWR1NoYXBlKHRoaXMtPnJlbmRlcmVyKCkpOworICAgIGF1dG8qIHJlbmRlcmVyID0gZG93
bmNhc3Q8UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVyKCkpOwogICAgIGlmICghcmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGI5
Mzk5ZjMxMWYwNzA0NjIwMTkxMzlhMzVkZWE1YjQzYjNlN2YwMDQuLmNiMzQ3ZDRlNWFkZTVmMDQ5
NmQxM2Y2Y2Q5YTQ2MDgwODExNmM0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAg
LTEwNTIsOCArMTA1Miw4IEBAIHZvaWQgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoYXR0ck5hbWUgPT0gSFRNTE5h
bWVzOjppZEF0dHIpIHsKICAgICAgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7
CiAgICAgICAgIC8vIE5vdGlmeSByZXNvdXJjZXMgYWJvdXQgaWQgY2hhbmdlcywgdGhpcyBpcyBp
bXBvcnRhbnQgYXMgd2UgY2FjaGUgcmVzb3VyY2VzIGJ5IGlkIGluIFNWR0RvY3VtZW50RXh0ZW5z
aW9ucwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VDb250
YWluZXIoKSkKLSAgICAgICAgICAgIHRvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIoKnJlbmRl
cmVyKS5pZENoYW5nZWQoKTsKKyAgICAgICAgaWYgKGlzPFJlbmRlclNWR1Jlc291cmNlQ29udGFp
bmVyPihyZW5kZXJlcikpCisgICAgICAgICAgICBkb3duY2FzdDxSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcj4oKnJlbmRlcmVyKS5pZENoYW5nZWQoKTsKICAgICAgICAgaWYgKGluRG9jdW1lbnQo
KSkKICAgICAgICAgICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlc0lmTmVlZGVkKCk7CiAgICAgICAg
IFNWR0VsZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudCh0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCmluZGV4IDE1NmQ2MjM3
YjZkNGM3ZmZhMGY0Y2RjYzg2ZmVhM2VjNjVjZGVmYTguLmZmMzhhMDA5YjUwMGNiNTdiYTUwNjJi
ZmRkZmFlMTFmYjZmNGJmYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50
LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBSZW5kZXJTVkdTaGFwZSogcmVuZGVyZXIgPSB0b1JlbmRlclNWR1No
YXBlKHRoaXMtPnJlbmRlcmVyKCkpOworICAgIGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVu
ZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVyKCkpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCA1
NzQ4NzY1NmQ0NGNhNGU1YzM2ZDAwYzRiMmFkZGI1ZTExMmQ0MjE1Li5iYjg0NzRlY2I5M2EzNDEy
ZThjNzYxZjA4ZGY3N2VjZDE4YWI2ZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcApAQCAtMTQzLDEyICsxNDMsMTIgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAg
ICBhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzTGVuZ3RoQXR0cmlidXRlKSB7Ci0gICAgICAg
IGlmICh0b1JlbmRlclNWR0ltYWdlKHJlbmRlcmVyKS0+dXBkYXRlSW1hZ2VWaWV3cG9ydCgpKQor
ICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJlcikudXBkYXRlSW1h
Z2VWaWV3cG9ydCgpKQogICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMTc1LDcgKzE3NSw3IEBAIGJvb2wgU1ZHSW1hZ2VFbGVtZW50OjpoYXZl
TG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKQogCiB2b2lkIFNWR0ltYWdlRWxlbWVudDo6ZGlkQXR0
YWNoUmVuZGVyZXJzKCkKIHsKLSAgICBpZiAoUmVuZGVyU1ZHSW1hZ2UqIGltYWdlT2JqID0gdG9S
ZW5kZXJTVkdJbWFnZShyZW5kZXJlcigpKSkgeworICAgIGlmIChhdXRvKiBpbWFnZU9iaiA9IGRv
d25jYXN0PFJlbmRlclNWR0ltYWdlPihyZW5kZXJlcigpKSkgewogICAgICAgICBpZiAoaW1hZ2VP
YmotPmltYWdlUmVzb3VyY2UoKS5oYXNJbWFnZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAppbmRleCBkYjA4YzExZmFlYzMwNzY5ODJi
YjA3OGIzOTc3M2EyNzE3YjI4N2FlLi5mZjcwOTg2YmRiMmFiNGY2MjEzMzAwN2Q1NWRhOGRhNGI4
NTc1OTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKQEAgLTExNyw3ICsx
MTcsNyBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChpc0xlbmd0aEF0dHJpYnV0ZSkKICAgICAg
ICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIAotICAgIFJlbmRlclNWR1No
YXBlKiByZW5kZXJlciA9IHRvUmVuZGVyU1ZHU2hhcGUodGhpcy0+cmVuZGVyZXIoKSk7CisgICAg
YXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIo
KSk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BvbHlFbGVtZW50LmNwcAppbmRleCA0ODRkZjg5NzkzN2MzYzZkZDFhZTQ5NzVlYzczYmVi
ZGE1ZmU2YWI5Li44NTg4MmU1YzIzMzA2YmU2YWZjMDgyNzBmMzc3ZWUyMzBlYmJiNWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IFNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogCiAgICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBp
bnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKIAotICAgIFJlbmRlclNWR1NoYXBlKiByZW5kZXJlciA9
IHRvUmVuZGVyU1ZHU2hhcGUodGhpcy0+cmVuZGVyZXIoKSk7CisgICAgYXV0byogcmVuZGVyZXIg
PSBkb3duY2FzdDxSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUmVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcAppbmRleCBjMzQxMzI3NTNhNTI2NDdiY2M0ZWY5NDY2MTc3NmEyY2EyNzFiMGZhLi5kODBk
ODFhMThlMzBkMWZiOGExNTE5ZWJiNjBlNmVhOTNiYzgxZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSZWN0RWxlbWVudC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFNWR1JlY3RFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVuZGVyU1ZHU2hhcGUqIHJlbmRlcmVyID0gdG9S
ZW5kZXJTVkdTaGFwZSh0aGlzLT5yZW5kZXJlcigpKTsKKyAgICBhdXRvKiByZW5kZXJlciA9IGRv
d25jYXN0PFJlbmRlclNWR1NoYXBlPih0aGlzLT5yZW5kZXJlcigpKTsKICAgICBpZiAoIXJlbmRl
cmVyKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApp
bmRleCA3MTNkYjg3NWRmM2E2ZDcxZGE0MDRhMmQzMWM2NGI4YWJlY2ZiZmViLi4xMmZlZDdlYzIx
MjY2NmVjOGEwNGVkNzJjMDZjMDRlNTg2MmI4ODJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwCkBAIC00MjMsNyArNDIzLDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1l
bnQ6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0YWJsZTo6Q1RNU2MKICAg
ICAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KHRoaXMpOwogICAgICAgICB0cmFu
c2Zvcm0udHJhbnNsYXRlKHgoKS52YWx1ZShsZW5ndGhDb250ZXh0KSwgeSgpLnZhbHVlKGxlbmd0
aENvbnRleHQpKTsKICAgICB9IGVsc2UgaWYgKG1vZGUgPT0gU1ZHTG9jYXRhYmxlOjpTY3JlZW5T
Y29wZSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpIHsKKyAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhdGlvbjsKICAgICAgICAgICAg
IGZsb2F0IHpvb21GYWN0b3IgPSAxOwogCkBAIC00MzEsOCArNDMxLDggQEAgQWZmaW5lVHJhbnNm
b3JtIFNWR1NWR0VsZW1lbnQ6OmxvY2FsQ29vcmRpbmF0ZVNwYWNlVHJhbnNmb3JtKFNWR0xvY2F0
YWJsZTo6Q1RNU2MKICAgICAgICAgICAgIC8vIHRvIG1hcCBhbiBlbGVtZW50IGZyb20gU1ZHIHZp
ZXdwb3J0IGNvb3JkaW5hdGVzIHRvIENTUyBib3ggY29vcmRpbmF0ZXMuCiAgICAgICAgICAgICAv
LyBSZW5kZXJTVkdSb290J3MgbG9jYWxUb0Fic29sdXRlIG1ldGhvZCBleHBlY3RzIENTUyBib3gg
Y29vcmRpbmF0ZXMuCiAgICAgICAgICAgICAvLyBXZSBhbHNvIG5lZWQgdG8gYWRqdXN0IGZvciB0
aGUgem9vbSBsZXZlbCBmYWN0b3JlZCBpbnRvIENTUyBjb29yZGluYXRlcyAoYnVnICM5NjM2MSku
Ci0gICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzU1ZHUm9vdCgpKSB7Ci0gICAgICAgICAgICAg
ICAgbG9jYXRpb24gPSB0b1JlbmRlclNWR1Jvb3QocmVuZGVyZXIpLT5sb2NhbFRvQm9yZGVyQm94
VHJhbnNmb3JtKCkubWFwUG9pbnQobG9jYXRpb24pOworICAgICAgICAgICAgaWYgKGlzPFJlbmRl
clNWR1Jvb3Q+KCpyZW5kZXJlcikpIHsKKyAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGRvd25j
YXN0PFJlbmRlclNWR1Jvb3Q+KCpyZW5kZXJlcikubG9jYWxUb0JvcmRlckJveFRyYW5zZm9ybSgp
Lm1hcFBvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgICAgICB6b29tRmFjdG9yID0gMSAvIHJl
bmRlcmVyLT5zdHlsZSgpLmVmZmVjdGl2ZVpvb20oKTsKICAgICAgICAgICAgIH0KIApAQCAtNTQ2
LDkgKzU0Niw5IEBAIEZsb2F0UmVjdCBTVkdTVkdFbGVtZW50OjpjdXJyZW50Vmlld0JveFJlY3Qo
KSBjb25zdAogICAgIEZsb2F0UmVjdCB1c2VWaWV3Qm94ID0gdmlld0JveCgpOwogICAgIGlmICgh
dXNlVmlld0JveC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB1c2VWaWV3Qm94OwotICAgIGlm
ICghcmVuZGVyZXIoKSB8fCAhcmVuZGVyZXIoKS0+aXNTVkdSb290KCkpCisgICAgaWYgKCFpczxS
ZW5kZXJTVkdSb290PihyZW5kZXJlcigpKSkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwot
ICAgIGlmICghdG9SZW5kZXJTVkdSb290KHJlbmRlcmVyKCkpLT5pc0VtYmVkZGVkVGhyb3VnaFNW
R0ltYWdlKCkpCisgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJTVkdSb290PigqcmVuZGVyZXIoKSku
aXNFbWJlZGRlZFRocm91Z2hTVkdJbWFnZSgpKQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7
CiAKICAgICBMZW5ndGggaW50cmluc2ljV2lkdGggPSB0aGlzLT5pbnRyaW5zaWNXaWR0aCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKaW5kZXggMjI3ZTNhODM4OTdj
MzgwZThhZGY4YWE4MDA2ZjFjYTBlMzFiZWZlNS4uNWM4OGE3NGZkMmMxZmRiYjA2NzA5ZDFmOGQ4
OTkwMjI0ZDAyNmQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgU1ZHSW1hZ2U6OnNldENvbnRhaW5lclNpemUoY29uc3Qg
RmxvYXRTaXplJiBzaXplKQogICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdGhpcy0+
cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAgICByZXR1cm47Ci0g
ICAgUmVuZGVyU1ZHUm9vdCogcmVuZGVyZXIgPSB0b1JlbmRlclNWR1Jvb3Qocm9vdEVsZW1lbnQt
PnJlbmRlcmVyKCkpOworICAgIGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUm9v
dD4ocm9vdEVsZW1lbnQtPnJlbmRlcmVyKCkpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTA5LDcgKzEwOSw3IEBAIEludFNpemUgU1ZHSW1hZ2U6OmNvbnRhaW5l
clNpemUoKSBjb25zdAogICAgIGlmICghcm9vdEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBJbnRT
aXplKCk7CiAKLSAgICBSZW5kZXJTVkdSb290KiByZW5kZXJlciA9IHRvUmVuZGVyU1ZHUm9vdChy
b290RWxlbWVudC0+cmVuZGVyZXIoKSk7CisgICAgYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxS
ZW5kZXJTVkdSb290Pihyb290RWxlbWVudC0+cmVuZGVyZXIoKSk7CiAgICAgaWYgKCFyZW5kZXJl
cikKICAgICAgICAgcmV0dXJuIEludFNpemUoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>