<?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>101163</bug_id>
          
          <creation_ts>2012-11-04 01:26:59 -0800</creation_ts>
          <short_desc>Exploit shared attribute data to avoid parsing identical &quot;style&quot; attributes.</short_desc>
          <delta_ts>2012-11-17 14:36:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>758080</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-04 01:26:59 -0800</bug_when>
    <thetext>Build on top of bug 100990 to avoid parsing the &quot;style&quot; attribute more than necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758081</commentid>
    <comment_count>1</comment_count>
      <attachid>172242</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-04 01:36:19 -0800</bug_when>
    <thetext>Created attachment 172242
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758086</commentid>
    <comment_count>2</comment_count>
      <attachid>172242</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-04 02:07:59 -0800</bug_when>
    <thetext>Comment on attachment 172242
Patch

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

New failing tests:
fast/table/border-collapsing/rtl-border-collapsing-vertical.html
fast/table/border-collapsing/equal-precedence-resolution-vertical.html
fast/writing-mode/block-level-images.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758096</commentid>
    <comment_count>3</comment_count>
      <attachid>172242</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-04 02:48:38 -0800</bug_when>
    <thetext>Comment on attachment 172242
Patch

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

New failing tests:
fast/table/border-collapsing/rtl-border-collapsing-vertical.html
fast/table/border-collapsing/equal-precedence-resolution-vertical.html
fast/writing-mode/block-level-images.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769767</commentid>
    <comment_count>4</comment_count>
      <attachid>174781</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-16 16:43:20 -0800</bug_when>
    <thetext>Created attachment 174781
Patch II: The Hackening</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769771</commentid>
    <comment_count>5</comment_count>
      <attachid>174781</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-16 16:49:57 -0800</bug_when>
    <thetext>Comment on attachment 174781
Patch II: The Hackening

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769773</commentid>
    <comment_count>6</comment_count>
      <attachid>174781</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-11-16 16:52:39 -0800</bug_when>
    <thetext>Comment on attachment 174781
Patch II: The Hackening

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        * css/StyleResolver.cpp:
&gt; +        (WebCore::isCacheableInMatchedPropertiesCache):
&gt; +
&gt; +            Disable the matched properties cache for styles with non-standard writing-mode.
&gt; +            This is necessary because some CSS properties have different meaning depending on context -
&gt; +            properties handled by CSSProperty::resolveDirectionAwareProperty().
&gt; +

Would be good to explain how this breaks with the other changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769778</commentid>
    <comment_count>7</comment_count>
      <attachid>174782</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-16 16:55:48 -0800</bug_when>
    <thetext>Created attachment 174782
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769802</commentid>
    <comment_count>8</comment_count>
      <attachid>174782</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 17:35:14 -0800</bug_when>
    <thetext>Comment on attachment 174782
Patch for landing

Clearing flags on attachment: 174782

Committed r135021: &lt;http://trac.webkit.org/changeset/135021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>769803</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-16 17:35:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770000</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-17 13:14:58 -0800</bug_when>
    <thetext>Hard to be sure it was this patch, but it seems likely that this was a ~1% improvement on one of the chromium page load tests: http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/intl1/report.html?rev=168390&amp;graph=times&amp;trace=t&amp;history=40</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770010</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-17 14:18:13 -0800</bug_when>
    <thetext>Not sure how, but I think this patch may have regressed DOM/CreateNodes by ~9%: http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dom_perf/report.html?rev=168452&amp;graph=CreateNodes&amp;trace=score&amp;history=50

The regression range is http://trac.webkit.org/log/?verbose=on&amp;rev=135028&amp;stop_rev=135020. This seems like the only possible culprit in that range.

I believe that test suite is running http://trac.webkit.org/browser/trunk/PerformanceTests/DOM/CreateNodes.html.

I tried looking at the equivalent graphs at http://webkit-perf.appspot.com/, but I couldn&apos;t get it to load them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770014</commentid>
    <comment_count>12</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-11-17 14:36:12 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Not sure how, but I think this patch may have regressed DOM/CreateNodes by ~9%: http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dom_perf/report.html?rev=168452&amp;graph=CreateNodes&amp;trace=score&amp;history=50
&gt; 
&gt; The regression range is http://trac.webkit.org/log/?verbose=on&amp;rev=135028&amp;stop_rev=135020. This seems like the only possible culprit in that range.
&gt; 
&gt; I believe that test suite is running http://trac.webkit.org/browser/trunk/PerformanceTests/DOM/CreateNodes.html.
&gt; 
&gt; I tried looking at the equivalent graphs at http://webkit-perf.appspot.com/, but I couldn&apos;t get it to load them.

Hrmf. I was afraid that might happen. I couldn&apos;t prove that it was slower on my machine, but the test is taking a slightly slower path when cloning the style attribute now.

We used to have an optimization to bypass the whole Element::attributeChanged() virtual dispatch for HTMLNames::styleAttr when cloning attributes and just call StyledElement::styleAttributeChanged() directly. 

While the main purpose of this was to dodge the reparsing of the inline CSS, it also avoided some things that I&apos;m not entirely sure are OK to skip, notably DOM tree version revving and node lists invalidation. Not to mention that the code wasn&apos;t very future-proof since anything added to attributeChanged() in the future would also get skipped for style attributes.

I&apos;m gonna see if I can make up for the regression somehow, because I&apos;d like the cloned element to jump through all the same hoops as the source element. Filed bug 102598 for this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172242</attachid>
            <date>2012-11-04 01:36:19 -0800</date>
            <delta_ts>2012-11-16 16:43:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101163.diff</filename>
            <type>text/plain</type>
            <size>977</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCBjZWNhZTA1Li40ZGM5ODU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0xNjEsNyArMTYxLDEwIEBAIHZv
aWQgU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9taWNTdHJpCiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6c3R5bGVBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJpbmcsIFNob3VsZFJlcGFy
c2VTdHlsZUF0dHJpYnV0ZSBzaG91bGRSZXBhcnNlKQogewotICAgIGlmIChzaG91bGRSZXBhcnNl
KSB7CisgICAgLy8gT3B0aW1pemF0aW9uIHRvIGF2b2lkIHJlcGFyc2luZyBtdWx0aXBsZSB0aW1l
cyB3aGVuIGF0dHJpYnV0ZURhdGEoKSBpcyBzaGFyZWQgd2l0aCBvdGhlciBlbGVtZW50cy4KKyAg
ICBib29sIGNhbkF2b2lkUmVwYXJzZSA9ICFhdHRyaWJ1dGVEYXRhKCktPmlzTXV0YWJsZSgpICYm
IGF0dHJpYnV0ZURhdGEoKS0+aW5saW5lU3R5bGUoKTsKKworICAgIGlmIChzaG91bGRSZXBhcnNl
ICYmICFjYW5Bdm9pZFJlcGFyc2UpIHsKICAgICAgICAgV1RGOjpPcmRpbmFsTnVtYmVyIHN0YXJ0
TGluZU51bWJlciA9IFdURjo6T3JkaW5hbE51bWJlcjo6YmVmb3JlRmlyc3QoKTsKICAgICAgICAg
aWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCkg
JiYgIWRvY3VtZW50KCktPmlzSW5Eb2N1bWVudFdyaXRlKCkpCiAgICAgICAgICAgICBzdGFydExp
bmVOdW1iZXIgPSBkb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKS0+bGluZU51
bWJlcigpOwo=
</data>
<flag name="commit-queue"
          id="186465"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174781</attachid>
            <date>2012-11-16 16:43:20 -0800</date>
            <delta_ts>2012-11-16 16:55:48 -0800</delta_ts>
            <desc>Patch II: The Hackening</desc>
            <filename>bug-101163-v2.diff</filename>
            <type>text/plain</type>
            <size>17481</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0OWEwNzkwLi4wMTU2MDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTItMTEtMTYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEV4cGxvaXQgc2hhcmVkIGF0dHJpYnV0ZSBkYXRhIHRvIGF2b2lkIHBhcnNpbmcgaWRlbnRp
