<?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>159625</bug_id>
          
          <creation_ts>2016-07-11 07:30:10 -0700</creation_ts>
          <short_desc>Move parsing of accentunder and accent attributes from renderer to element classes</short_desc>
          <delta_ts>2016-07-21 22:34:08 -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>MathML</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>124826</dependson>
          <blocked>156536</blocked>
    
    <blocked>159623</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1209642</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-11 07:30:10 -0700</bug_when>
    <thetext>This is bug 156536 for accentunder/accent attributes parsed of RenderMathMLUnderOver added in bug 155756.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1212311</commentid>
    <comment_count>1</comment_count>
      <attachid>283986</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-19 01:41:08 -0700</bug_when>
    <thetext>Created attachment 283986
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213230</commentid>
    <comment_count>2</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-21 11:52:22 -0700</bug_when>
    <thetext>@Brent: Can you please take a look at the patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213233</commentid>
    <comment_count>3</comment_count>
      <attachid>283986</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-21 12:05:09 -0700</bug_when>
    <thetext>Comment on attachment 283986
Patch

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

This patch seems fine, but I&apos;m a little confused about the reason for the &quot;Default&quot; BooleanValue type. Can you clarify what that is meant to represent or what it&apos;s purpose is?

&gt; Source/WebCore/mathml/MathMLElement.cpp:530
&gt; +    if (attribute.dirty) {

We prefer early return:

if (!attribute.dirty)
    return attribute value;

... other stuff ...
return attribute.value;

&gt; Source/WebCore/mathml/MathMLElement.cpp:538
&gt; +            attribute.value = BooleanValue::Default;

I don&apos;t really understand the purpose of &quot;Default&quot; here. Is this part of the MathML specification?

Maybe a better term would be &quot;Undefined&quot; or something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213239</commentid>
    <comment_count>4</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-21 12:14:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 283986 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=283986&amp;action=review
&gt; 
&gt; This patch seems fine, but I&apos;m a little confused about the reason for the
&gt; &quot;Default&quot; BooleanValue type. Can you clarify what that is meant to represent
&gt; or what it&apos;s purpose is?

The idea is that when you have an explicit attribute &quot;true&quot; or &quot;false&quot;, you know which boolean value to set for a property. When the attribute is absent or ignored (when invalid) then a &quot;default&quot; or &quot;automatic&quot; value should be used for the property. This may depend on other parameters like the operator dictionary (as in this bug to determine whether an overscript is an accent) or some special inheritance rules (like in bug 159623 to calculate mathvariant &amp; displaystyle). I think the exact name does not matter, it&apos;s more or less an implementation detail. Maybe &quot;Automatic&quot; would be more appropriate? But I&apos;m fine with undefined too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213288</commentid>
    <comment_count>5</comment_count>
      <attachid>283986</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-07-21 13:44:53 -0700</bug_when>
    <thetext>Comment on attachment 283986
Patch

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

r=me

&gt;&gt; Source/WebCore/mathml/MathMLElement.cpp:538
&gt;&gt; +            attribute.value = BooleanValue::Default;
&gt; 
&gt; I don&apos;t really understand the purpose of &quot;Default&quot; here. Is this part of the MathML specification?
&gt; 
&gt; Maybe a better term would be &quot;Undefined&quot; or something?

Based on your explanation, I think &quot;Default&quot; is the right term.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1213492</commentid>
    <comment_count>6</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2016-07-21 22:34:08 -0700</bug_when>
    <thetext>Committed r203553: &lt;http://trac.webkit.org/changeset/203553&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>283986</attachid>
            <date>2016-07-19 01:41:08 -0700</date>
            <delta_ts>2016-07-21 13:44:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159625-20160719104011.patch</filename>
            <type>text/plain</type>
            <size>31333</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAzMzk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWFmN2U3ZmY5YjBmMmY1
OGY3NzIxYmZkMjdmMzM3YWY5N2Q1ZmIxYi4uNDU1ZTJkMzkwNjE4ZWUwMTRkMTk4OTRmZGVmNjE5
YjY0MWMwZTkwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE2LTA3LTE5ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIHBhcnNpbmcgb2Yg
YWNjZW50dW5kZXIgYW5kIGFjY2VudCBhdHRyaWJ1dGVzIGZyb20gcmVuZGVyZXIgdG8gZWxlbWVu
dCBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNTk2MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBXZSBpbnRyb2R1Y2UgYSBuZXcgTWF0aE1MVW5kZXJPdmVyRWxlbWVudCB0aGF0IGlzIHVzZWQg
Zm9yIGVsZW1lbnRzIG11bmRlciwgbW92ZXIgYW5kCisgICAgICAgIG11bmRlcm92ZXIgaW4gb3Jk
ZXIgdG8gY3JlYXRlIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBhbmQgcGFyc2UgYW5kIGV4cG9zZSB0
aGUgdmFsdWVzIG9mIHRoZQorICAgICAgICBhY2NlbnQgYW5kIGFjY2VudHVuZGVyIGF0dHJpYnV0
ZXMuIFRoaXMgaXMgb25lIG1vcmUgc3RlcCB0b3dhcmQgbW92aW5nIE1hdGhNTCBhdHRyaWJ1dGUK
KyAgICAgICAgcGFyc2luZyB0byB0aGUgRE9NIChidWcgMTU2NTM2KS4gV2UgYWxzbyBkbyBtaW5v
ciBjbGVhbi11cCBmb3IgdGhpcyBhbmQgcHJldmlvdXMgcmVuZGVyZXIKKyAgICAgICAgY2xhc3Nl
cyB0aGF0IG5vIGxvbmdlciBkbyBhdHRyaWJ1dGUgcGFyc2luZzogdGhlIE1hdGhNTE5hbWVzIG5h
bWVzcGFjZSBpcyBubyBsb25nZXIgbmVjZXNzYXJ5CisgICAgICAgIGFuZCBjb25zdHJ1Y3RvcnMg
Y2FuIHRha2UgYSBtb3JlIGFjY3VyYXRlIGVsZW1lbnQgdHlwZS4KKworICAgICAgICBObyBuZXcg
dGVzdHMsIGFscmVhZHkgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0LgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6IEFkZCBNYXRoTUxVbmRlck92ZXJFbGVtZW50IGZpbGVzLgorICAgICAgICAq
IFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0dG8uCisgICAgICAgICogbWF0
aG1sL01hdGhNTEFsbEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogbWF0aG1sL01hdGhNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MRWxlbWVudDo6Y2FjaGVkQm9vbGVh
bkF0dHJpYnV0ZSk6IEFkZCBwYXJzaW5nIG9mIGJvb2xlYW4gYXR0cmlidXRlcy4KKyAgICAgICAg
KiBtYXRobWwvTWF0aE1MRWxlbWVudC5oOiBOZXcgdHlwZSBhbmQgaGVscGVyIGZ1bmN0aW9ucyBm
b3IgYm9vbGVhbiBhdHRyaWJ1dGVzLgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxJbmxpbmVDb250
YWluZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTElubGluZUNvbnRhaW5l
ckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcik6IFJlbW92ZSBoYW5kbGluZyBvZgorICAg
ICAgICB1bmRlci9vdmVyL3VuZGVyb3ZlciBlbGVtZW50cy4KKyAgICAgICAgKiBtYXRobWwvTWF0
aE1MU2NyaXB0c0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MU2NyaXB0c0Vs
ZW1lbnQ6Ok1hdGhNTFNjcmlwdHNFbGVtZW50KTogUmVtb3ZlIGlubGluZSBrZXl3b3JkIHRvIGF2
b2lkIGxpbmsKKyAgICAgICAgZXJyb3JzIG5vdyB0aGF0IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQg
b3ZlcnJpZGVzIHRoYXQgY2xhc3MuCisgICAgICAgICogbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVt
ZW50Lmg6IEFsbG93IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQgdG8gb3ZlcnJpZGUgdGhpcyBjbGFz
cy4KKyAgICAgICAgKiBtYXRobWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJFbGVtZW50OjpNYXRoTUxVbmRlck92ZXJFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJFbGVtZW50OjphY2NlbnQpOiBIZWxwZXIg
ZnVuY3Rpb24gdG8gYWNjZXNzIHRoZSBhY2NlbnQgdmFsdWUuCisgICAgICAgIChXZWJDb3JlOjpN
YXRoTUxVbmRlck92ZXJFbGVtZW50OjphY2NlbnRVbmRlcik6IEhlbHBlciBmdW5jdGlvbiB0byBh
Y2Nlc3MgdGhlIGFjY2VudHVuZGVyIHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MVW5k
ZXJPdmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBNYWtlIGFjY2VudCBhbmQgYWNjZW50dW5k
ZXIgZGlydHkuCisgICAgICAgIChXZWJDb3JlOjpNYXRoTUxVbmRlck92ZXJFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIpOiBDcmVhdGUgUmVuZGVyTWF0aE1MVW5kZXJPdmVyCisgICAgICAg
ICogbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaDoKKyAgICAgICAgKiBtYXRobWwvbWF0
aHRhZ3MuaW46IE1hcCB1bmRlci9vdmVyL3VuZGVyb3ZlciB0byBNYXRoTUxVbmRlck92ZXJFbGVt
ZW50LgorICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3Bw
OiBSZW1vdmUgTWF0aE1MTmFtZXMgYW5kIG1ha2UgdGhlIGNvbnN0cnVjdG9yCisgICAgICAgIHRh
a2UgYSBNYXRoTUxGcmFjdGlvbkVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJNYXRo
TUxGcmFjdGlvbjo6UmVuZGVyTWF0aE1MRnJhY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTFBhZGRlZC5jcHA6IFJlbW92ZSBNYXRoTUxOYW1lcyBhbmQgbWFrZSB0aGUg
Y29uc3RydWN0b3IKKyAgICAgICAgdGFrZSBhIE1hdGhNTFBhZGRlZEVsZW1lbnQuCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJNYXRoTUxQYWRkZWQ6OlJlbmRlck1hdGhNTFBhZGRlZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwOiBSZW1vdmUgTWF0aE1MTmFt
ZXMgYW5kIG1ha2UgdGhlIGNvbnN0cnVjdG9yCisgICAgICAgIHRha2UgYSBNYXRoTUxTY3JpcHRz
RWxlbWVudC4gQWxzbyByZW5hbWUgc2NyaXB0c0VsZW1lbnQoKSB0byBlbGVtZW50KCkuCisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5kZXJNYXRoTUxTY3JpcHRzKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OmVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MU2NyaXB0czo6Z2V0U2NyaXB0TWV0cmljc0FuZExheW91
dElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTFNjcmlwdHM6OnNjcmlw
dHNFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1h
dGhNTFNjcmlwdHMuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVu
ZGVyT3Zlci5jcHA6IFJlbW92ZSBNYXRoTUxOYW1lcyBhbmQgbWFrZSB0aGUgY29uc3RydWN0b3IK
KyAgICAgICAgdGFrZSBhIFJlbmRlck1hdGhNTFVuZGVyT3Zlci4KKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6ZWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJNYXRoTUxVbmRlck92ZXI6Omhhc0FjY2VudCk6IFVzZSB0aGUgaGVscGVyIGZ1
bmN0aW9ucyBmb3IgYWNjZW50IGFuZCBhY2NlbnR1bmRlci4KKyAgICAgICAgKiByZW5kZXJpbmcv
bWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oOgorCiAyMDE2LTA3LTE4ICBGcmVkZXJpYyBX
YW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBNb3ZlIHBhcnNpbmcgb2Ygc3Vic2Ny
aXB0c2hpZnQgYW5kIHN1cGVyc2NyaXB0c2hpZnQgZnJvbSByZW5kZXJpbmcgdG8gZWxlbWVudCBj
bGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDNkNzU2NjFlOWQ4NDllYjk5ZTcwMDc1MWM2
MTQwN2RlYzJiODQwZjUuLjViODBkN2U5YWJlNTEyMWVmZmY0YjRlNTI3OWI1NGIyN2VjYzljNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xOTk1LDYgKzE5OTUsNyBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgbWF0aG1sL01hdGhNTFNlbGVjdEVsZW1lbnQuY3BwCiAgICAgbWF0aG1sL01h
dGhNTFNwYWNlRWxlbWVudC5jcHAKICAgICBtYXRobWwvTWF0aE1MVGV4dEVsZW1lbnQuY3BwCisg
ICAgbWF0aG1sL01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwCiAKICAgICBwYWdlL0F1dG9zY3Jv
bGxDb250cm9sbGVyLmNwcAogICAgIHBhZ2UvQmFyUHJvcC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZDgyYmUyNWRiMWNk
Yzc3MjIyM2UxNTg0MmQzZmIxYThlODc2Y2QxLi4xNWQ4ZDEwNzkxYTk0MzViZmY5MjI0Yjg5YWNl
MTY4YWExYTk0ZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02OTA3LDYgKzY5MDcsOCBAQAogCQlGOUYwRUQ3QTBEQjUwQ0Ey
MDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkg
LyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUZBNjU0QTZCMTEwOEFC
RUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2OTExMDhBQkVEMDAyNjE1RTAgLyogTWF0
aE1MVGV4dEVsZW1lbnQuY3BwICovOyB9OwogCQlGQTY1NEE2QzExMDhBQkVEMDAyNjE1RTAgLyog
TWF0aE1MVGV4dEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZBNjU0QTZBMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5o
ICovOyB9OworCQlGQTY1NEE2QjExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
QTY1NEE2OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi87
IH07CisJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQTY1NEE2
QTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oICovOyB9OwogCQlG
QUJFNzJGNDEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQUJFNzJFRDEwNTlDMUVCMDBEOTk5
REQgLyogTWF0aE1MRWxlbWVudC5jcHAgKi87IH07CiAJCUZBQkU3MkY1MTA1OUMxRUIwMEQ5OTlE
RCAvKiBNYXRoTUxFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGQUJFNzJFRTEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MRWxlbWVudC5oICov
OyB9OwogCQlGQUJFNzJGNjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVy
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGQUJFNzJFRjEwNTlDMUVCMDBEOTk5REQgLyogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dC5jcHAgKi87IH07CkBAIC0xNTA4NCw2ICsxNTA4Niw4IEBACiAJCUZBNjU0QTY3MTEwOEFCRTIw
MDI2MTVFMCAvKiBtYXRoYXR0cnMuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0aGF0dHJz
LmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQTY1NEE2OTExMDhBQkVEMDAyNjE1
RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTWF0aE1MVGV4dEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGQTY1NEE2QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWF0aE1MVGV4dEVsZW1lbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkE2NTRBNjkxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhN
TFVuZGVyT3ZlckVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZBNjU0QTZBMTEwOEFCRUQwMDI2MjZGMSAvKiBNYXRoTUxVbmRlck92ZXJFbGVtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkE2RTQ2NkZDRDA0MThBOTk2NkE1QjYw
IC8qIEROU1Jlc29sdmVRdWV1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
TlNSZXNvbHZlUXVldWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkFCRTcyRUQx
MDU5QzFFQjAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTWF0aE1MRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZBQkU3MkVFMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxFbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hdGhNTEVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0OTA2LDYgKzI0OTEwLDggQEAKIAkJCQk0RkE2NUE2QTEx
MDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MU3BhY2VFbGVtZW50LmggKi8sCiAJCQkJRkE2NTRBNjkx
MTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFRleHRFbGVtZW50LmNwcCAqLywKIAkJCQlGQTY1NEE2
QTExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVsZW1lbnQuaCAqLywKKwkJCQlGQTY1NEE2
OTExMDhBQkVEMDAyNjI2RjEgLyogTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAgKi8sCisJCQkJ
RkE2NTRBNkExMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuaCAqLywK
IAkJCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8sCiAJCQkpOwog
CQkJcGF0aCA9IG1hdGhtbDsKQEAgLTI3NDQ0LDYgKzI3NDUwLDcgQEAKIAkJCQk0MzkxNzZFMDEy
REEyNUUxN0JBRjgwQTIgLyogTWF0aE1MU3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGQTY1
QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxTcGFjZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUZBNjU0QTZDMTEwOEFCRUQwMDI2MTVFMCAvKiBNYXRoTUxUZXh0RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkE2NTRBNkMxMTA4QUJFRDAwMjYyNkYxIC8qIE1hdGhNTFVuZGVy
T3ZlckVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzOTA0NkVBMTJEQTI1RTgxMkFGODBB
QyAvKiBNYXRoT3BlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5RDVEQzJDMEY0MjNBNzMw
MDhGMjBGRCAvKiBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDlFOTExQzcwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMTI3Niw2ICszMTI4Myw3IEBACiAJCQkJRkVENDgzOTBDRUQ2
NkMzMjU1RjcyQzU5IC8qIE1hdGhNTFNlbGVjdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNEZBNjVBNkIxMTA4QUJFRDAwMjYxNUUwIC8qIE1hdGhNTFNwYWNlRWxlbWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGQTY1NEE2QjExMDhBQkVEMDAyNjE1RTAgLyogTWF0aE1MVGV4dEVs
ZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkE2NTRBNkIxMTA4QUJFRDAwMjYyNkYxIC8q
IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM5MDQ2RTkx
MkRBMjVFODEyQUY4MEFDIC8qIE1hdGhPcGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0
OUQ1REMyQjBGNDIzQTczMDA4RjIwRkQgLyogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNDlFOTExQzYwRUY4NkQ0NzAwOUQwQ0FGIC8qIE1hdHJpeFRy
YW5zZm9ybU9wZXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MQWxsSW5PbmUuY3BwCmluZGV4IDczNTMzMGM2MWRhYzQ1N2ZhNjdlMTI5ODVmYWZmYjBl
YTNkOWJhZmQuLmJhYmY4MmIyN2ViMzAwYmM1ODVhNmJlMzA2OGI5MjM0YjczNzZmMWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxBbGxJbk9uZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEFsbEluT25lLmNwcApAQCAtMzUsNCArMzUsNSBAQAog
I2luY2x1ZGUgIk1hdGhNTFNjcmlwdHNFbGVtZW50LmNwcCIKICNpbmNsdWRlICJNYXRoTUxTZWxl
Y3RFbGVtZW50LmNwcCIKICNpbmNsdWRlICJNYXRoTUxUZXh0RWxlbWVudC5jcHAiCisjaW5jbHVk
ZSAiTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmNwcAppbmRleCBkYTk3ZjA3MjM1NzY0NDQ1MDJmYmU4NGQyMzdkNTY2NmIyYjU5
N2QzLi5lOWI3NGNkMzJmYjk1MjljMWY4OTIyNmE4MjhlM2Y2MWQ4NTFmNzQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC01MjUsNiArNTI1LDIyIEBAIGNvbnN0
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCYgTWF0aE1MRWxlbWVudDo6Y2FjaGVkTWF0aE1MTGVuZ3Ro
KGNvbnN0IFF1YWxpZmllZE5hCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAorY29uc3QgTWF0aE1M
RWxlbWVudDo6Qm9vbGVhblZhbHVlJiBNYXRoTUxFbGVtZW50OjpjYWNoZWRCb29sZWFuQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIEJvb2xlYW5BdHRyaWJ1dGUmIGF0dHJpYnV0
ZSkKK3sKKyAgICBpZiAoYXR0cmlidXRlLmRpcnR5KSB7CisgICAgICAgIC8vIEluIE1hdGhNTCwg
YXR0cmlidXRlIHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRpdmUuCisgICAgICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKG5hbWUpOwor
ICAgICAgICBpZiAodmFsdWUgPT0gInRydWUiKQorICAgICAgICAgICAgYXR0cmlidXRlLnZhbHVl
ID0gQm9vbGVhblZhbHVlOjpUcnVlOworICAgICAgICBlbHNlIGlmICh2YWx1ZSA9PSAiZmFsc2Ui
KQorICAgICAgICAgICAgYXR0cmlidXRlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpGYWxzZTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgYXR0cmlidXRlLnZhbHVlID0gQm9vbGVhblZhbHVlOjpE
ZWZhdWx0OworICAgICAgICBhdHRyaWJ1dGUuZGlydHkgPSBmYWxzZTsKKyAgICB9CisgICAgcmV0
dXJuIGF0dHJpYnV0ZS52YWx1ZTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCmluZGV4IDRjOTYwMGEwMGU2YzA4Zjk5
OTU0MTcyMDkzYjNkNTQzOWNiZjI1ZTYuLjk3OGNmMjBjOTlhYmFhN2U2MThlNmZiYjI4NDYyMGFj
NGVmNmNlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaApAQCAtNjYsNiAr
NjYsMTIgQEAgcHVibGljOgogICAgIH07CiAgICAgc3RhdGljIExlbmd0aCBwYXJzZU1hdGhNTExl
bmd0aChjb25zdCBTdHJpbmcmKTsKIAorICAgIGVudW0gY2xhc3MgQm9vbGVhblZhbHVlIHsgVHJ1
ZSwgRmFsc2UsIERlZmF1bHQgfTsKKyAgICBzdHJ1Y3QgQm9vbGVhbkF0dHJpYnV0ZSB7CisgICAg
ICAgIEJvb2xlYW5WYWx1ZSB2YWx1ZSB7IEJvb2xlYW5WYWx1ZTo6RGVmYXVsdCB9OworICAgICAg
ICBib29sIGRpcnR5IHsgdHJ1ZSB9OworICAgIH07CisKIHByb3RlY3RlZDoKICAgICBNYXRoTUxF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CiAKQEAgLTgz
LDYgKzg5LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCopIG92ZXJyaWRlOwogCiAgICAgY29uc3QgTGVuZ3RoJiBjYWNoZWRNYXRoTUxMZW5ndGgoY29u
c3QgUXVhbGlmaWVkTmFtZSYsIExlbmd0aCYpOworICAgIGNvbnN0IEJvb2xlYW5WYWx1ZSYgY2Fj
aGVkQm9vbGVhbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgQm9vbGVhbkF0dHJpYnV0
ZSYpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTZWxlY3RlZENoaWxkKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MSW5saW5lQ29udGFp
bmVyRWxlbWVudC5jcHAKaW5kZXggMzYyMTlkMmNiNWMwN2Y4YTE3NzNiZjA1NmEyNjU1ZGExNzJl
YjY2Ni4uMGI0MDcwNzViOWU3N2ZkZWFlOWM4NmVhN2MxNjAyZWE5NGQzNWJkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
LmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIlJlbmRlck1hdGhNTE1lbmNsb3NlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MUm9vdC5oIgogI2luY2x1ZGUgIlJlbmRlck1hdGhNTFJv
dy5oIgotI2luY2x1ZGUgIlJlbmRlck1hdGhNTFVuZGVyT3Zlci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY1LDggKzY0LDYgQEAgUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IE1hdGhN
TElubGluZUNvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW4KIHsKICAg
ICBpZiAoaGFzVGFnTmFtZShhbm5vdGF0aW9uX3htbFRhZykgfHwgaGFzVGFnTmFtZShtZXJyb3JU
YWcpIHx8IGhhc1RhZ05hbWUobXBoYW50b21UYWcpIHx8IGhhc1RhZ05hbWUobXJvd1RhZykgfHwg
aGFzVGFnTmFtZShtc3R5bGVUYWcpKQogICAgICAgICByZXR1cm4gY3JlYXRlUmVuZGVyZXI8UmVu
ZGVyTWF0aE1MUm93PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwotICAgIGlmIChoYXNUYWdOYW1l
KG1vdmVyVGFnKSB8fCBoYXNUYWdOYW1lKG11bmRlclRhZykgfHwgaGFzVGFnTmFtZShtdW5kZXJv
dmVyVGFnKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1hdGhNTFVuZGVy
T3Zlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKICAgICBpZiAoaGFzVGFnTmFtZShtc3FydFRh
ZykgfHwgaGFzVGFnTmFtZShtcm9vdFRhZykpCiAgICAgICAgIHJldHVybiBjcmVhdGVSZW5kZXJl
cjxSZW5kZXJNYXRoTUxSb290PigqdGhpcywgV1RGTW92ZShzdHlsZSkpOwogICAgIGlmIChoYXNU
YWdOYW1lKG1mZW5jZWRUYWcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFNjcmlwdHNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxTY3Jp
cHRzRWxlbWVudC5jcHAKaW5kZXggZTBiZjQ4NjU0ZGU3ZDJiMTQyMzk0YmU1NjFkNWU4ZGU2MmY0
MTlhYy4uNWVhZGExYTZlN2NhMzBmOGM2YWRjZTcyZThjNDUxYTc5YmUyZWJlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuY3BwCkBAIC0zNSw3ICsz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVz
OwogCi1pbmxpbmUgTWF0aE1MU2NyaXB0c0VsZW1lbnQ6Ok1hdGhNTFNjcmlwdHNFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCkKK01hdGhNTFNj
cmlwdHNFbGVtZW50OjpNYXRoTUxTY3JpcHRzRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBNYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTFNjcmlwdHNFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
TWF0aE1MU2NyaXB0c0VsZW1lbnQuaAppbmRleCA3NWUxN2M5YmU0MjQ3NmFhZWZiM2FkOTY1M2Rj
NzM4ZmQ2ZTdkZWJiLi41NzQ3ZTc0MDhjMmY2Njg0MzlmMzFlNTNiMzA1ODVmNWM1NDFiMDI3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MU2NyaXB0c0VsZW1lbnQuaApAQCAtMzAs
MTYgKzMwLDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgTWF0aE1MU2NyaXB0
c0VsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudCB7Citj
bGFzcyBNYXRoTUxTY3JpcHRzRWxlbWVudCA6IHB1YmxpYyBNYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1hdGhNTFNjcmlwdHNFbGVtZW50PiBj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKICAgICBjb25z
dCBMZW5ndGgmIHN1YnNjcmlwdFNoaWZ0KCk7CiAgICAgY29uc3QgTGVuZ3RoJiBzdXBlcnNjcmlw
dFNoaWZ0KCk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgTWF0aE1MU2NyaXB0c0VsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmKTsKLSAgICBSZW5kZXJQ
dHI8UmVuZGVyRWxlbWVudD4gY3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpIGZpbmFsOwotICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIGZpbmFsOworCitwcml2
YXRlOgorICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIo
UmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3Ry
aW5nJikgb3ZlcnJpZGU7CiAKICAgICBMZW5ndGggbV9zdWJzY3JpcHRTaGlmdDsKICAgICBMZW5n
dGggbV9zdXBlcnNjcmlwdFNoaWZ0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L01hdGhNTFVuZGVyT3ZlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhN
TFVuZGVyT3ZlckVsZW1lbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMTkzZTZmNmU1MmYwYTU3NWYwZTU2
MGU3NjU3YzNhNDhkZGZmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRo
bWwvTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNQVRI
TUwpCisjaW5jbHVkZSAiTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oIgorCisjaW5jbHVkZSAiUmVu
ZGVyTWF0aE1MVW5kZXJPdmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFt
ZXNwYWNlIE1hdGhNTE5hbWVzOworCitpbmxpbmUgTWF0aE1MVW5kZXJPdmVyRWxlbWVudDo6TWF0
aE1MVW5kZXJPdmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCisgICAgOiBNYXRoTUxTY3JpcHRzRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKK3sKK30KKworUmVmPE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ+IE1hdGhNTFVuZGVyT3ZlckVs
ZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9j
dW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTWF0aE1MVW5kZXJPdmVyRWxlbWVu
dCh0YWdOYW1lLCBkb2N1bWVudCkpOworfQorCitjb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFu
VmFsdWUmIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OmFjY2VudCgpCit7CisgICAgcmV0dXJuIGNh
Y2hlZEJvb2xlYW5BdHRyaWJ1dGUoYWNjZW50QXR0ciwgbV9hY2NlbnQpOworfQorCitjb25zdCBN
YXRoTUxFbGVtZW50OjpCb29sZWFuVmFsdWUmIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OmFjY2Vu
dFVuZGVyKCkKK3sKKyAgICByZXR1cm4gY2FjaGVkQm9vbGVhbkF0dHJpYnV0ZShhY2NlbnR1bmRl
ckF0dHIsIG1fYWNjZW50VW5kZXIpOworfQorCit2b2lkIE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0
cmluZyYgdmFsdWUpCit7CisgICAgaWYgKG5hbWUgPT0gYWNjZW50QXR0cikKKyAgICAgICAgbV9h
Y2NlbnQuZGlydHkgPSB0cnVlOworICAgIGVsc2UgaWYgKG5hbWUgPT0gYWNjZW50dW5kZXJBdHRy
KQorICAgICAgICBtX2FjY2VudFVuZGVyLmRpcnR5ID0gdHJ1ZTsKKworICAgIE1hdGhNTEVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKK30KKworUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IE1hdGhNTFVuZGVyT3ZlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5k
ZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQoreworICAgIEFTU0VS
VChoYXNUYWdOYW1lKG11bmRlclRhZykgfHwgaGFzVGFnTmFtZShtb3ZlclRhZykgfHwgaGFzVGFn
TmFtZShtdW5kZXJvdmVyVGFnKSk7CisgICAgcmV0dXJuIGNyZWF0ZVJlbmRlcmVyPFJlbmRlck1h
dGhNTFVuZGVyT3Zlcj4oKnRoaXMsIFdURk1vdmUoc3R5bGUpKTsKK30KKworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKE1BVEhNTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxVbmRlck92ZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MVW5kZXJP
dmVyRWxlbWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY3NjM3NGVlZjYwMzEzYTJkMmE5MzBkYmVkYjk3OGMz
ZGUzNDI3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
VW5kZXJPdmVyRWxlbWVudC5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKE1BVEhNTCkKKyNpbmNsdWRlICJNYXRoTUxT
Y3JpcHRzRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE1hdGhNTFVu
ZGVyT3ZlckVsZW1lbnQgZmluYWwgOiBwdWJsaWMgTWF0aE1MU2NyaXB0c0VsZW1lbnQgeworcHVi
bGljOgorICAgIHN0YXRpYyBSZWY8TWF0aE1MVW5kZXJPdmVyRWxlbWVudD4gY3JlYXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Jik7CisgICAgY29uc3QgQm9vbGVhblZh
bHVlJiBhY2NlbnQoKTsKKyAgICBjb25zdCBCb29sZWFuVmFsdWUmIGFjY2VudFVuZGVyKCk7CisK
K3ByaXZhdGU6CisgICAgTWF0aE1MVW5kZXJPdmVyRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiB0YWdOYW1lLCBEb2N1bWVudCYpOworICAgIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9u
JikgZmluYWw7CisgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgQXRvbWljU3RyaW5nJikgZmluYWw7CisKKyAgICBCb29sZWFuQXR0cmlidXRlIG1fYWNj
ZW50OworICAgIEJvb2xlYW5BdHRyaWJ1dGUgbV9hY2NlbnRVbmRlcjsKK307CisKK30KKworI2Vu
ZGlmIC8vIEVOQUJMRShNQVRITUwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
bWF0aHRhZ3MuaW4gYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KaW5kZXggZDk5
MmNlNDM0NWIyZjkzNGQyOGFhNGM2YzE5YzZlNTgxNjVlMjQ2Mi4uZmQ4NjJlY2EyNDRmODg3Njgw
OTQ0YjgxODg3YzZiMTJhYjcwMGNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1s
L21hdGh0YWdzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgpAQCAt
MTUsOSArMTUsOSBAQCBtcGFkZGVkIGludGVyZmFjZU5hbWU9TWF0aE1MUGFkZGVkRWxlbWVudAog
bXBoYW50b20gaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtcm93
IGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAogbXN0eWxlIGludGVy
ZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAotbW92ZXIgaW50ZXJmYWNlTmFt
ZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50Ci1tdW5kZXIgaW50ZXJmYWNlTmFtZT1NYXRo
TUxJbmxpbmVDb250YWluZXJFbGVtZW50Ci1tdW5kZXJvdmVyIGludGVyZmFjZU5hbWU9TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudAorbW92ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxVbmRlck92
ZXJFbGVtZW50CittdW5kZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxVbmRlck92ZXJFbGVtZW50Citt
dW5kZXJvdmVyIGludGVyZmFjZU5hbWU9TWF0aE1MVW5kZXJPdmVyRWxlbWVudAogbXNxcnQgaW50
ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtcm9vdCBpbnRlcmZhY2VO
YW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKIG1pIGludGVyZmFjZU5hbWU9TWF0aE1M
VGV4dEVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxGcmFjdGlvbi5jcHAKaW5kZXggYmY3Zjg3ZDI1ZWRjYjVkMTZjNmMyMGUz
ZmQyMWUwNDJhOTk3Y2UwMi4uNjRhMDlhMGJmYzE3OWE0MGIwNjAwNjQzMjdmMzIwYTc4Mzg0NWJm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRo
TUxGcmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5k
ZXJNYXRoTUxGcmFjdGlvbi5jcHAKQEAgLTMxLDE1ICszMSwxMyBAQAogI2luY2x1ZGUgIlJlbmRl
ck1hdGhNTEZyYWN0aW9uLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNs
dWRlICJNYXRoTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1hdGhNTEZyYWN0aW9uRWxlbWVudC5oIgog
I2luY2x1ZGUgIlBhaW50SW5mby5oIgogI2luY2x1ZGUgPGNtYXRoPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKLQotUmVuZGVyTWF0aE1MRnJh
Y3Rpb246OlJlbmRlck1hdGhNTEZyYWN0aW9uKE1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQm
IGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCitSZW5kZXJNYXRoTUxGcmFjdGlvbjo6UmVu
ZGVyTWF0aE1MRnJhY3Rpb24oTWF0aE1MRnJhY3Rpb25FbGVtZW50JiBlbGVtZW50LCBSZW5kZXJT
dHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MQmxvY2soZWxlbWVudCwgV1RGTW92ZShz
dHlsZSkpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZyYWN0aW9uLmgKaW5kZXggMjliNThjY2EyM2ZjOGM4MzkyMzJiZDhlMjJh
YjViZTcxMDUyZTAxMi4uMDg1YTc1ZDI4NWUzYjljYTI0N2M4ZjMyNTFiMzNmMmYxMWQ5NDBiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxG
cmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0
aE1MRnJhY3Rpb24uaApAQCAtMzUsOSArMzUsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CitjbGFzcyBNYXRoTUxGcmFjdGlvbkVsZW1lbnQ7CisKIGNsYXNzIFJlbmRlck1hdGhNTEZyYWN0
aW9uIGZpbmFsIDogcHVibGljIFJlbmRlck1hdGhNTEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5k
ZXJNYXRoTUxGcmFjdGlvbihNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50JiwgUmVuZGVyU3R5
bGUmJik7CisgICAgUmVuZGVyTWF0aE1MRnJhY3Rpb24oTWF0aE1MRnJhY3Rpb25FbGVtZW50Jiwg
UmVuZGVyU3R5bGUmJik7CiAKICAgICBmbG9hdCByZWxhdGl2ZUxpbmVUaGlja25lc3MoKSBjb25z
dCB7IHJldHVybiBtX2RlZmF1bHRMaW5lVGhpY2tuZXNzID8gbV9saW5lVGhpY2tuZXNzIC8gbV9k
ZWZhdWx0TGluZVRoaWNrbmVzcyA6IExheW91dFVuaXQoMCk7IH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRkZWQuY3BwCmluZGV4
IGMyZDFlNzY3NGRlMmU4NWMyNTYyZjAwMjgzNzVlZThkYjMyODA4ZTMuLjNlY2E1NWM0ODdjZjU5
MDUxYjc1NTgzNDRiNzk1MzA3ODMwM2I2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFBhZGRlZC5jcHAKQEAgLTI4LDE0ICsyOCwx
MSBAQAogCiAjaWYgRU5BQkxFKE1BVEhNTCkKIAotI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAj
aW5jbHVkZSA8Y21hdGg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNl
IE1hdGhNTE5hbWVzOwotCi1SZW5kZXJNYXRoTUxQYWRkZWQ6OlJlbmRlck1hdGhNTFBhZGRlZChF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQorUmVuZGVyTWF0aE1MUGFkZGVk
OjpSZW5kZXJNYXRoTUxQYWRkZWQoTWF0aE1MUGFkZGVkRWxlbWVudCYgZWxlbWVudCwgUmVuZGVy
U3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTFJvdyhlbGVtZW50LCBXVEZNb3ZlKHN0
eWxlKSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwv
UmVuZGVyTWF0aE1MUGFkZGVkLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTFBhZGRlZC5oCmluZGV4IDY5MGUxOGYxNDY1YzAzY2YyZDA5NmI2ZWI5Zjc4MjU0
OTc2NWIzODUuLmQxMDZjZTMyNGQxYmRlZTRhMTMxMmNkOWM3YjgzMjdlNGM4NmYzZGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MUGFkZGVk
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxQYWRk
ZWQuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRl
ck1hdGhNTFBhZGRlZCBmaW5hbCA6IHB1YmxpYyBSZW5kZXJNYXRoTUxSb3cgewogcHVibGljOgot
ICAgIFJlbmRlck1hdGhNTFBhZGRlZChFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CisgICAgUmVu
ZGVyTWF0aE1MUGFkZGVkKE1hdGhNTFBhZGRlZEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmKTsKIAog
cHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiByZW5kZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gIlJlbmRlck1hdGhNTFBhZGRlZCI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMuY3BwCmluZGV4IDEzZmJmZDQzY2Zh
NzI1MDc3NDBiOTU2Yjg0NjZjZjQyYTJiZDQ2YWIuLjVlODgzOGNlMTQ4ZDg1YWI3YjIyNzBjNWNl
MTRiZjEzNzA2ODgyYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L21hdGhtbC9SZW5kZXJNYXRoTUxTY3JpcHRzLmNwcApAQCAtMzcsMTQgKzM3LDEyIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIE1hdGhNTE5hbWVzOwotCiBzdGF0
aWMgYm9vbCBpc1ByZXNjcmlwdERlbGltaXRlcihjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlck9i
amVjdCkKIHsKICAgICByZXR1cm4gcmVuZGVyT2JqZWN0Lm5vZGUoKSAmJiByZW5kZXJPYmplY3Qu
bm9kZSgpLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjptcHJlc2NyaXB0c1RhZyk7CiB9CiAKLVJl
bmRlck1hdGhNTFNjcmlwdHM6OlJlbmRlck1hdGhNTFNjcmlwdHMoRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKK1JlbmRlck1hdGhNTFNjcmlwdHM6OlJlbmRlck1hdGhNTFNj
cmlwdHMoTWF0aE1MU2NyaXB0c0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUp
CiAgICAgOiBSZW5kZXJNYXRoTUxCbG9jayhlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKIHsKICAg
ICAvLyBEZXRlcm1pbmUgd2hhdCBraW5kIG9mIHN1Yi9zdXAgZXhwcmVzc2lvbiB3ZSBoYXZlIGJ5
IGVsZW1lbnQgbmFtZQpAQCAtNjYsOSArNjQsOCBAQCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpSZW5k
ZXJNYXRoTUxTY3JpcHRzKEVsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAg
ICAgfQogfQogCi1NYXRoTUxTY3JpcHRzRWxlbWVudCYgUmVuZGVyTWF0aE1MU2NyaXB0czo6c2Ny
aXB0c0VsZW1lbnQoKSBjb25zdAorTWF0aE1MU2NyaXB0c0VsZW1lbnQmIFJlbmRlck1hdGhNTFNj
cmlwdHM6OmVsZW1lbnQoKSBjb25zdAogewotICAgIEFTU0VSVCghaXNSZW5kZXJNYXRoTUxVbmRl
ck92ZXIoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hdGhNTFNjcmlwdHNFbGVtZW50Jj4o
bm9kZUZvck5vbkFub255bW91cygpKTsKIH0KIApAQCAtMjYwLDcgKzI1Nyw3IEBAIHZvaWQgUmVu
ZGVyTWF0aE1MU2NyaXB0czo6Z2V0U2NyaXB0TWV0cmljc0FuZExheW91dElmTmVlZGVkKFJlbmRl
ckJveCogYmFzZSwgUmVuCiAgICAgICAgIGlmICghaXNSZW5kZXJNYXRoTUxVbmRlck92ZXIoKSkg
ewogICAgICAgICAgICAgLy8gSXQgaXMgbm90IGNsZWFyIGhvdyB0byBpbnRlcnByZXQgdGhlIGRl
ZmF1bHQgc2hpZnQgYW5kIGl0IGlzIG5vdCBhdmFpbGFibGUgeWV0IGFueXdheS4KICAgICAgICAg
ICAgIC8vIEhlbmNlIHdlIGp1c3QgcGFzcyAwIGFzIHRoZSBkZWZhdWx0IHZhbHVlIHVzZWQgYnkg
dG9Vc2VyVW5pdHMuCi0gICAgICAgICAgICBMYXlvdXRVbml0IHNwZWNpZmllZE1pblN1YlNoaWZ0
ID0gdG9Vc2VyVW5pdHMoc2NyaXB0c0VsZW1lbnQoKS5zdWJzY3JpcHRTaGlmdCgpLCBzdHlsZSgp
LCAwKTsKKyAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVkTWluU3ViU2hpZnQgPSB0b1Vz
ZXJVbml0cyhlbGVtZW50KCkuc3Vic2NyaXB0U2hpZnQoKSwgc3R5bGUoKSwgMCk7CiAgICAgICAg
ICAgICBtaW5TdWJTY3JpcHRTaGlmdCA9IHN0ZDo6bWF4KG1pblN1YlNjcmlwdFNoaWZ0LCBzcGVj
aWZpZWRNaW5TdWJTaGlmdCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNjksNyArMjY2LDcgQEAg
dm9pZCBSZW5kZXJNYXRoTUxTY3JpcHRzOjpnZXRTY3JpcHRNZXRyaWNzQW5kTGF5b3V0SWZOZWVk
ZWQoUmVuZGVyQm94KiBiYXNlLCBSZW4KICAgICAgICAgaWYgKCFpc1JlbmRlck1hdGhNTFVuZGVy
T3ZlcigpKSB7CiAgICAgICAgICAgICAvLyBJdCBpcyBub3QgY2xlYXIgaG93IHRvIGludGVycHJl
dCB0aGUgZGVmYXVsdCBzaGlmdCBhbmQgaXQgaXMgbm90IGF2YWlsYWJsZSB5ZXQgYW55d2F5Lgog
ICAgICAgICAgICAgLy8gSGVuY2Ugd2UganVzdCBwYXNzIDAgYXMgdGhlIGRlZmF1bHQgdmFsdWUg
dXNlZCBieSB0b1VzZXJVbml0cy4KLSAgICAgICAgICAgIExheW91dFVuaXQgc3BlY2lmaWVkTWlu
U3VwU2hpZnQgPSB0b1VzZXJVbml0cyhzY3JpcHRzRWxlbWVudCgpLnN1cGVyc2NyaXB0U2hpZnQo
KSwgc3R5bGUoKSwgMCk7CisgICAgICAgICAgICBMYXlvdXRVbml0IHNwZWNpZmllZE1pblN1cFNo
aWZ0ID0gdG9Vc2VyVW5pdHMoZWxlbWVudCgpLnN1cGVyc2NyaXB0U2hpZnQoKSwgc3R5bGUoKSwg
MCk7CiAgICAgICAgICAgICBtaW5TdXBTY3JpcHRTaGlmdCA9IHN0ZDo6bWF4KG1pblN1cFNjcmlw
dFNoaWZ0LCBzcGVjaWZpZWRNaW5TdXBTaGlmdCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNjcmlwdHMu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5o
CmluZGV4IDU1MDNjN2FiMDQzZGFlOWU0ZmE0OWU1MzY4MTg3MTA1YjA3NjI2MDEuLjAzZDQ4N2Qy
YjA5YjllMGY2ODIyNzExMjI3NzM2MTRiNDVhNGU5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU2NyaXB0cy5oCkBAIC0zOCw3ICsz
OCw3IEBAIGNsYXNzIE1hdGhNTFNjcmlwdHNFbGVtZW50OwogLy8gUmVuZGVyIGEgYmFzZSB3aXRo
IHNjcmlwdHMuCiBjbGFzcyBSZW5kZXJNYXRoTUxTY3JpcHRzIDogcHVibGljIFJlbmRlck1hdGhN
TEJsb2NrIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKEVsZW1lbnQmLCBSZW5k
ZXJTdHlsZSYmKTsKKyAgICBSZW5kZXJNYXRoTUxTY3JpcHRzKE1hdGhNTFNjcmlwdHNFbGVtZW50
JiwgUmVuZGVyU3R5bGUmJik7CiAgICAgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNo
ZWRPcGVyYXRvcigpIGZpbmFsOwogCiBwcm90ZWN0ZWQ6CkBAIC01MSw3ICs1MSw3IEBAIHByb3Rl
Y3RlZDoKICAgICBTY3JpcHRzVHlwZSBtX3NjcmlwdFR5cGU7CiAKIHByaXZhdGU6Ci0gICAgTWF0
aE1MU2NyaXB0c0VsZW1lbnQmIHNjcmlwdHNFbGVtZW50KCkgY29uc3Q7CisgICAgTWF0aE1MU2Ny
aXB0c0VsZW1lbnQmIGVsZW1lbnQoKSBjb25zdDsKICAgICBPcHRpb25hbDxpbnQ+IGZpcnN0TGlu
ZUJhc2VsaW5lKCkgY29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRCYXNlQW5kU2NyaXB0cyhSZW5k
ZXJCb3gqJiBiYXNlLCBSZW5kZXJCb3gqJiBmaXJzdFBvc3RTY3JpcHQsIFJlbmRlckJveComIGZp
cnN0UHJlU2NyaXB0KTsKICAgICBMYXlvdXRVbml0IHNwYWNlQWZ0ZXJTY3JpcHQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3BhY2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5j
cHAKaW5kZXggNWVmODEwNjBiMzM2ZGZjOGEwYzNiNTBiMjIyYjA5YjE0OTJlNjBmYy4uNGMxZmU5
ZTY5MGUwYzJjYjFhODU2YTAwZWNjOWIzNzE2NWYzZjNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcGFjZS5jcHAKQEAgLTI5LDEz
ICsyOSwxMCBAQAogI2lmIEVOQUJMRShNQVRITUwpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKLSNpbmNsdWRlICJNYXRoTUxOYW1lcy5oIgogI2luY2x1ZGUgIlBhaW50SW5mby5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBNYXRoTUxOYW1lczsKLQog
UmVuZGVyTWF0aE1MU3BhY2U6OlJlbmRlck1hdGhNTFNwYWNlKE1hdGhNTFNwYWNlRWxlbWVudCYg
ZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHlsZSkKICAgICA6IFJlbmRlck1hdGhNTEJsb2NrKGVs
ZW1lbnQsIFdURk1vdmUoc3R5bGUpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuY3BwCmluZGV4IDViOGM2ZDQ5
NjRmMGIyMzRiYjZiNTM5MTA4NzMwZDg0YTJhY2U2YzEuLjcwOWYwZjAzZDJiZGY2ZmJlODE4MWRl
NTg2NTYyOTY0ODYzYTUzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9t
YXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5jcHAKQEAgLTMxLDIwICszMSwyMyBA
QAogI2luY2x1ZGUgIlJlbmRlck1hdGhNTFVuZGVyT3Zlci5oIgogCiAjaW5jbHVkZSAiTWF0aE1M
RWxlbWVudC5oIgotI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTWF0aE1MT3Bl
cmF0b3JEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiTWF0aE1MVW5kZXJPdmVyRWxlbWVudC5oIgog
I2luY2x1ZGUgIlJlbmRlckl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUmVuZGVyTWF0aE1MT3BlcmF0
b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgTWF0aE1MTmFt
ZXM7Ci0KLVJlbmRlck1hdGhNTFVuZGVyT3Zlcjo6UmVuZGVyTWF0aE1MVW5kZXJPdmVyKEVsZW1l
bnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCitSZW5kZXJNYXRoTUxVbmRlck92ZXI6
OlJlbmRlck1hdGhNTFVuZGVyT3ZlcihNYXRoTUxVbmRlck92ZXJFbGVtZW50JiBlbGVtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyTWF0aE1MU2NyaXB0cyhlbGVtZW50LCBX
VEZNb3ZlKHN0eWxlKSkKIHsKIH0KIAorTWF0aE1MVW5kZXJPdmVyRWxlbWVudCYgUmVuZGVyTWF0
aE1MVW5kZXJPdmVyOjplbGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
TWF0aE1MVW5kZXJPdmVyRWxlbWVudCY+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7Cit9CisKIHZv
aWQgUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpjb21wdXRlT3BlcmF0b3JzSG9yaXpvbnRhbFN0cmV0
Y2goKQogewogICAgIExheW91dFVuaXQgc3RyZXRjaFdpZHRoID0gMDsKQEAgLTE2NSwxMCArMTY4
LDEwIEBAIGJvb2wgUmVuZGVyTWF0aE1MVW5kZXJPdmVyOjpoYXNBY2NlbnQoYm9vbCBhY2NlbnRV
bmRlcikgY29uc3QKIHsKICAgICBBU1NFUlQobV9zY3JpcHRUeXBlID09IFVuZGVyT3ZlciB8fCAo
YWNjZW50VW5kZXIgJiYgbV9zY3JpcHRUeXBlID09IFVuZGVyKSB8fCAoIWFjY2VudFVuZGVyICYm
IG1fc2NyaXB0VHlwZSA9PSBPdmVyKSk7CiAKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIGF0dHJp
YnV0ZVZhbHVlID0gZWxlbWVudCgpLT5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGFj
Y2VudFVuZGVyID8gYWNjZW50dW5kZXJBdHRyIDogYWNjZW50QXR0cik7Ci0gICAgaWYgKGF0dHJp
YnV0ZVZhbHVlID09ICJ0cnVlIikKKyAgICBjb25zdCBNYXRoTUxFbGVtZW50OjpCb29sZWFuVmFs
dWUmIGF0dHJpYnV0ZVZhbHVlID0gYWNjZW50VW5kZXIgPyBlbGVtZW50KCkuYWNjZW50VW5kZXIo
KSA6IGVsZW1lbnQoKS5hY2NlbnQoKTsKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0gTWF0aE1M
RWxlbWVudDo6Qm9vbGVhblZhbHVlOjpUcnVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAoYXR0cmlidXRlVmFsdWUgPT0gImZhbHNlIikKKyAgICBpZiAoYXR0cmlidXRlVmFsdWUgPT0g
TWF0aE1MRWxlbWVudDo6Qm9vbGVhblZhbHVlOjpGYWxzZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIFJlbmRlckJveCYgc2NyaXB0ID0gYWNjZW50VW5kZXIgPyB1bmRlcigpIDogb3Zlcigp
OwogICAgIGlmICghaXM8UmVuZGVyTWF0aE1MQmxvY2s+KHNjcmlwdCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxVbmRlck92ZXIuaApp
bmRleCA4NmMxOTI3NmQ3MjBiNTIwNmNlMzEyNWM4NTVmZTI5YmJmNDVkYjY4Li4xOWEyYmM3ZWY0
NGJjZWZkYmU4MDNlNzdjN2FjOWNkZjY2ODhmMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFVuZGVyT3Zlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MVW5kZXJPdmVyLmgKQEAgLTMyLDE0
ICszMiwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1hdGhNTFVuZGVyT3Zl
ckVsZW1lbnQ7CisKIGNsYXNzIFJlbmRlck1hdGhNTFVuZGVyT3ZlciBmaW5hbCA6IHB1YmxpYyBS
ZW5kZXJNYXRoTUxTY3JpcHRzIHsKIHB1YmxpYzoKLSAgICBSZW5kZXJNYXRoTUxVbmRlck92ZXIo
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOworICAgIFJlbmRlck1hdGhNTFVuZGVyT3ZlcihNYXRo
TUxVbmRlck92ZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7CiAKIHByaXZhdGU6CiAgICAgYm9v
bCBpc1JlbmRlck1hdGhNTFNjcmlwdHMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaXNSZW5kZXJNYXRoTUxVbmRlck92ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAgICAgY29uc3QgY2hhciogcmVuZGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJSZW5kZXJNYXRoTUxVbmRlck92ZXIiOyB9CisgICAgTWF0aE1MVW5kZXJPdmVyRWxlbWVudCYg
ZWxlbWVudCgpIGNvbnN0OwogCiAgICAgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRo
cygpIGZpbmFsOwogICAgIHZvaWQgbGF5b3V0QmxvY2soYm9vbCByZWxheW91dENoaWxkcmVuLCBM
YXlvdXRVbml0IHBhZ2VMb2dpY2FsSGVpZ2h0ID0gMCkgZmluYWw7Cg==
</data>
<flag name="review"
          id="307647"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>