Y2FsICJzdHlsZSIgYXR0cmlidXRlcy4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTAx
MTYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRy
YWNrIHRoZSAiaW5saW5lIHN0eWxlIGRpcnR5IiBzdGF0ZSBvbiBFbGVtZW50QXR0cmlidXRlRGF0
YSBpbnN0ZWFkIG9mIGluIGEgTm9kZSBmbGFnLgorICAgICAgICBUaGlzIGFsbG93cyB1cyB0byBh
dm9pZCBkdXBsaWNhdGUgd29yayBmb3IgRWxlbWVudEF0dHJpYnV0ZURhdGEgdGhhdCBhcmUgc2hh
cmVkIGJldHdlZW4gbXVsdGlwbGUgZWxlbWVudHMsCisgICAgICAgIHNpbmNlIHRoZSBzdGF0ZSBp
cyBubyBsb25nZXIgcGVyLUVsZW1lbnQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc0NhY2hlYWJsZUluTWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZSk6CisKKyAgICAgICAgICAgIERpc2FibGUgdGhlIG1hdGNoZWQgcHJvcGVydGllcyBjYWNoZSBm
b3Igc3R5bGVzIHdpdGggbm9uLXN0YW5kYXJkIHdyaXRpbmctbW9kZS4KKyAgICAgICAgICAgIFRo
aXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc29tZSBDU1MgcHJvcGVydGllcyBoYXZlIGRpZmZlcmVu
dCBtZWFuaW5nIGRlcGVuZGluZyBvbiBjb250ZXh0IC0KKyAgICAgICAgICAgIHByb3BlcnRpZXMg
aGFuZGxlZCBieSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoKS4K
KworICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpFbGVtZW50
QXR0cmlidXRlRGF0YSk6CisgICAgICAgICogZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6RWxlbWVudEF0dHJpYnV0ZURh
dGEpOgorICAgICAgICAoRWxlbWVudEF0dHJpYnV0ZURhdGEpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVJbnZhbGlkQXR0cmlidXRl
cyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6Z2V0QXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZUF0dHJp
YnV0ZSk6CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZEVsZW1lbnQ6OmludmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSk6CisgICAgICAgICogZG9t
L1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6dXBk
YXRlU3R5bGVBdHRyaWJ1dGUpOgorCisgICAgICAgICAgICBNb3ZlICJzdHlsZSBhdHRyaWJ1dGUg
ZGlydHkiIGZsYWcgdG8gRWxlbWVudEF0dHJpYnV0ZURhdGEuCisKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KToKKworICAgICAgICAgICAgUmVt
b3ZlIHVnbHkgb3B0aW1pemF0aW9uIHRvIGF2b2lkIHJlcGFyc2luZyBpbmxpbmUgc3R5bGUgd2hl
biBjbG9uaW5nIGVsZW1lbnRzLiBUaGlzIG5vdyBoYXBwZW5zCisgICAgICAgICAgICBhdXRvbWFn
aWNhbGx5IHNpbmNlIGNsb25pbmcgbm9kZXMganVzdCByZWZzIHRoZSBvcmlnaW5hbCBhdHRyaWJ1
dGUgZGF0YS4KKworICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnVwZGF0ZVN0eWxlQXR0cmlidXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlRnJvbVN0cmluZyk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6aW5saW5lU3R5bGVDaGFuZ2VkKToKKworICAgICAg
ICAgICAgQXZvaWQgcmVwYXJzaW5nIHRoZSBpbmxpbmUgc3R5bGUgaWYgdGhlIGVsZW1lbnQncyBh
dHRyaWJ1dGUgZGF0YSBpcyBpbW11dGFibGUgYW5kIGFscmVhZHkgaGFzCisgICAgICAgICAgICBh
IHBhcnNlZCBpbmxpbmVTdHlsZSgpLiBTcGxpdCB0aGUgc2V0LWlubGluZS1zdHlsZS1mcm9tLXN0
cmluZyBjb2RlIG91dCBvZiBzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoKQorICAgICAgICAgICAgdG8g
bWFrZSB0aGUgY29kZSBtb3JlIHVuZGVyc3RhbmRhYmxlLgorCiAyMDEyLTExLTE2ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KIAogICAgICAgICBTaW11bGF0ZWQgZXZlbnRzIGluc3RhbmNl
cyBkbyBub3QgYWxsIGhhdmUgdGhlIHNhbWUgdW5kZXJseWluZyBldmVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IDIxYmJkNjAuLmZmZjYwYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTI0MDQsNiArMjQwNCw4IEBAIHN0YXRpYyBib29sIGlz
Q2FjaGVhYmxlSW5NYXRjaGVkUHJvcGVydGllc0NhY2hlKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQs
IGNvbnN0IFJlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoc3R5bGUtPnpvb20oKSAh
PSBSZW5kZXJTdHlsZTo6aW5pdGlhbFpvb20oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IGlmIChzdHlsZS0+d3JpdGluZ01vZGUoKSAhPSBSZW5kZXJTdHlsZTo6aW5pdGlhbFdyaXRpbmdN
b2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAvLyBUaGUgY2FjaGUgYXNzdW1lcyBz
dGF0aWMga25vd2xlZGdlIGFib3V0IHdoaWNoIHByb3BlcnRpZXMgYXJlIGluaGVyaXRlZC4KICAg
ICBpZiAocGFyZW50U3R5bGUtPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBkNWFhZGQyLi44
NjBjMWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zMDQsNyArMzA0LDcgQEAgYm9vbCBF
bGVtZW50OjpoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIAog
Y29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSkgY29uc3QKIHsKLSAgICBpZiAoVU5MSUtFTFkobmFtZSA9PSBzdHlsZUF0dHIp
ICYmICFpc1N0eWxlQXR0cmlidXRlVmFsaWQoKSkKKyAgICBpZiAoVU5MSUtFTFkobmFtZSA9PSBz
dHlsZUF0dHIpICYmIGF0dHJpYnV0ZURhdGEoKSAmJiBhdHRyaWJ1dGVEYXRhKCktPm1fc3R5bGVB
dHRyaWJ1dGVJc0RpcnR5KQogICAgICAgICB1cGRhdGVTdHlsZUF0dHJpYnV0ZSgpOwogCiAjaWYg
RU5BQkxFKFNWRykKQEAgLTY2Miw3ICs2NjIsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIEVsZW1l
bnQ6OmdldEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgYm9v
bCBpZ25vcmVDYXNlID0gc2hvdWxkSWdub3JlQXR0cmlidXRlQ2FzZSh0aGlzKTsKIAogICAgIC8v
IFVwZGF0ZSB0aGUgJ3N0eWxlJyBhdHRyaWJ1dGUgaWYgaXQncyBpbnZhbGlkIGFuZCBiZWluZyBy
ZXF1ZXN0ZWQ6Ci0gICAgaWYgKCFpc1N0eWxlQXR0cmlidXRlVmFsaWQoKSAmJiBlcXVhbFBvc3Np
Ymx5SWdub3JpbmdDYXNlKG5hbWUsIHN0eWxlQXR0ci5sb2NhbE5hbWUoKSwgaWdub3JlQ2FzZSkp
CisgICAgaWYgKGF0dHJpYnV0ZURhdGEoKSAmJiBhdHRyaWJ1dGVEYXRhKCktPm1fc3R5bGVBdHRy
aWJ1dGVJc0RpcnR5ICYmIGVxdWFsUG9zc2libHlJZ25vcmluZ0Nhc2UobmFtZSwgc3R5bGVBdHRy
LmxvY2FsTmFtZSgpLCBpZ25vcmVDYXNlKSkKICAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUo
KTsKIAogI2lmIEVOQUJMRShTVkcpCkBAIC0xNjUyLDcgKzE2NTIsNyBAQCB2b2lkIEVsZW1lbnQ6
OnJlbW92ZUF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgQXRvbWljU3Ry
aW5nIGxvY2FsTmFtZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcykgPyBuYW1lLmxv
d2VyKCkgOiBuYW1lOwogICAgIHNpemVfdCBpbmRleCA9IGF0dHJpYnV0ZURhdGEoKS0+Z2V0QXR0
cmlidXRlSXRlbUluZGV4KGxvY2FsTmFtZSwgZmFsc2UpOwogICAgIGlmIChpbmRleCA9PSBub3RG
b3VuZCkgewotICAgICAgICBpZiAoVU5MSUtFTFkobG9jYWxOYW1lID09IHN0eWxlQXR0cikgJiYg
IWlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpICYmIGlzU3R5bGVkRWxlbWVudCgpKQorICAgICAgICBp
ZiAoVU5MSUtFTFkobG9jYWxOYW1lID09IHN0eWxlQXR0cikgJiYgYXR0cmlidXRlRGF0YSgpLT5t
X3N0eWxlQXR0cmlidXRlSXNEaXJ0eSAmJiBpc1N0eWxlZEVsZW1lbnQoKSkKICAgICAgICAgICAg
IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPih0aGlzKS0+cmVtb3ZlQWxsSW5saW5lU3R5bGVQ
cm9wZXJ0aWVzKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNDQ0LDggKzI0NDQsNiBA
QCB2b2lkIEVsZW1lbnQ6OmNsb25lQXR0cmlidXRlc0Zyb21FbGVtZW50KGNvbnN0IEVsZW1lbnQm
IG90aGVyKQogICAgIGlmIChoYXNTeW50aGV0aWNBdHRyQ2hpbGROb2RlcygpKQogICAgICAgICBk
ZXRhY2hBbGxBdHRyTm9kZXNGcm9tRWxlbWVudCgpOwogCi0gICAgc2V0SXNTdHlsZUF0dHJpYnV0
ZVZhbGlkKG90aGVyLmlzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpKTsKLQogICAgIG90aGVyLnVwZGF0
ZUludmFsaWRBdHRyaWJ1dGVzKCk7CiAgICAgaWYgKCFvdGhlci5tX2F0dHJpYnV0ZURhdGEpIHsK
ICAgICAgICAgbV9hdHRyaWJ1dGVEYXRhLmNsZWFyKCk7CkBAIC0yNDc2LDExICsyNDc0LDYgQEAg
dm9pZCBFbGVtZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBv
dGhlcikKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2F0dHJpYnV0ZURhdGEtPmxl
bmd0aCgpOyArK2kpIHsKICAgICAgICAgY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBjb25z
dF9jYXN0PGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVEYXRhKj4obV9hdHRyaWJ1dGVEYXRhLmdldCgp
KS0+YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgLy8gVGhpcyBvcHRpbWl6YXRpb24gaXNuJ3Qg
dmVyeSBuaWNlbHkgZmFjdG9yZWQsIGJ1dCBhIGh1Z2Ugd2luIGZvciBjbG9uaW5nIGVsZW1lbnRz
IHdpdGggaW5saW5lIHN0eWxlLgotICAgICAgICBpZiAoaXNTdHlsZWRFbGVtZW50KCkgJiYgYXR0
cmlidXRlLT5uYW1lKCkgPT0gSFRNTE5hbWVzOjpzdHlsZUF0dHIpIHsKLSAgICAgICAgICAgIHN0
YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPih0aGlzKS0+c3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJpYnV0ZS0+dmFsdWUoKSwgU3R5bGVkRWxlbWVudDo6RG9Ob3RSZXBhcnNlU3R5bGVBdHRyaWJ1
dGUpOwotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KICAgICAgICAgYXR0cmlidXRl
Q2hhbmdlZChhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAppbmRleCBmODc0ZTRiLi5mMGZmMDJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKQEAgLTczMiw3ICs3MzIsNyBAQCBpbmxpbmUgQXR0cmlidXRlKiBFbGVtZW50OjpnZXRBdHRy
aWJ1dGVJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpCiAKIGlubGluZSB2b2lkIEVsZW1l
bnQ6OnVwZGF0ZUludmFsaWRBdHRyaWJ1dGVzKCkgY29uc3QKIHsKLSAgICBpZiAoIWlzU3R5bGVB
dHRyaWJ1dGVWYWxpZCgpKQorICAgIGlmIChhdHRyaWJ1dGVEYXRhKCkgJiYgYXR0cmlidXRlRGF0
YSgpLT5tX3N0eWxlQXR0cmlidXRlSXNEaXJ0eSkKICAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1
dGUoKTsKIAogI2lmIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmNwcAppbmRleCBiYTkxYmMxLi45ODE0MTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHAKQEAgLTgzLDYgKzgzLDcgQEAgRWxlbWVudEF0
dHJpYnV0ZURhdGE6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhKGNvbnN0IEVsZW1lbnRBdHRyaWJ1dGVE
YXRhJiBvdGhlciwgYm8KICAgICA6IG1faXNNdXRhYmxlKGlzTXV0YWJsZSkKICAgICAsIG1fYXJy
YXlTaXplKGlzTXV0YWJsZSA/IDAgOiBvdGhlci5sZW5ndGgoKSkKICAgICAsIG1fcHJlc2VudGF0
aW9uQXR0cmlidXRlU3R5bGVJc0RpcnR5KG90aGVyLm1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5
bGVJc0RpcnR5KQorICAgICwgbV9zdHlsZUF0dHJpYnV0ZUlzRGlydHkob3RoZXIubV9zdHlsZUF0
dHJpYnV0ZUlzRGlydHkpCiAgICAgLCBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKG90aGVy
Lm1fcHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUpCiAgICAgLCBtX2NsYXNzTmFtZXMob3RoZXIu
bV9jbGFzc05hbWVzKQogICAgICwgbV9pZEZvclN0eWxlUmVzb2x1dGlvbihvdGhlci5tX2lkRm9y
U3R5bGVSZXNvbHV0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
dHRyaWJ1dGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0dHJpYnV0ZURhdGEu
aAppbmRleCBmOTM1ODJlLi5kNWNlYTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEF0dHJpYnV0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEF0
dHJpYnV0ZURhdGEuaApAQCAtODksMTkgKzg5LDIyIEBAIHByb3RlY3RlZDoKICAgICAgICAgOiBt
X2lzTXV0YWJsZSh0cnVlKQogICAgICAgICAsIG1fYXJyYXlTaXplKDApCiAgICAgICAgICwgbV9w
cmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZUlzRGlydHkoZmFsc2UpCisgICAgICAgICwgbV9zdHls
ZUF0dHJpYnV0ZUlzRGlydHkoZmFsc2UpCiAgICAgeyB9CiAKICAgICBFbGVtZW50QXR0cmlidXRl
RGF0YSh1bnNpZ25lZCBhcnJheVNpemUpCiAgICAgICAgIDogbV9pc011dGFibGUoZmFsc2UpCiAg
ICAgICAgICwgbV9hcnJheVNpemUoYXJyYXlTaXplKQogICAgICAgICAsIG1fcHJlc2VudGF0aW9u
QXR0cmlidXRlU3R5bGVJc0RpcnR5KGZhbHNlKQorICAgICAgICAsIG1fc3R5bGVBdHRyaWJ1dGVJ
c0RpcnR5KGZhbHNlKQogICAgIHsgfQogCiAgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEoY29uc3Qg
RWxlbWVudEF0dHJpYnV0ZURhdGEmLCBib29sIGlzTXV0YWJsZSk7CiAKICAgICB1bnNpZ25lZCBt
X2lzTXV0YWJsZSA6IDE7Ci0gICAgdW5zaWduZWQgbV9hcnJheVNpemUgOiAzMDsKKyAgICB1bnNp
Z25lZCBtX2FycmF5U2l6ZSA6IDI5OwogICAgIG11dGFibGUgdW5zaWduZWQgbV9wcmVzZW50YXRp
b25BdHRyaWJ1dGVTdHlsZUlzRGlydHkgOiAxOworICAgIG11dGFibGUgdW5zaWduZWQgbV9zdHls
ZUF0dHJpYnV0ZUlzRGlydHkgOiAxOwogCiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVQcm9wZXJ0
eVNldD4gbV9pbmxpbmVTdHlsZTsKICAgICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNDY2MmVhYS4u
MjEzNGFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC05OCw3ICs5OCw3IEBAIGNsYXNzIFByb3BlcnR5Tm9k
ZUxpc3Q7CiAKIHR5cGVkZWYgaW50IEV4Y2VwdGlvbkNvZGU7CiAKLWNvbnN0IGludCBub2RlU3R5
bGVDaGFuZ2VTaGlmdCA9IDIwOworY29uc3QgaW50IG5vZGVTdHlsZUNoYW5nZVNoaWZ0ID0gMTk7
CiAKIC8vIFN5bnRoZXRpY1N0eWxlQ2hhbmdlIG1lYW5zIHRoYXQgd2UgbmVlZCB0byBnbyB0aHJv
dWdoIHRoZSBlbnRpcmUgc3R5bGUgY2hhbmdlIGxvZ2ljIGV2ZW4gdGhvdWdoCiAvLyBubyBzdHls
ZSBwcm9wZXJ0eSBoYXMgYWN0dWFsbHkgY2hhbmdlZC4gSXQgaXMgdXNlZCB0byByZXN0cnVjdHVy
ZSB0aGUgdHJlZSB3aGVuLCBmb3IgaW5zdGFuY2UsCkBAIC03MTAsMzQgKzcxMCwzMyBAQCBwcml2
YXRlOgogICAgICAgICAvLyBUaGVzZSBiaXRzIGFyZSB1c2VkIGJ5IGRlcml2ZWQgY2xhc3Nlcywg
cHVsbGVkIHVwIGhlcmUgc28gdGhleSBjYW4KICAgICAgICAgLy8gYmUgc3RvcmVkIGluIHRoZSBz
YW1lIG1lbW9yeSB3b3JkIGFzIHRoZSBOb2RlIGJpdHMgYWJvdmUuCiAgICAgICAgIElzUGFyc2lu
Z0NoaWxkcmVuRmluaXNoZWRGbGFnID0gMSA8PCAxNSwgLy8gRWxlbWVudAotICAgICAgICBJc1N0
eWxlQXR0cmlidXRlVmFsaWRGbGFnID0gMSA8PCAxNiwgLy8gU3R5bGVkRWxlbWVudAogI2lmIEVO
QUJMRShTVkcpCi0gICAgICAgIEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZsYWcgPSAxIDw8IDE3LCAv
LyBFbGVtZW50Ci0gICAgICAgIElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXNGbGFnID0gMSA8
PCAxOCwgLy8gU1ZHRWxlbWVudAotICAgICAgICBIYXNTVkdSYXJlRGF0YUZsYWcgPSAxIDw8IDE5
LCAvLyBTVkdFbGVtZW50CisgICAgICAgIEFyZVNWR0F0dHJpYnV0ZXNWYWxpZEZsYWcgPSAxIDw8
IDE2LCAvLyBFbGVtZW50CisgICAgICAgIElzU3luY2hyb25pemluZ1NWR0F0dHJpYnV0ZXNGbGFn
ID0gMSA8PCAxNywgLy8gU1ZHRWxlbWVudAorICAgICAgICBIYXNTVkdSYXJlRGF0YUZsYWcgPSAx
IDw8IDE4LCAvLyBTVkdFbGVtZW50CiAjZW5kaWYKIAogICAgICAgICBTdHlsZUNoYW5nZU1hc2sg
PSAxIDw8IG5vZGVTdHlsZUNoYW5nZVNoaWZ0IHwgMSA8PCAobm9kZVN0eWxlQ2hhbmdlU2hpZnQg
KyAxKSwKIAotICAgICAgICBTZWxmT3JBbmNlc3Rvckhhc0RpckF1dG9GbGFnID0gMSA8PCAyMiwK
KyAgICAgICAgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyA9IDEgPDwgMjEsCiAKLSAgICAg
ICAgSGFzTmFtZUZsYWcgPSAxIDw8IDIzLAorICAgICAgICBIYXNOYW1lRmxhZyA9IDEgPDwgMjIs
CiAKLSAgICAgICAgSW5OYW1lZEZsb3dGbGFnID0gMSA8PCAyNCwKLSAgICAgICAgSGFzU3ludGhl
dGljQXR0ckNoaWxkTm9kZXNGbGFnID0gMSA8PCAyNSwKLSAgICAgICAgSGFzQ3VzdG9tQ2FsbGJh
Y2tzRmxhZyA9IDEgPDwgMjYsCi0gICAgICAgIEhhc1Njb3BlZEhUTUxTdHlsZUNoaWxkRmxhZyA9
IDEgPDwgMjcsCi0gICAgICAgIEhhc0V2ZW50VGFyZ2V0RGF0YUZsYWcgPSAxIDw8IDI4LAotICAg
ICAgICBJbkVkZW5GbGFnID0gMSA8PCAyOSwKKyAgICAgICAgSW5OYW1lZEZsb3dGbGFnID0gMSA8
PCAyMywKKyAgICAgICAgSGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXNGbGFnID0gMSA8PCAyNCwK
KyAgICAgICAgSGFzQ3VzdG9tQ2FsbGJhY2tzRmxhZyA9IDEgPDwgMjUsCisgICAgICAgIEhhc1Nj
b3BlZEhUTUxTdHlsZUNoaWxkRmxhZyA9IDEgPDwgMjYsCisgICAgICAgIEhhc0V2ZW50VGFyZ2V0
RGF0YUZsYWcgPSAxIDw8IDI3LAorICAgICAgICBJbkVkZW5GbGFnID0gMSA8PCAyOCwKIAogI2lm
IEVOQUJMRShTVkcpCi0gICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJl
bkZpbmlzaGVkRmxhZyB8IElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcgfCBBcmVTVkdBdHRyaWJ1
dGVzVmFsaWRGbGFnLAorICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRy
ZW5GaW5pc2hlZEZsYWcgfCBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnLAogI2Vsc2UKLSAgICAg
ICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnIHwgSXNT
dHlsZUF0dHJpYnV0ZVZhbGlkRmxhZywKKyAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFy
c2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnLAogI2VuZGlmCiAgICAgfTsKIAotICAgIC8vIDIgYml0
cyByZW1haW5pbmcKKyAgICAvLyAzIGJpdHMgcmVtYWluaW5nCiAKICAgICBib29sIGdldEZsYWco
Tm9kZUZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fbm9kZUZsYWdzICYgbWFzazsgfQogICAg
IHZvaWQgc2V0RmxhZyhib29sIGYsIE5vZGVGbGFncyBtYXNrKSBjb25zdCB7IG1fbm9kZUZsYWdz
ID0gKG1fbm9kZUZsYWdzICYgfm1hc2spIHwgKC0oaW50MzJfdClmICYgbWFzayk7IH0gCkBAIC04
MzgsMTIgKzgzNyw2IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGVSYXJlRGF0YUJhc2UqIG1fcmFy
ZURhdGE7CiAgICAgfSBtX2RhdGE7CiAKLXB1YmxpYzoKLSAgICBib29sIGlzU3R5bGVBdHRyaWJ1
dGVWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNTdHlsZUF0dHJpYnV0ZVZhbGlkRmxh
Zyk7IH0KLSAgICB2b2lkIHNldElzU3R5bGVBdHRyaWJ1dGVWYWxpZChib29sIGYpIHsgc2V0Rmxh
ZyhmLCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnKTsgfQotICAgIHZvaWQgc2V0SXNTdHlsZUF0
dHJpYnV0ZVZhbGlkKCkgY29uc3QgeyBzZXRGbGFnKElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcp
OyB9Ci0gICAgdm9pZCBjbGVhcklzU3R5bGVBdHRyaWJ1dGVWYWxpZCgpIHsgY2xlYXJGbGFnKElz
U3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcpOyB9Ci0KIHByb3RlY3RlZDoKICAgICBib29sIGlzUGFy
c2luZ0NoaWxkcmVuRmluaXNoZWQoKSBjb25zdCB7IHJldHVybiBnZXRGbGFnKElzUGFyc2luZ0No
aWxkcmVuRmluaXNoZWRGbGFnKTsgfQogICAgIHZvaWQgc2V0SXNQYXJzaW5nQ2hpbGRyZW5GaW5p
c2hlZCgpIHsgc2V0RmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAppbmRleCBjNDk3YjhmLi5hZGEwNWM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCkBAIC0xMjgsOCArMTI4LDkgQEAgc3RhdGljIFBy
ZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5lciYgcHJlc2VudGF0aW9uQXR0cmlidXRlQ2Fj
aGVDbGVhbmVyKCkKIAogdm9pZCBTdHlsZWRFbGVtZW50Ojp1cGRhdGVTdHlsZUF0dHJpYnV0ZSgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFpc1N0eWxlQXR0cmlidXRlVmFsaWQoKSk7Ci0gICAgc2V0
SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCk7CisgICAgQVNTRVJUKGF0dHJpYnV0ZURhdGEoKSk7Cisg
ICAgQVNTRVJUKGF0dHJpYnV0ZURhdGEoKS0+bV9zdHlsZUF0dHJpYnV0ZUlzRGlydHkpOworICAg
IGF0dHJpYnV0ZURhdGEoKS0+bV9zdHlsZUF0dHJpYnV0ZUlzRGlydHkgPSBmYWxzZTsKICAgICBp
ZiAoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUgPSB0aGlzLT5pbmxpbmVTdHls
ZSgpKQogICAgICAgICBjb25zdF9jYXN0PFN0eWxlZEVsZW1lbnQqPih0aGlzKS0+c2V0U3luY2hy
b25pemVkTGF6eUF0dHJpYnV0ZShzdHlsZUF0dHIsIGlubGluZVN0eWxlLT5hc1RleHQoKSk7CiB9
CkBAIC0xODEsMzAgKzE4Miw0MSBAQCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIFN0
eWxlZEVsZW1lbnQ6OmlubGluZVN0eWxlQ1NTT01XcmFwcGVyKCkKICAgICByZXR1cm4gY3Nzb21X
cmFwcGVyOwogfQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OnN0eWxlQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBBdG9taWNTdHJpbmcmIG5ld1N0eWxlU3RyaW5nLCBTaG91bGRSZXBhcnNlU3R5bGVBdHRy
aWJ1dGUgc2hvdWxkUmVwYXJzZSkKK2lubGluZSB2b2lkIFN0eWxlZEVsZW1lbnQ6OnNldElubGlu
ZVN0eWxlRnJvbVN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIG5ld1N0eWxlU3RyaW5nKQogewot
ICAgIGlmIChzaG91bGRSZXBhcnNlKSB7Ci0gICAgICAgIFdURjo6T3JkaW5hbE51bWJlciBzdGFy
dExpbmVOdW1iZXIgPSBXVEY6Ok9yZGluYWxOdW1iZXI6OmJlZm9yZUZpcnN0KCk7Ci0gICAgICAg
IGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigp
ICYmICFkb2N1bWVudCgpLT5pc0luRG9jdW1lbnRXcml0ZSgpKQotICAgICAgICAgICAgc3RhcnRM
aW5lTnVtYmVyID0gZG9jdW1lbnQoKS0+c2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKCktPmxpbmVO
dW1iZXIoKTsKLQotICAgICAgICBpZiAobmV3U3R5bGVTdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAg
ICAgICAgIGlmIChQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIGNzc29tV3JhcHBlciA9
IGlubGluZVN0eWxlQ1NTT01XcmFwcGVyKCkpCi0gICAgICAgICAgICAgICAgY3Nzb21XcmFwcGVy
LT5jbGVhclBhcmVudEVsZW1lbnQoKTsKLSAgICAgICAgICAgIG11dGFibGVBdHRyaWJ1dGVEYXRh
KCktPm1faW5saW5lU3R5bGUuY2xlYXIoKTsKLSAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudCgp
LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbmxpbmVTdHlsZShkb2N1bWVudCgpLT51
cmwoKSwgc3RhcnRMaW5lTnVtYmVyKSkgewotICAgICAgICAgICAgLy8gV2UgcmVjb25zdHJ1Y3Qg
dGhlIHByb3BlcnR5IHNldCBpbnN0ZWFkIG9mIG11dGF0aW5nIGlmIHRoZXJlIGlzIG5vIENTU09N
IHdyYXBwZXIuCi0gICAgICAgICAgICAvLyBUaGlzIG1ha2VzIHdyYXBwZXJsZXNzIHByb3BlcnR5
IHNldHMgaW1tdXRhYmxlIGFuZCBzbyBjYWNoZWFibGUuCi0gICAgICAgICAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4mIGlubGluZVN0eWxlID0gYXR0cmlidXRlRGF0YSgpLT5tX2lubGluZVN0
eWxlOwotICAgICAgICAgICAgaWYgKGlubGluZVN0eWxlICYmICFpbmxpbmVTdHlsZS0+aXNNdXRh
YmxlKCkpCi0gICAgICAgICAgICAgICAgaW5saW5lU3R5bGUuY2xlYXIoKTsKLSAgICAgICAgICAg
IGlmICghaW5saW5lU3R5bGUpCi0gICAgICAgICAgICAgICAgaW5saW5lU3R5bGUgPSBDU1NQYXJz
ZXI6OnBhcnNlSW5saW5lU3R5bGVEZWNsYXJhdGlvbihuZXdTdHlsZVN0cmluZywgdGhpcyk7Ci0g
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgaW5saW5lU3R5bGUtPnBhcnNlRGVjbGFy
YXRpb24obmV3U3R5bGVTdHJpbmcsIGRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpLT5jb250ZW50
cygpKTsKLSAgICAgICAgfQotICAgICAgICBzZXRJc1N0eWxlQXR0cmlidXRlVmFsaWQoKTsKLSAg
ICB9CisgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+JiBpbmxpbmVTdHlsZSA9IGF0dHJpYnV0
ZURhdGEoKS0+bV9pbmxpbmVTdHlsZTsKKworICAgIC8vIEF2b2lkIHJlZHVuZGFudCB3b3JrIGlm
IHdlJ3JlIHVzaW5nIHNoYXJlZCBhdHRyaWJ1dGUgZGF0YSB3aXRoIGFscmVhZHkgcGFyc2VkIGlu
bGluZSBzdHlsZS4KKyAgICBpZiAoaW5saW5lU3R5bGUgJiYgIWF0dHJpYnV0ZURhdGEoKS0+aXNN
dXRhYmxlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIFdlIHJlY29uc3RydWN0IHRoZSBw
cm9wZXJ0eSBzZXQgaW5zdGVhZCBvZiBtdXRhdGluZyBpZiB0aGVyZSBpcyBubyBDU1NPTSB3cmFw
cGVyLgorICAgIC8vIFRoaXMgbWFrZXMgd3JhcHBlcmxlc3MgcHJvcGVydHkgc2V0cyBpbW11dGFi
bGUgYW5kIHNvIGNhY2hlYWJsZS4KKyAgICBpZiAoaW5saW5lU3R5bGUgJiYgIWlubGluZVN0eWxl
LT5pc011dGFibGUoKSkKKyAgICAgICAgaW5saW5lU3R5bGUuY2xlYXIoKTsKKworICAgIGlmICgh
aW5saW5lU3R5bGUpCisgICAgICAgIGlubGluZVN0eWxlID0gQ1NTUGFyc2VyOjpwYXJzZUlubGlu
ZVN0eWxlRGVjbGFyYXRpb24obmV3U3R5bGVTdHJpbmcsIHRoaXMpOworICAgIGVsc2UKKyAgICAg
ICAgaW5saW5lU3R5bGUtPnBhcnNlRGVjbGFyYXRpb24obmV3U3R5bGVTdHJpbmcsIGRvY3VtZW50
KCktPmVsZW1lbnRTaGVldCgpLT5jb250ZW50cygpKTsKK30KKwordm9pZCBTdHlsZWRFbGVtZW50
OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdTdHlsZVN0cmlu
ZykKK3sKKyAgICBXVEY6Ok9yZGluYWxOdW1iZXIgc3RhcnRMaW5lTnVtYmVyID0gV1RGOjpPcmRp
bmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpOworICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50
KCktPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpICYmICFkb2N1bWVudCgpLT5pc0luRG9jdW1l
bnRXcml0ZSgpKQorICAgICAgICBzdGFydExpbmVOdW1iZXIgPSBkb2N1bWVudCgpLT5zY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoKS0+bGluZU51bWJlcigpOworCisgICAgaWYgKG5ld1N0eWxlU3Ry
aW5nLmlzTnVsbCgpKSB7CisgICAgICAgIGlmIChQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24qIGNzc29tV3JhcHBlciA9IGlubGluZVN0eWxlQ1NTT01XcmFwcGVyKCkpCisgICAgICAgICAg
ICBjc3NvbVdyYXBwZXItPmNsZWFyUGFyZW50RWxlbWVudCgpOworICAgICAgICBtdXRhYmxlQXR0
cmlidXRlRGF0YSgpLT5tX2lubGluZVN0eWxlLmNsZWFyKCk7CisgICAgfSBlbHNlIGlmIChkb2N1
bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbmxpbmVTdHlsZShkb2N1bWVu
dCgpLT51cmwoKSwgc3RhcnRMaW5lTnVtYmVyKSkKKyAgICAgICAgc2V0SW5saW5lU3R5bGVGcm9t
U3RyaW5nKG5ld1N0eWxlU3RyaW5nKTsKKworICAgIGF0dHJpYnV0ZURhdGEoKS0+bV9zdHlsZUF0
dHJpYnV0ZUlzRGlydHkgPSBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBXaHkgYXJlbid0IHdlIHVz
aW5nIHNldE5lZWRzU3R5bGVSZWNhbGMoSW5saW5lU3R5bGVDaGFuZ2UpIGhlcmU/CiAgICAgc2V0
TmVlZHNTdHlsZVJlY2FsYygpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52
YWxpZGF0ZVN0eWxlQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKIH0KQEAgLTIyMCw3ICsyMzIsOCBA
QCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYgYXR0
cmlidXRlKQogdm9pZCBTdHlsZWRFbGVtZW50OjppbmxpbmVTdHlsZUNoYW5nZWQoKQogewogICAg
IHNldE5lZWRzU3R5bGVSZWNhbGMoSW5saW5lU3R5bGVDaGFuZ2UpOwotICAgIHNldElzU3R5bGVB
dHRyaWJ1dGVWYWxpZChmYWxzZSk7CisgICAgQVNTRVJUKGF0dHJpYnV0ZURhdGEoKSk7CisgICAg
YXR0cmlidXRlRGF0YSgpLT5tX3N0eWxlQXR0cmlidXRlSXNEaXJ0eSA9IHRydWU7CiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKGRvY3VtZW50KCks
IHRoaXMpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKaW5kZXggMDQ0Yzc0
MS4uOGYyZGIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCkBAIC01NiwxMCArNTYs
NiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYsIFN0eWxlUHJvcGVydHlTZXQqKSB7IH0KIAot
ICAgIC8vIE1heSBiZSBjYWxsZWQgYnkgRWxlbWVudEF0dHJpYnV0ZURhdGE6OmNsb25lRGF0YUZy
b20oKS4KLSAgICBlbnVtIFNob3VsZFJlcGFyc2VTdHlsZUF0dHJpYnV0ZSB7IERvTm90UmVwYXJz
ZVN0eWxlQXR0cmlidXRlID0gMCwgUmVwYXJzZVN0eWxlQXR0cmlidXRlID0gMSB9OwotICAgIHZv
aWQgc3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJp
bmcsIFNob3VsZFJlcGFyc2VTdHlsZUF0dHJpYnV0ZSA9IFJlcGFyc2VTdHlsZUF0dHJpYnV0ZSk7
Ci0KIHByb3RlY3RlZDoKICAgICBTdHlsZWRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUpOwogCkBAIC03NSw5ICs3MSwxMiBAQCBwcm90ZWN0
ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFz
aFNldDxLVVJMPiYpIGNvbnN0OwogCiBwcml2YXRlOgorICAgIHZvaWQgc3R5bGVBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJpbmcpOworCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVN0eWxlQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgdm9pZCBpbmxpbmVTdHls
ZUNoYW5nZWQoKTsKICAgICBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24qIGlubGluZVN0
eWxlQ1NTT01XcmFwcGVyKCk7CisgICAgdm9pZCBzZXRJbmxpbmVTdHlsZUZyb21TdHJpbmcoY29u
c3QgQXRvbWljU3RyaW5nJik7CiAKICAgICB2b2lkIG1ha2VQcmVzZW50YXRpb25BdHRyaWJ1dGVD
YWNoZUtleShQcmVzZW50YXRpb25BdHRyaWJ1dGVDYWNoZUtleSYpIGNvbnN0OwogICAgIHZvaWQg
cmVidWlsZFByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCk7CkBAIC04NSw3ICs4NCw4IEBAIHBy
aXZhdGU6CiAKIGlubGluZSB2b2lkIFN0eWxlZEVsZW1lbnQ6OmludmFsaWRhdGVTdHlsZUF0dHJp
YnV0ZSgpCiB7Ci0gICAgY2xlYXJJc1N0eWxlQXR0cmlidXRlVmFsaWQoKTsKKyAgICBBU1NFUlQo
YXR0cmlidXRlRGF0YSgpKTsKKyAgICBhdHRyaWJ1dGVEYXRhKCktPm1fc3R5bGVBdHRyaWJ1dGVJ
c0RpcnR5ID0gdHJ1ZTsKIH0KIAogaW5saW5lIGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIFN0eWxl
ZEVsZW1lbnQ6OnByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlKCkK
</data>
<flag name="review"
          id="189977"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174782</attachid>
            <date>2012-11-16 16:55:48 -0800</date>
            <delta_ts>2012-11-16 17:35:14 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>land-101163.diff</filename>
            <type>text/plain</type>
            <size>17755</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0OWEwNzkwLi5mZTc1YmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTItMTEtMTYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgorCisgICAg
ICAgIEV4cGxvaXQgc2hhcmVkIGF0dHJpYnV0ZSBkYXRhIHRvIGF2b2lkIHBhcnNpbmcgaWRlbnRp
Y2FsICJzdHlsZSIgYXR0cmlidXRlcy4KKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3JnL2IvMTAx
MTYzPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFRy
YWNrIHRoZSAiaW5saW5lIHN0eWxlIGRpcnR5IiBzdGF0ZSBvbiBFbGVtZW50QXR0cmlidXRlRGF0
YSBpbnN0ZWFkIG9mIGluIGEgTm9kZSBmbGFnLgorICAgICAgICBUaGlzIGFsbG93cyB1cyB0byBh
dm9pZCBkdXBsaWNhdGUgd29yayBmb3IgRWxlbWVudEF0dHJpYnV0ZURhdGEgdGhhdCBhcmUgc2hh
cmVkIGJldHdlZW4gbXVsdGlwbGUgZWxlbWVudHMsCisgICAgICAgIHNpbmNlIHRoZSBzdGF0ZSBp
cyBubyBsb25nZXIgcGVyLUVsZW1lbnQuCisKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppc0NhY2hlYWJsZUluTWF0Y2hlZFByb3BlcnRpZXNDYWNo
ZSk6CisKKyAgICAgICAgICAgIERpc2FibGUgdGhlIG1hdGNoZWQgcHJvcGVydGllcyBjYWNoZSBm
b3Igc3R5bGVzIHdpdGggbm9uLXN0YW5kYXJkIHdyaXRpbmctbW9kZS4KKyAgICAgICAgICAgIFRo
aXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2Ugc29tZSBDU1MgcHJvcGVydGllcyBoYXZlIGRpZmZlcmVu
dCBtZWFuaW5nIGRlcGVuZGluZyBvbiBjb250ZXh0IC0KKyAgICAgICAgICAgIHByb3BlcnRpZXMg
aGFuZGxlZCBieSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoKS4K
KworICAgICAgICAgICAgTm93IHRoYXQgbXVsdGlwbGUgZWxlbWVudHMgbWF5IGhhdmUgaWRlbnRp
Y2FsIGlubGluZVN0eWxlKCkgcG9pbnRlcnMsIHRoaXMgaXMgbmVjZXNzYXJ5IHRvCisgICAgICAg
ICAgICBhdm9pZCBtYXBwaW5nIFN0eWxlUHJvcGVydHlTZXRzIHdpdGggZGlyZWN0aW9uLWF3YXJl
IHByb3BlcnRpZXMgdG8gUmVuZGVyU3R5bGVzIHdpdGggZGlmZmVyaW5nCisgICAgICAgICAgICB3
cml0aW5nLW1vZGVzIGluIHRoZSBtYXRjaGVkIHByb3BlcnRpZXMgY2FjaGUuCisKKyAgICAgICAg
KiBkb20vTm9kZS5oOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50QXR0cmlidXRlRGF0YTo6RWxlbWVudEF0dHJpYnV0ZURh
dGEpOgorICAgICAgICAqIGRvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5oOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudEF0dHJpYnV0ZURhdGE6OkVsZW1lbnRBdHRyaWJ1dGVEYXRhKToKKyAgICAg
ICAgKEVsZW1lbnRBdHRyaWJ1dGVEYXRhKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6dXBkYXRlSW52YWxpZEF0dHJpYnV0ZXMpOgorICAgICAg
ICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVBdHRyaWJ1dGUpOgorICAg
ICAgICAqIGRvbS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVt
ZW50OjppbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUpOgorICAgICAgICAqIGRvbS9TdHlsZWRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnVwZGF0ZVN0eWxlQXR0
cmlidXRlKToKKworICAgICAgICAgICAgTW92ZSAic3R5bGUgYXR0cmlidXRlIGRpcnR5IiBmbGFn
IHRvIEVsZW1lbnRBdHRyaWJ1dGVEYXRhLgorCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpj
bG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudCk6CisKKyAgICAgICAgICAgIFJlbW92ZSB1Z2x5IG9w
dGltaXphdGlvbiB0byBhdm9pZCByZXBhcnNpbmcgaW5saW5lIHN0eWxlIHdoZW4gY2xvbmluZyBl
bGVtZW50cy4gVGhpcyBub3cgaGFwcGVucworICAgICAgICAgICAgYXV0b21hZ2ljYWxseSBzaW5j
ZSBjbG9uaW5nIG5vZGVzIGp1c3QgcmVmcyB0aGUgb3JpZ2luYWwgYXR0cmlidXRlIGRhdGEuCisK
KyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZWRFbGVtZW50Ojp1cGRhdGVTdHlsZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZUZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkRWxlbWVudDo6c3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZEVsZW1lbnQ6OmlubGluZVN0eWxlQ2hhbmdlZCk6CisKKyAgICAgICAgICAgIEF2b2lk
IHJlcGFyc2luZyB0aGUgaW5saW5lIHN0eWxlIGlmIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlIGRh
dGEgaXMgaW1tdXRhYmxlIGFuZCBhbHJlYWR5IGhhcworICAgICAgICAgICAgYSBwYXJzZWQgaW5s
aW5lU3R5bGUoKS4gU3BsaXQgdGhlIHNldC1pbmxpbmUtc3R5bGUtZnJvbS1zdHJpbmcgY29kZSBv
dXQgb2Ygc3R5bGVBdHRyaWJ1dGVDaGFuZ2VkKCkKKyAgICAgICAgICAgIHRvIG1ha2UgdGhlIGNv
ZGUgbW9yZSB1bmRlcnN0YW5kYWJsZS4KKwogMjAxMi0xMS0xNiAgSm9uIExlZSAgPGpvbmxlZUBh
cHBsZS5jb20+CiAKICAgICAgICAgU2ltdWxhdGVkIGV2ZW50cyBpbnN0YW5jZXMgZG8gbm90IGFs
bCBoYXZlIHRoZSBzYW1lIHVuZGVybHlpbmcgZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcAppbmRleCAyMWJiZDYwLi5mZmY2MGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuY3BwCkBAIC0yNDA0LDYgKzI0MDQsOCBAQCBzdGF0aWMgYm9vbCBpc0NhY2hlYWJsZUlu
TWF0Y2hlZFByb3BlcnRpZXNDYWNoZShjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBSZQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHN0eWxlLT56b29tKCkgIT0gUmVuZGVyU3R5
bGU6OmluaXRpYWxab29tKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoc3R5bGUt
PndyaXRpbmdNb2RlKCkgIT0gUmVuZGVyU3R5bGU6OmluaXRpYWxXcml0aW5nTW9kZSgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgLy8gVGhlIGNhY2hlIGFzc3VtZXMgc3RhdGljIGtub3ds
ZWRnZSBhYm91dCB3aGljaCBwcm9wZXJ0aWVzIGFyZSBpbmhlcml0ZWQuCiAgICAgaWYgKHBhcmVu
dFN0eWxlLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggZDVhYWRkMi4uODYwYzFjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzA0LDcgKzMwNCw3IEBAIGJvb2wgRWxlbWVudDo6aGFz
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAKIGNvbnN0IEF0b21p
Y1N0cmluZyYgRWxlbWVudDo6Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUp
IGNvbnN0CiB7Ci0gICAgaWYgKFVOTElLRUxZKG5hbWUgPT0gc3R5bGVBdHRyKSAmJiAhaXNTdHls
ZUF0dHJpYnV0ZVZhbGlkKCkpCisgICAgaWYgKFVOTElLRUxZKG5hbWUgPT0gc3R5bGVBdHRyKSAm
JiBhdHRyaWJ1dGVEYXRhKCkgJiYgYXR0cmlidXRlRGF0YSgpLT5tX3N0eWxlQXR0cmlidXRlSXNE
aXJ0eSkKICAgICAgICAgdXBkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKIAogI2lmIEVOQUJMRShTVkcp
CkBAIC02NjIsNyArNjYyLDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjpnZXRBdHRy
aWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIGJvb2wgaWdub3JlQ2Fz
ZSA9IHNob3VsZElnbm9yZUF0dHJpYnV0ZUNhc2UodGhpcyk7CiAKICAgICAvLyBVcGRhdGUgdGhl
ICdzdHlsZScgYXR0cmlidXRlIGlmIGl0J3MgaW52YWxpZCBhbmQgYmVpbmcgcmVxdWVzdGVkOgot
ICAgIGlmICghaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkgJiYgZXF1YWxQb3NzaWJseUlnbm9yaW5n
Q2FzZShuYW1lLCBzdHlsZUF0dHIubG9jYWxOYW1lKCksIGlnbm9yZUNhc2UpKQorICAgIGlmIChh
dHRyaWJ1dGVEYXRhKCkgJiYgYXR0cmlidXRlRGF0YSgpLT5tX3N0eWxlQXR0cmlidXRlSXNEaXJ0
eSAmJiBlcXVhbFBvc3NpYmx5SWdub3JpbmdDYXNlKG5hbWUsIHN0eWxlQXR0ci5sb2NhbE5hbWUo
KSwgaWdub3JlQ2FzZSkpCiAgICAgICAgIHVwZGF0ZVN0eWxlQXR0cmlidXRlKCk7CiAKICNpZiBF
TkFCTEUoU1ZHKQpAQCAtMTY1Miw3ICsxNjUyLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVBdHRy
aWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIEF0b21pY1N0cmluZyBsb2NhbE5h
bWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFt
ZTsKICAgICBzaXplX3QgaW5kZXggPSBhdHRyaWJ1dGVEYXRhKCktPmdldEF0dHJpYnV0ZUl0ZW1J
bmRleChsb2NhbE5hbWUsIGZhbHNlKTsKICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpIHsKLSAg
ICAgICAgaWYgKFVOTElLRUxZKGxvY2FsTmFtZSA9PSBzdHlsZUF0dHIpICYmICFpc1N0eWxlQXR0
cmlidXRlVmFsaWQoKSAmJiBpc1N0eWxlZEVsZW1lbnQoKSkKKyAgICAgICAgaWYgKFVOTElLRUxZ
KGxvY2FsTmFtZSA9PSBzdHlsZUF0dHIpICYmIGF0dHJpYnV0ZURhdGEoKS0+bV9zdHlsZUF0dHJp
YnV0ZUlzRGlydHkgJiYgaXNTdHlsZWRFbGVtZW50KCkpCiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxTdHlsZWRFbGVtZW50Kj4odGhpcyktPnJlbW92ZUFsbElubGluZVN0eWxlUHJvcGVydGllcygp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjQ0NCw4ICsyNDQ0LDYgQEAgdm9pZCBFbGVt
ZW50OjpjbG9uZUF0dHJpYnV0ZXNGcm9tRWxlbWVudChjb25zdCBFbGVtZW50JiBvdGhlcikKICAg
ICBpZiAoaGFzU3ludGhldGljQXR0ckNoaWxkTm9kZXMoKSkKICAgICAgICAgZGV0YWNoQWxsQXR0
ck5vZGVzRnJvbUVsZW1lbnQoKTsKIAotICAgIHNldElzU3R5bGVBdHRyaWJ1dGVWYWxpZChvdGhl
ci5pc1N0eWxlQXR0cmlidXRlVmFsaWQoKSk7Ci0KICAgICBvdGhlci51cGRhdGVJbnZhbGlkQXR0
cmlidXRlcygpOwogICAgIGlmICghb3RoZXIubV9hdHRyaWJ1dGVEYXRhKSB7CiAgICAgICAgIG1f
YXR0cmlidXRlRGF0YS5jbGVhcigpOwpAQCAtMjQ3NiwxMSArMjQ3NCw2IEBAIHZvaWQgRWxlbWVu
dDo6Y2xvbmVBdHRyaWJ1dGVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYgb3RoZXIpCiAKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9hdHRyaWJ1dGVEYXRhLT5sZW5ndGgoKTsgKytp
KSB7CiAgICAgICAgIGNvbnN0IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gY29uc3RfY2FzdDxjb25z
dCBFbGVtZW50QXR0cmlidXRlRGF0YSo+KG1fYXR0cmlidXRlRGF0YS5nZXQoKSktPmF0dHJpYnV0
ZUl0ZW0oaSk7Ci0gICAgICAgIC8vIFRoaXMgb3B0aW1pemF0aW9uIGlzbid0IHZlcnkgbmljZWx5
IGZhY3RvcmVkLCBidXQgYSBodWdlIHdpbiBmb3IgY2xvbmluZyBlbGVtZW50cyB3aXRoIGlubGlu
ZSBzdHlsZS4KLSAgICAgICAgaWYgKGlzU3R5bGVkRWxlbWVudCgpICYmIGF0dHJpYnV0ZS0+bmFt
ZSgpID09IEhUTUxOYW1lczo6c3R5bGVBdHRyKSB7Ci0gICAgICAgICAgICBzdGF0aWNfY2FzdDxT
dHlsZWRFbGVtZW50Kj4odGhpcyktPnN0eWxlQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGUtPnZh
bHVlKCksIFN0eWxlZEVsZW1lbnQ6OkRvTm90UmVwYXJzZVN0eWxlQXR0cmlidXRlKTsKLSAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CiAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0
cmlidXRlLT5uYW1lKCksIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKaW5kZXggZjg3NGU0Yi4uZjBmZjAyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC03MzIs
NyArNzMyLDcgQEAgaW5saW5lIEF0dHJpYnV0ZSogRWxlbWVudDo6Z2V0QXR0cmlidXRlSXRlbShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKQogCiBpbmxpbmUgdm9pZCBFbGVtZW50Ojp1cGRhdGVJ
bnZhbGlkQXR0cmlidXRlcygpIGNvbnN0CiB7Ci0gICAgaWYgKCFpc1N0eWxlQXR0cmlidXRlVmFs
aWQoKSkKKyAgICBpZiAoYXR0cmlidXRlRGF0YSgpICYmIGF0dHJpYnV0ZURhdGEoKS0+bV9zdHls
ZUF0dHJpYnV0ZUlzRGlydHkpCiAgICAgICAgIHVwZGF0ZVN0eWxlQXR0cmlidXRlKCk7CiAKICNp
ZiBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0YS5j
cHAKaW5kZXggYmE5MWJjMS4uOTgxNDE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEF0dHJpYnV0ZURhdGEuY3BwCkBAIC04Myw2ICs4Myw3IEBAIEVsZW1lbnRBdHRyaWJ1dGVEYXRh
OjpFbGVtZW50QXR0cmlidXRlRGF0YShjb25zdCBFbGVtZW50QXR0cmlidXRlRGF0YSYgb3RoZXIs
IGJvCiAgICAgOiBtX2lzTXV0YWJsZShpc011dGFibGUpCiAgICAgLCBtX2FycmF5U2l6ZShpc011
dGFibGUgPyAwIDogb3RoZXIubGVuZ3RoKCkpCiAgICAgLCBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0
ZVN0eWxlSXNEaXJ0eShvdGhlci5tX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0eWxlSXNEaXJ0eSkK
KyAgICAsIG1fc3R5bGVBdHRyaWJ1dGVJc0RpcnR5KG90aGVyLm1fc3R5bGVBdHRyaWJ1dGVJc0Rp
cnR5KQogICAgICwgbV9wcmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZShvdGhlci5tX3ByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKQogICAgICwgbV9jbGFzc05hbWVzKG90aGVyLm1fY2xhc3NOYW1l
cykKICAgICAsIG1faWRGb3JTdHlsZVJlc29sdXRpb24ob3RoZXIubV9pZEZvclN0eWxlUmVzb2x1
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QXR0cmlidXRlRGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRhLmgKaW5kZXggZjkz
NTgyZS4uZDVjZWE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRy
aWJ1dGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBdHRyaWJ1dGVEYXRh
LmgKQEAgLTg5LDE5ICs4OSwyMiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIDogbV9pc011dGFibGUo
dHJ1ZSkKICAgICAgICAgLCBtX2FycmF5U2l6ZSgwKQogICAgICAgICAsIG1fcHJlc2VudGF0aW9u
QXR0cmlidXRlU3R5bGVJc0RpcnR5KGZhbHNlKQorICAgICAgICAsIG1fc3R5bGVBdHRyaWJ1dGVJ
c0RpcnR5KGZhbHNlKQogICAgIHsgfQogCiAgICAgRWxlbWVudEF0dHJpYnV0ZURhdGEodW5zaWdu
ZWQgYXJyYXlTaXplKQogICAgICAgICA6IG1faXNNdXRhYmxlKGZhbHNlKQogICAgICAgICAsIG1f
YXJyYXlTaXplKGFycmF5U2l6ZSkKICAgICAgICAgLCBtX3ByZXNlbnRhdGlvbkF0dHJpYnV0ZVN0
eWxlSXNEaXJ0eShmYWxzZSkKKyAgICAgICAgLCBtX3N0eWxlQXR0cmlidXRlSXNEaXJ0eShmYWxz
ZSkKICAgICB7IH0KIAogICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhKGNvbnN0IEVsZW1lbnRBdHRy
aWJ1dGVEYXRhJiwgYm9vbCBpc011dGFibGUpOwogCiAgICAgdW5zaWduZWQgbV9pc011dGFibGUg
OiAxOwotICAgIHVuc2lnbmVkIG1fYXJyYXlTaXplIDogMzA7CisgICAgdW5zaWduZWQgbV9hcnJh
eVNpemUgOiAyOTsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1fcHJlc2VudGF0aW9uQXR0cmlidXRl
U3R5bGVJc0RpcnR5IDogMTsKKyAgICBtdXRhYmxlIHVuc2lnbmVkIG1fc3R5bGVBdHRyaWJ1dGVJ
c0RpcnR5IDogMTsKIAogICAgIG11dGFibGUgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IG1faW5s
aW5lU3R5bGU7CiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbV9wcmVzZW50
YXRpb25BdHRyaWJ1dGVTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDQ2NjJlYWEuLjIxMzRhYzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaApAQCAtOTgsNyArOTgsNyBAQCBjbGFzcyBQcm9wZXJ0eU5vZGVMaXN0OwogCiB0
eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogCi1jb25zdCBpbnQgbm9kZVN0eWxlQ2hhbmdlU2hp
ZnQgPSAyMDsKK2NvbnN0IGludCBub2RlU3R5bGVDaGFuZ2VTaGlmdCA9IDE5OwogCiAvLyBTeW50
aGV0aWNTdHlsZUNoYW5nZSBtZWFucyB0aGF0IHdlIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUgZW50
aXJlIHN0eWxlIGNoYW5nZSBsb2dpYyBldmVuIHRob3VnaAogLy8gbm8gc3R5bGUgcHJvcGVydHkg
aGFzIGFjdHVhbGx5IGNoYW5nZWQuIEl0IGlzIHVzZWQgdG8gcmVzdHJ1Y3R1cmUgdGhlIHRyZWUg
d2hlbiwgZm9yIGluc3RhbmNlLApAQCAtNzEwLDM0ICs3MTAsMzMgQEAgcHJpdmF0ZToKICAgICAg
ICAgLy8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNsYXNzZXMsIHB1bGxlZCB1cCBo
ZXJlIHNvIHRoZXkgY2FuCiAgICAgICAgIC8vIGJlIHN0b3JlZCBpbiB0aGUgc2FtZSBtZW1vcnkg
d29yZCBhcyB0aGUgTm9kZSBiaXRzIGFib3ZlLgogICAgICAgICBJc1BhcnNpbmdDaGlsZHJlbkZp
bmlzaGVkRmxhZyA9IDEgPDwgMTUsIC8vIEVsZW1lbnQKLSAgICAgICAgSXNTdHlsZUF0dHJpYnV0
ZVZhbGlkRmxhZyA9IDEgPDwgMTYsIC8vIFN0eWxlZEVsZW1lbnQKICNpZiBFTkFCTEUoU1ZHKQot
ICAgICAgICBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnID0gMSA8PCAxNywgLy8gRWxlbWVudAot
ICAgICAgICBJc1N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzRmxhZyA9IDEgPDwgMTgsIC8vIFNW
R0VsZW1lbnQKLSAgICAgICAgSGFzU1ZHUmFyZURhdGFGbGFnID0gMSA8PCAxOSwgLy8gU1ZHRWxl
bWVudAorICAgICAgICBBcmVTVkdBdHRyaWJ1dGVzVmFsaWRGbGFnID0gMSA8PCAxNiwgLy8gRWxl
bWVudAorICAgICAgICBJc1N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzRmxhZyA9IDEgPDwgMTcs
IC8vIFNWR0VsZW1lbnQKKyAgICAgICAgSGFzU1ZHUmFyZURhdGFGbGFnID0gMSA8PCAxOCwgLy8g
U1ZHRWxlbWVudAogI2VuZGlmCiAKICAgICAgICAgU3R5bGVDaGFuZ2VNYXNrID0gMSA8PCBub2Rl
U3R5bGVDaGFuZ2VTaGlmdCB8IDEgPDwgKG5vZGVTdHlsZUNoYW5nZVNoaWZ0ICsgMSksCiAKLSAg
ICAgICAgU2VsZk9yQW5jZXN0b3JIYXNEaXJBdXRvRmxhZyA9IDEgPDwgMjIsCisgICAgICAgIFNl
bGZPckFuY2VzdG9ySGFzRGlyQXV0b0ZsYWcgPSAxIDw8IDIxLAogCi0gICAgICAgIEhhc05hbWVG
bGFnID0gMSA8PCAyMywKKyAgICAgICAgSGFzTmFtZUZsYWcgPSAxIDw8IDIyLAogCi0gICAgICAg
IEluTmFtZWRGbG93RmxhZyA9IDEgPDwgMjQsCi0gICAgICAgIEhhc1N5bnRoZXRpY0F0dHJDaGls
ZE5vZGVzRmxhZyA9IDEgPDwgMjUsCi0gICAgICAgIEhhc0N1c3RvbUNhbGxiYWNrc0ZsYWcgPSAx
IDw8IDI2LAotICAgICAgICBIYXNTY29wZWRIVE1MU3R5bGVDaGlsZEZsYWcgPSAxIDw8IDI3LAot
ICAgICAgICBIYXNFdmVudFRhcmdldERhdGFGbGFnID0gMSA8PCAyOCwKLSAgICAgICAgSW5FZGVu
RmxhZyA9IDEgPDwgMjksCisgICAgICAgIEluTmFtZWRGbG93RmxhZyA9IDEgPDwgMjMsCisgICAg
ICAgIEhhc1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzRmxhZyA9IDEgPDwgMjQsCisgICAgICAgIEhh
c0N1c3RvbUNhbGxiYWNrc0ZsYWcgPSAxIDw8IDI1LAorICAgICAgICBIYXNTY29wZWRIVE1MU3R5
bGVDaGlsZEZsYWcgPSAxIDw8IDI2LAorICAgICAgICBIYXNFdmVudFRhcmdldERhdGFGbGFnID0g
MSA8PCAyNywKKyAgICAgICAgSW5FZGVuRmxhZyA9IDEgPDwgMjgsCiAKICNpZiBFTkFCTEUoU1ZH
KQotICAgICAgICBEZWZhdWx0Tm9kZUZsYWdzID0gSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZs
YWcgfCBJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnIHwgQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxh
ZywKKyAgICAgICAgRGVmYXVsdE5vZGVGbGFncyA9IElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWRG
bGFnIHwgQXJlU1ZHQXR0cmlidXRlc1ZhbGlkRmxhZywKICNlbHNlCi0gICAgICAgIERlZmF1bHRO
b2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJlbkZpbmlzaGVkRmxhZyB8IElzU3R5bGVBdHRyaWJ1
dGVWYWxpZEZsYWcsCisgICAgICAgIERlZmF1bHROb2RlRmxhZ3MgPSBJc1BhcnNpbmdDaGlsZHJl
bkZpbmlzaGVkRmxhZywKICNlbmRpZgogICAgIH07CiAKLSAgICAvLyAyIGJpdHMgcmVtYWluaW5n
CisgICAgLy8gMyBiaXRzIHJlbWFpbmluZwogCiAgICAgYm9vbCBnZXRGbGFnKE5vZGVGbGFncyBt
YXNrKSBjb25zdCB7IHJldHVybiBtX25vZGVGbGFncyAmIG1hc2s7IH0KICAgICB2b2lkIHNldEZs
YWcoYm9vbCBmLCBOb2RlRmxhZ3MgbWFzaykgY29uc3QgeyBtX25vZGVGbGFncyA9IChtX25vZGVG
bGFncyAmIH5tYXNrKSB8ICgtKGludDMyX3QpZiAmIG1hc2spOyB9IApAQCAtODM4LDEyICs4Mzcs
NiBAQCBwcml2YXRlOgogICAgICAgICBOb2RlUmFyZURhdGFCYXNlKiBtX3JhcmVEYXRhOwogICAg
IH0gbV9kYXRhOwogCi1wdWJsaWM6Ci0gICAgYm9vbCBpc1N0eWxlQXR0cmlidXRlVmFsaWQoKSBj
b25zdCB7IHJldHVybiBnZXRGbGFnKElzU3R5bGVBdHRyaWJ1dGVWYWxpZEZsYWcpOyB9Ci0gICAg
dm9pZCBzZXRJc1N0eWxlQXR0cmlidXRlVmFsaWQoYm9vbCBmKSB7IHNldEZsYWcoZiwgSXNTdHls
ZUF0dHJpYnV0ZVZhbGlkRmxhZyk7IH0KLSAgICB2b2lkIHNldElzU3R5bGVBdHRyaWJ1dGVWYWxp
ZCgpIGNvbnN0IHsgc2V0RmxhZyhJc1N0eWxlQXR0cmlidXRlVmFsaWRGbGFnKTsgfQotICAgIHZv
aWQgY2xlYXJJc1N0eWxlQXR0cmlidXRlVmFsaWQoKSB7IGNsZWFyRmxhZyhJc1N0eWxlQXR0cmli
dXRlVmFsaWRGbGFnKTsgfQotCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc1BhcnNpbmdDaGlsZHJl
bkZpbmlzaGVkKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc1BhcnNpbmdDaGlsZHJlbkZpbmlz
aGVkRmxhZyk7IH0KICAgICB2b2lkIHNldElzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IHNl
dEZsYWcoSXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZEZsYWcpOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5jcHAKaW5kZXggYzQ5N2I4Zi4uYWRhMDVjOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHlsZWRFbGVtZW50LmNwcApAQCAtMTI4LDggKzEyOCw5IEBAIHN0YXRpYyBQcmVzZW50YXRpb25B
dHRyaWJ1dGVDYWNoZUNsZWFuZXImIHByZXNlbnRhdGlvbkF0dHJpYnV0ZUNhY2hlQ2xlYW5lcigp
CiAKIHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRlU3R5bGVBdHRyaWJ1dGUoKSBjb25zdAogewot
ICAgIEFTU0VSVCghaXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCkpOwotICAgIHNldElzU3R5bGVBdHRy
aWJ1dGVWYWxpZCgpOworICAgIEFTU0VSVChhdHRyaWJ1dGVEYXRhKCkpOworICAgIEFTU0VSVChh
dHRyaWJ1dGVEYXRhKCktPm1fc3R5bGVBdHRyaWJ1dGVJc0RpcnR5KTsKKyAgICBhdHRyaWJ1dGVE
YXRhKCktPm1fc3R5bGVBdHRyaWJ1dGVJc0RpcnR5ID0gZmFsc2U7CiAgICAgaWYgKGNvbnN0IFN0
eWxlUHJvcGVydHlTZXQqIGlubGluZVN0eWxlID0gdGhpcy0+aW5saW5lU3R5bGUoKSkKICAgICAg
ICAgY29uc3RfY2FzdDxTdHlsZWRFbGVtZW50Kj4odGhpcyktPnNldFN5bmNocm9uaXplZExhenlB
dHRyaWJ1dGUoc3R5bGVBdHRyLCBpbmxpbmVTdHlsZS0+YXNUZXh0KCkpOwogfQpAQCAtMTgxLDMw
ICsxODIsNDEgQEAgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW50
OjppbmxpbmVTdHlsZUNTU09NV3JhcHBlcigpCiAgICAgcmV0dXJuIGNzc29tV3JhcHBlcjsKIH0K
IAotdm9pZCBTdHlsZWRFbGVtZW50OjpzdHlsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWlj
U3RyaW5nJiBuZXdTdHlsZVN0cmluZywgU2hvdWxkUmVwYXJzZVN0eWxlQXR0cmlidXRlIHNob3Vs
ZFJlcGFyc2UpCitpbmxpbmUgdm9pZCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZUZyb21T
dHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdTdHlsZVN0cmluZykKIHsKLSAgICBpZiAoc2hv
dWxkUmVwYXJzZSkgewotICAgICAgICBXVEY6Ok9yZGluYWxOdW1iZXIgc3RhcnRMaW5lTnVtYmVy
ID0gV1RGOjpPcmRpbmFsTnVtYmVyOjpiZWZvcmVGaXJzdCgpOwotICAgICAgICBpZiAoZG9jdW1l
bnQoKSAmJiBkb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKSAmJiAhZG9jdW1l
bnQoKS0+aXNJbkRvY3VtZW50V3JpdGUoKSkKLSAgICAgICAgICAgIHN0YXJ0TGluZU51bWJlciA9
IGRvY3VtZW50KCktPnNjcmlwdGFibGVEb2N1bWVudFBhcnNlcigpLT5saW5lTnVtYmVyKCk7Ci0K
LSAgICAgICAgaWYgKG5ld1N0eWxlU3RyaW5nLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICBpZiAo
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NvbVdyYXBwZXIgPSBpbmxpbmVTdHls
ZUNTU09NV3JhcHBlcigpKQotICAgICAgICAgICAgICAgIGNzc29tV3JhcHBlci0+Y2xlYXJQYXJl
bnRFbGVtZW50KCk7Ci0gICAgICAgICAgICBtdXRhYmxlQXR0cmlidXRlRGF0YSgpLT5tX2lubGlu
ZVN0eWxlLmNsZWFyKCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93SW5saW5lU3R5bGUoZG9jdW1lbnQoKS0+dXJsKCksIHN0YXJ0
TGluZU51bWJlcikpIHsKLSAgICAgICAgICAgIC8vIFdlIHJlY29uc3RydWN0IHRoZSBwcm9wZXJ0
eSBzZXQgaW5zdGVhZCBvZiBtdXRhdGluZyBpZiB0aGVyZSBpcyBubyBDU1NPTSB3cmFwcGVyLgot
ICAgICAgICAgICAgLy8gVGhpcyBtYWtlcyB3cmFwcGVybGVzcyBwcm9wZXJ0eSBzZXRzIGltbXV0
YWJsZSBhbmQgc28gY2FjaGVhYmxlLgotICAgICAgICAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlT
ZXQ+JiBpbmxpbmVTdHlsZSA9IGF0dHJpYnV0ZURhdGEoKS0+bV9pbmxpbmVTdHlsZTsKLSAgICAg
ICAgICAgIGlmIChpbmxpbmVTdHlsZSAmJiAhaW5saW5lU3R5bGUtPmlzTXV0YWJsZSgpKQotICAg
ICAgICAgICAgICAgIGlubGluZVN0eWxlLmNsZWFyKCk7Ci0gICAgICAgICAgICBpZiAoIWlubGlu
ZVN0eWxlKQotICAgICAgICAgICAgICAgIGlubGluZVN0eWxlID0gQ1NTUGFyc2VyOjpwYXJzZUlu
bGluZVN0eWxlRGVjbGFyYXRpb24obmV3U3R5bGVTdHJpbmcsIHRoaXMpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIGlubGluZVN0eWxlLT5wYXJzZURlY2xhcmF0aW9uKG5ld1N0
eWxlU3RyaW5nLCBkb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKS0+Y29udGVudHMoKSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgc2V0SXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCk7Ci0gICAgfQorICAgIFJl
ZlB0cjxTdHlsZVByb3BlcnR5U2V0PiYgaW5saW5lU3R5bGUgPSBhdHRyaWJ1dGVEYXRhKCktPm1f
aW5saW5lU3R5bGU7CisKKyAgICAvLyBBdm9pZCByZWR1bmRhbnQgd29yayBpZiB3ZSdyZSB1c2lu
ZyBzaGFyZWQgYXR0cmlidXRlIGRhdGEgd2l0aCBhbHJlYWR5IHBhcnNlZCBpbmxpbmUgc3R5bGUu
CisgICAgaWYgKGlubGluZVN0eWxlICYmICFhdHRyaWJ1dGVEYXRhKCktPmlzTXV0YWJsZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBXZSByZWNvbnN0cnVjdCB0aGUgcHJvcGVydHkgc2V0
IGluc3RlYWQgb2YgbXV0YXRpbmcgaWYgdGhlcmUgaXMgbm8gQ1NTT00gd3JhcHBlci4KKyAgICAv
LyBUaGlzIG1ha2VzIHdyYXBwZXJsZXNzIHByb3BlcnR5IHNldHMgaW1tdXRhYmxlIGFuZCBzbyBj
YWNoZWFibGUuCisgICAgaWYgKGlubGluZVN0eWxlICYmICFpbmxpbmVTdHlsZS0+aXNNdXRhYmxl
KCkpCisgICAgICAgIGlubGluZVN0eWxlLmNsZWFyKCk7CisKKyAgICBpZiAoIWlubGluZVN0eWxl
KQorICAgICAgICBpbmxpbmVTdHlsZSA9IENTU1BhcnNlcjo6cGFyc2VJbmxpbmVTdHlsZURlY2xh
cmF0aW9uKG5ld1N0eWxlU3RyaW5nLCB0aGlzKTsKKyAgICBlbHNlCisgICAgICAgIGlubGluZVN0
eWxlLT5wYXJzZURlY2xhcmF0aW9uKG5ld1N0eWxlU3RyaW5nLCBkb2N1bWVudCgpLT5lbGVtZW50
U2hlZXQoKS0+Y29udGVudHMoKSk7Cit9CisKK3ZvaWQgU3R5bGVkRWxlbWVudDo6c3R5bGVBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3U3R5bGVTdHJpbmcpCit7CisgICAg
V1RGOjpPcmRpbmFsTnVtYmVyIHN0YXJ0TGluZU51bWJlciA9IFdURjo6T3JkaW5hbE51bWJlcjo6
YmVmb3JlRmlyc3QoKTsKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5zY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoKSAmJiAhZG9jdW1lbnQoKS0+aXNJbkRvY3VtZW50V3JpdGUoKSkK
KyAgICAgICAgc3RhcnRMaW5lTnVtYmVyID0gZG9jdW1lbnQoKS0+c2NyaXB0YWJsZURvY3VtZW50
UGFyc2VyKCktPmxpbmVOdW1iZXIoKTsKKworICAgIGlmIChuZXdTdHlsZVN0cmluZy5pc051bGwo
KSkgeworICAgICAgICBpZiAoUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKiBjc3NvbVdy
YXBwZXIgPSBpbmxpbmVTdHlsZUNTU09NV3JhcHBlcigpKQorICAgICAgICAgICAgY3Nzb21XcmFw
cGVyLT5jbGVhclBhcmVudEVsZW1lbnQoKTsKKyAgICAgICAgbXV0YWJsZUF0dHJpYnV0ZURhdGEo
KS0+bV9pbmxpbmVTdHlsZS5jbGVhcigpOworICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQoKS0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SW5saW5lU3R5bGUoZG9jdW1lbnQoKS0+dXJsKCks
IHN0YXJ0TGluZU51bWJlcikpCisgICAgICAgIHNldElubGluZVN0eWxlRnJvbVN0cmluZyhuZXdT
dHlsZVN0cmluZyk7CisKKyAgICBhdHRyaWJ1dGVEYXRhKCktPm1fc3R5bGVBdHRyaWJ1dGVJc0Rp
cnR5ID0gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogV2h5IGFyZW4ndCB3ZSB1c2luZyBzZXROZWVk
c1N0eWxlUmVjYWxjKElubGluZVN0eWxlQ2hhbmdlKSBoZXJlPwogICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVTdHls
ZUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiB9CkBAIC0yMjAsNyArMjMyLDggQEAgdm9pZCBTdHls
ZWRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKIHZv
aWQgU3R5bGVkRWxlbWVudDo6aW5saW5lU3R5bGVDaGFuZ2VkKCkKIHsKICAgICBzZXROZWVkc1N0
eWxlUmVjYWxjKElubGluZVN0eWxlQ2hhbmdlKTsKLSAgICBzZXRJc1N0eWxlQXR0cmlidXRlVmFs
aWQoZmFsc2UpOworICAgIEFTU0VSVChhdHRyaWJ1dGVEYXRhKCkpOworICAgIGF0dHJpYnV0ZURh
dGEoKS0+bV9zdHlsZUF0dHJpYnV0ZUlzRGlydHkgPSB0cnVlOwogICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKIH0K
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDA0NGM3NDEuLjhmMmRiMzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNTYsMTAgKzU2LDYgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBBdHRyaWJ1dGUmLCBTdHlsZVByb3BlcnR5U2V0KikgeyB9CiAKLSAgICAvLyBNYXkg
YmUgY2FsbGVkIGJ5IEVsZW1lbnRBdHRyaWJ1dGVEYXRhOjpjbG9uZURhdGFGcm9tKCkuCi0gICAg
ZW51bSBTaG91bGRSZXBhcnNlU3R5bGVBdHRyaWJ1dGUgeyBEb05vdFJlcGFyc2VTdHlsZUF0dHJp
YnV0ZSA9IDAsIFJlcGFyc2VTdHlsZUF0dHJpYnV0ZSA9IDEgfTsKLSAgICB2b2lkIHN0eWxlQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1N0eWxlU3RyaW5nLCBTaG91bGRS
ZXBhcnNlU3R5bGVBdHRyaWJ1dGUgPSBSZXBhcnNlU3R5bGVBdHRyaWJ1dGUpOwotCiBwcm90ZWN0
ZWQ6CiAgICAgU3R5bGVkRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBD
b25zdHJ1Y3Rpb25UeXBlKTsKIApAQCAtNzUsOSArNzEsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4m
KSBjb25zdDsKIAogcHJpdmF0ZToKKyAgICB2b2lkIHN0eWxlQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1N0eWxlU3RyaW5nKTsKKwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTdHlsZUF0dHJpYnV0ZSgpIGNvbnN0OwogICAgIHZvaWQgaW5saW5lU3R5bGVDaGFuZ2VkKCk7
CiAgICAgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZUNTU09NV3Jh
cHBlcigpOworICAgIHZvaWQgc2V0SW5saW5lU3R5bGVGcm9tU3RyaW5nKGNvbnN0IEF0b21pY1N0
cmluZyYpOwogCiAgICAgdm9pZCBtYWtlUHJlc2VudGF0aW9uQXR0cmlidXRlQ2FjaGVLZXkoUHJl
c2VudGF0aW9uQXR0cmlidXRlQ2FjaGVLZXkmKSBjb25zdDsKICAgICB2b2lkIHJlYnVpbGRQcmVz
ZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpOwpAQCAtODUsNyArODQsOCBAQCBwcml2YXRlOgogCiBp
bmxpbmUgdm9pZCBTdHlsZWRFbGVtZW50OjppbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUoKQogewot
ICAgIGNsZWFySXNTdHlsZUF0dHJpYnV0ZVZhbGlkKCk7CisgICAgQVNTRVJUKGF0dHJpYnV0ZURh
dGEoKSk7CisgICAgYXR0cmlidXRlRGF0YSgpLT5tX3N0eWxlQXR0cmlidXRlSXNEaXJ0eSA9IHRy
dWU7CiB9CiAKIGlubGluZSBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBTdHlsZWRFbGVtZW50Ojpw
cmVzZW50YXRpb25BdHRyaWJ1dGVTdHlsZSgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>