<?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>53232</bug_id>
          
          <creation_ts>2011-01-27 02:15:53 -0800</creation_ts>
          <short_desc>LightElement changes does not require relayout.</short_desc>
          <delta_ts>2011-02-23 12:57:31 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>55075</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>krit</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>340793</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-27 02:15:53 -0800</bug_when>
    <thetext>5x speedup on svg-filter-animation.svg (from 6.6 fps to 30 fps on a Mac mini).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340800</commentid>
    <comment_count>1</comment_count>
      <attachid>80310</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-27 02:31:56 -0800</bug_when>
    <thetext>Created attachment 80310
patch

I think LightSource.cpp should be split up into 3 files, but I think that should go to a separate patch (requires build file changes, and not the scope of this patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340802</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-27 02:35:11 -0800</bug_when>
    <thetext>Attachment 80310 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/svg/SVGFELightElement.cpp:103:  Declaration has space between type name and * in SVGFilterPrimitiveStandardAttributes *parentPrimitive  [whitespace/declaration] [3]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340804</commentid>
    <comment_count>3</comment_count>
      <attachid>80310</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-01-27 02:41:23 -0800</bug_when>
    <thetext>Comment on attachment 80310
patch

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

&gt; Source/WebCore/platform/graphics/filters/LightSource.h:86
&gt; +    virtual bool setAzimuth(float) { return false; }
&gt; +    virtual bool setElevation(float) { return false; }
&gt; +    virtual bool setX(float) { return false; }
&gt; +    virtual bool setY(float) { return false; }
&gt; +    virtual bool setZ(float) { return false; }
&gt; +    virtual bool setPointsAtX(float) { return false; }
&gt; +    virtual bool setPointsAtY(float) { return false; }
&gt; +    virtual bool setPointsAtZ(float) { return false; }
&gt; +    virtual bool setSpecularExponent(float) { return false; }
&gt; +    virtual bool setLimitingConeAngle(float) { return false; }

Do we really need all those virtual methods? Is there no way to find out wheter a LightSource is eg. a PointLightSource, then cast to it? and call the setter there, instead of having to declare a lot of virtual functions here?
The general concept of the patch seems fine, but I dislike the addition of that many virtual methods.

Please look into another approach! Thanks in advance!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340859</commentid>
    <comment_count>4</comment_count>
      <attachid>80328</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-01-27 06:31:43 -0800</bug_when>
    <thetext>Created attachment 80328
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342683</commentid>
    <comment_count>5</comment_count>
      <attachid>80328</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-01-31 11:01:17 -0800</bug_when>
    <thetext>Comment on attachment 80328
updated patch

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

r=me

&gt; Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:123
&gt; +    ASSERT_NOT_REACHED();

Is this assertion correct here? Why can&apos;t/shouldn&apos;t we pass a wrong attribute here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343067</commentid>
    <comment_count>6</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-02-01 00:37:53 -0800</bug_when>
    <thetext>Thanks for the review.

&gt; &gt; Source/WebCore/svg/SVGFEDiffuseLightingElement.cpp:123
&gt; &gt; +    ASSERT_NOT_REACHED();
&gt; 
&gt; Is this assertion correct here? Why can&apos;t/shouldn&apos;t we pass a wrong attribute here?

That is correct, since the function is (transitively) called from another function of the same Element, if it recognised the attribute. Thus wrong / unknown attributes should not be passed to this particular function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>343891</commentid>
    <comment_count>7</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-02-01 23:40:12 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/77240
Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80310</attachid>
            <date>2011-01-27 02:31:56 -0800</date>
            <delta_ts>2011-01-27 06:31:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-light-filter-update.patch</filename>
            <type>text/plain</type>
            <size>27748</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAxNWEyMjNkMmY3NTI0Y2YzY2EzOTUxNzJjNzlmYjNjYTE1NWI4OWY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUaHUsIDI3IEphbiAyMDExIDExOjI3OjQzICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gbGlnaHQtZmlsdGVyLXVwZGF0ZQoKU2lnbmVkLW9mZi1ieTogWm9sdGFuIEhlcmN6ZWcgPHpo
ZXJjemVnQGluZi51LXN6ZWdlZC5odT4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjggKysrKysrKysrKysrKwogLi4uL1dlYkNvcmUv
bWFudWFsLXRlc3RzL3N2Zy1maWx0ZXItYW5pbWF0aW9uLnN2ZyAgfCAgIDEyICstCiAuLi4vcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaCB8ICAgIDIgKwogLi4u
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwICAgICAgICAgfCAgIDI1ICsr
KystCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oICB8
ICAgMTAgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcCAg
ICAgIHwgIDEwNCArKysrKysrKysrKysrKysrKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvTGlnaHRTb3VyY2UuaCAgICAgICAgfCAgIDExICsrCiAuLi4vcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmggICB8ICAgIDMgKwogLi4uL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmggICAgfCAgICA4ICsrCiAuLi4vcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAgICAgICB8ICAgIDUgKy0KIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIHwgICA2NCArKysr
KysrKysrLS0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aCAgIHwgICAgNiArLQogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcCAg
ICAgICAgICAgfCAgIDE2ICsrLQogLi4uL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuY3BwICAgfCAgICAzICstCiAuLi4vc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oICAgICB8ICAgIDUgKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDMwNSBpbnNl
cnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ0MDk3YS4uMGJlNzc2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDExLTAxLTI3ICBab2x0YW4gSGVyY3pl
ZyAgPHpoZXJjemVnQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTGlnaHRFbGVtZW50IGNoYW5nZXMgZG9lcyBub3QgcmVxdWlyZSBy
ZWxheW91dC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUzMjMyCisKKyAgICAgICAgV2hlbiBhbiBhdHRyaWJ1dGUgb2YgYSBMaWdodEVsZW1lbnQgY2hh
bmdlcywgaXQKKyAgICAgICAgc2VuZCBhbiB1cGRhdGUgbWVzc2FnZSB0byB0aGUgbGlnaHRpbmcg
ZmlsdGVycworICAgICAgICB0byB1cGRhdGUgaXRzIGNvcnJlc3BvbmRpbmcgTGlnaHRTb3VyY2Ug
b2JqZWN0cywKKyAgICAgICAgYW5kIHJlcGFpbnQgdGhlIGZpbHRlcnMuCisKKyAgICAgICAgRXhp
c3RpbmcgZHluYW1pYy11cGRhdGUgdGVzdHMgY292ZXJzIHRoaXMgZmVhdHVyZS4KKworICAgICAg
ICA1eCBzcGVlZHVwIG9uIG1hbnVhbC10ZXN0cy9zdmctZmlsdGVyLWFuaW1hdGlvbi5zdmcKKwor
ICAgICAgICAqIG1hbnVhbC10ZXN0cy9zdmctZmlsdGVyLWFuaW1hdGlvbi5zdmc6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodGluZ0NvbG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFgp
OgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5n
dGhZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQb2ludExpZ2h0U291cmNlOjpzZXRYKToKKyAgICAgICAg
KFdlYkNvcmU6OlBvaW50TGlnaHRTb3VyY2U6OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6UG9p
bnRMaWdodFNvdXJjZTo6c2V0Wik6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6
OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRZKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNwb3RMaWdodFNvdXJjZTo6c2V0Wik6CisgICAgICAgIChXZWJDb3JlOjpT
cG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WCk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGln
aHRTb3VyY2U6OnNldFBvaW50c0F0WSk6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3Vy
Y2U6OnNldFBvaW50c0F0Wik6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnNl
dFNwZWN1bGFyRXhwb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpz
ZXRMaW1pdGluZ0NvbmVBbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW50TGlnaHRTb3Vy
Y2U6OnNldEF6aW11dGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFudExpZ2h0U291cmNlOjpz
ZXRFbGV2YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRT
b3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRBemltdXRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRFbGV2YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TGlnaHRTb3VyY2U6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3VyY2U6
OnNldFkpOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3VyY2U6OnNldFopOgorICAgICAgICAo
V2ViQ29yZTo6TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WCk6CisgICAgICAgIChXZWJDb3JlOjpM
aWdodFNvdXJjZTo6c2V0UG9pbnRzQXRZKToKKyAgICAgICAgKFdlYkNvcmU6OkxpZ2h0U291cmNl
OjpzZXRQb2ludHNBdFopOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3VyY2U6OnNldFNwZWN1
bGFyRXhwb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3VyY2U6OnNldExpbWl0aW5n
Q29uZUFuZ2xlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGln
aHRTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdo
dFNvdXJjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVpbGQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaW5kTGlnaHRFbGVt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6Zmlu
ZExpZ2h0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFTGlnaHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OmxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQpOgorCiAyMDExLTAxLTI2ICBBZGFt
IFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBjcmVhdGUgdGhlIERp
cmVjdDNEIGRldmljZSBiZWZvcmUgaXQncyBmaXJzdCBuZWVkZWQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9zdmctZmlsdGVyLWFuaW1hdGlvbi5zdmcgYi9Tb3VyY2Uv
V2ViQ29yZS9tYW51YWwtdGVzdHMvc3ZnLWZpbHRlci1hbmltYXRpb24uc3ZnCmluZGV4IDViN2M5
Y2MuLjRiY2E1ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9zdmct
ZmlsdGVyLWFuaW1hdGlvbi5zdmcKKysrIGIvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3N2
Zy1maWx0ZXItYW5pbWF0aW9uLnN2ZwpAQCAtMzQsMTYgKzM0LDE2IEBACiAKIDxkZWZzPgogPGZp
bHRlciBpZD0iZmlsdCIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiB4PSIwIiB5PSIw
IiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIj4KLSAgICA8ZmVUdXJidWxlbmNlIGlkPSJ0dXJi
IiBiYXNlRnJlcXVlbmN5PSIwLjAzIiBudW1PY3RhdmVzPSI0IiBzZWVkPSI2NyIgcmVzdWx0PSJ0
dXJiIi8+Ci0gICAgPGZlR2F1c3NpYW5CbHVyIGluPSJTb3VyY2VHcmFwaGljIiBwcmltaXRpdmVV
bml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJibHVyIiBzdGREZXZpYXRpb249IjEiIHJlc3Vs
dD0iYmx1ciIvPgorICAgIDxmZVR1cmJ1bGVuY2UgYmFzZUZyZXF1ZW5jeT0iMC4wMyIgbnVtT2N0
YXZlcz0iNCIgc2VlZD0iNjciIHJlc3VsdD0idHVyYiIvPgorICAgIDxmZUdhdXNzaWFuQmx1ciBp
bj0iU291cmNlR3JhcGhpYyIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBzdGRE
ZXZpYXRpb249IjEiIHJlc3VsdD0iYmx1ciIvPgogICAgIDxmZUNvbXBvc2l0ZSBpbj0idHVyYiIg
aW4yPSJibHVyIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9IjAuMyIgazM9IjEiIHJlc3VsdD0i
Y29tcCIvPgotICAgIDxmZURpZmZ1c2VMaWdodGluZyBpbj0iY29tcCIgcHJpbWl0aXZlVW5pdHM9
Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZGlmZiIgZGlmZnVzZUNvbnN0YW50PSIxIiBsaWdodGlu
Zy1jb2xvcj0id2hpdGUiIHN1cmZhY2VTY2FsZT0iMTAiIHJlc3VsdD0ibGlnaHQiID4KKyAgICA8
ZmVEaWZmdXNlTGlnaHRpbmcgaW49ImNvbXAiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGlu
Z0JveCIgZGlmZnVzZUNvbnN0YW50PSIxIiBsaWdodGluZy1jb2xvcj0id2hpdGUiIHN1cmZhY2VT
Y2FsZT0iMTAiIHJlc3VsdD0ibGlnaHQiID4KICAgICAgICAgPGZlU3BvdExpZ2h0IGlkPSJsaWdo
dCIgeD0iMCIgeT0iMzAwIiB6PSIyMDAiIHBvaW50c0F0WD0iLTIwMCIgcG9pbnRzQXRZPSIxMDAi
IHBvaW50c0F0Wj0iMCIgbGltaXRpbmdDb25lQW5nbGU9IjkwIiBzcGVjdWxhckV4cG9uZW50PSIy
MCIgLz4KICAgICA8L2ZlRGlmZnVzZUxpZ2h0aW5nPgotICAgIDxmZVNwZWN1bGFyTGlnaHRpbmcg
aW49ImNvbXAiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImRpZmYiIGRp
ZmZ1c2VDb25zdGFudD0iMSIgbGlnaHRpbmctY29sb3I9IiNBNjYxMDIiIHN1cmZhY2VTY2FsZT0i
MTAiIHJlc3VsdD0iYW1iaWVudCIgPgotICAgICAgICA8ZmVEaXN0YW50TGlnaHQgaWQ9ImxpZ2h0
IiBhemltdXRoPSIwIiBlbGV2YXRpb249IjkwIiAvPgorICAgIDxmZVNwZWN1bGFyTGlnaHRpbmcg
aW49ImNvbXAiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgZGlmZnVzZUNvbnN0
YW50PSIxIiBsaWdodGluZy1jb2xvcj0iI0E2NjEwMiIgc3VyZmFjZVNjYWxlPSIxMCIgcmVzdWx0
PSJhbWJpZW50IiA+CisgICAgICAgIDxmZURpc3RhbnRMaWdodCBhemltdXRoPSIwIiBlbGV2YXRp
b249IjkwIiAvPgogICAgIDwvZmVTcGVjdWxhckxpZ2h0aW5nPgotICAgICAgICA8ZmVDb21wb3Np
dGUgaW49ImxpZ2h0IiBpbjI9ImFtYmllbnQiIG9wZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iMS4y
IiBrMz0iLjgiLz4KKyAgICA8ZmVDb21wb3NpdGUgaW49ImxpZ2h0IiBpbjI9ImFtYmllbnQiIG9w
ZXJhdG9yPSJhcml0aG1ldGljIiBrMj0iMS4yIiBrMz0iLjgiLz4KIDwvZmlsdGVyPgogPC9kZWZz
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0Rpc3RhbnRMaWdodFNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2UuaAppbmRleCBkNWQ0NzRmLi5hNTE4MTgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRM
aWdodFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRGlzdGFudExpZ2h0U291cmNlLmgKQEAgLTM2LDcgKzM2LDkgQEAgcHVibGljOgogICAgIH0K
IAogICAgIGZsb2F0IGF6aW11dGgoKSBjb25zdCB7IHJldHVybiBtX2F6aW11dGg7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgc2V0QXppbXV0aChmbG9hdCk7CiAgICAgZmxvYXQgZWxldmF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9lbGV2YXRpb247IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0RWxldmF0aW9u
KGZsb2F0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0UGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0
YSYpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiwg
aW50IHgsIGludCB5LCBmbG9hdCB6KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAKaW5kZXgg
YThhODI1YS4uNWY5ZDA0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5jcHAKQEAgLTUyLDkg
KzUyLDEyIEBAIENvbG9yIEZFRGlmZnVzZUxpZ2h0aW5nOjpsaWdodGluZ0NvbG9yKCkgY29uc3QK
ICAgICByZXR1cm4gbV9saWdodGluZ0NvbG9yOwogfQogCi12b2lkIEZFRGlmZnVzZUxpZ2h0aW5n
OjpzZXRMaWdodGluZ0NvbG9yKGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yKQorYm9vbCBGRURp
ZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgbGlnaHRpbmdDb2xv
cikKIHsKKyAgICBpZiAobV9saWdodGluZ0NvbG9yID09IGxpZ2h0aW5nQ29sb3IpCisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICBtX2xpZ2h0aW5nQ29sb3IgPSBsaWdodGluZ0NvbG9yOworICAg
IHJldHVybiB0cnVlOwogfQogCiBmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6c3VyZmFjZVNjYWxl
KCkgY29uc3QgCkBAIC02Miw5ICs2NSwxMiBAQCBmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6c3Vy
ZmFjZVNjYWxlKCkgY29uc3QKICAgICByZXR1cm4gbV9zdXJmYWNlU2NhbGU7CiB9CiAKLXZvaWQg
RkVEaWZmdXNlTGlnaHRpbmc6OnNldFN1cmZhY2VTY2FsZShmbG9hdCBzdXJmYWNlU2NhbGUpCiti
b29sIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUoZmxvYXQgc3VyZmFjZVNjYWxl
KQogeworICAgIGlmIChtX3N1cmZhY2VTY2FsZSA9PSBzdXJmYWNlU2NhbGUpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBtX3N1cmZhY2VTY2FsZSA9IHN1cmZhY2VTY2FsZTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogZmxvYXQgRkVEaWZmdXNlTGlnaHRpbmc6OmRpZmZ1c2VDb25zdGFudCgp
IGNvbnN0CkBAIC03Miw5ICs3OCwxMiBAQCBmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6ZGlmZnVz
ZUNvbnN0YW50KCkgY29uc3QKICAgICByZXR1cm4gbV9kaWZmdXNlQ29uc3RhbnQ7CiB9CiAKLXZv
aWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25zdGFudChmbG9hdCBkaWZmdXNlQ29u
c3RhbnQpCitib29sIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXREaWZmdXNlQ29uc3RhbnQoZmxvYXQg
ZGlmZnVzZUNvbnN0YW50KQogeworICAgIGlmIChtX2RpZmZ1c2VDb25zdGFudCA9PSBkaWZmdXNl
Q29uc3RhbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX2RpZmZ1c2VDb25zdGFudCA9
IGRpZmZ1c2VDb25zdGFudDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZmxvYXQgRkVEaWZmdXNl
TGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhYKCkgY29uc3QKQEAgLTgyLDkgKzkxLDEyIEBAIGZs
b2F0IEZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fa2VybmVsVW5pdExlbmd0aFg7CiB9CiAKLXZvaWQgRkVEaWZmdXNlTGlnaHRpbmc6OnNl
dEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhYKQorYm9vbCBGRURpZmZ1
c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQga2VybmVsVW5pdExlbmd0aFgp
CiB7CisgICAgaWYgKG1fa2VybmVsVW5pdExlbmd0aFggPT0ga2VybmVsVW5pdExlbmd0aFgpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhYID0ga2VybmVsVW5p
dExlbmd0aFg7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGZsb2F0IEZFRGlmZnVzZUxpZ2h0aW5n
OjprZXJuZWxVbml0TGVuZ3RoWSgpIGNvbnN0CkBAIC05Miw5ICsxMDQsMTIgQEAgZmxvYXQgRkVE
aWZmdXNlTGlnaHRpbmc6Omtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3QKICAgICByZXR1cm4gbV9r
ZXJuZWxVbml0TGVuZ3RoWTsKIH0KIAotdm9pZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVs
VW5pdExlbmd0aFkoZmxvYXQga2VybmVsVW5pdExlbmd0aFkpCitib29sIEZFRGlmZnVzZUxpZ2h0
aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSkKIHsKKyAg
ICBpZiAobV9rZXJuZWxVbml0TGVuZ3RoWSA9PSBrZXJuZWxVbml0TGVuZ3RoWSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIG1fa2VybmVsVW5pdExlbmd0aFkgPSBrZXJuZWxVbml0TGVuZ3Ro
WTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogY29uc3QgTGlnaHRTb3VyY2UqIEZFRGlmZnVzZUxp
Z2h0aW5nOjpsaWdodFNvdXJjZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKaW5kZXgg
YjU4YjQ3YS4uNWYyMDY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaApAQCAtMzYsMTkgKzM2
LDE5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GRURpZmZ1c2VMaWdodGluZygpOwogCiAgICAg
Q29sb3IgbGlnaHRpbmdDb2xvcigpIGNvbnN0OwotICAgIHZvaWQgc2V0TGlnaHRpbmdDb2xvcihj
b25zdCBDb2xvciYpOworICAgIGJvb2wgc2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYpOwog
CiAgICAgZmxvYXQgc3VyZmFjZVNjYWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTdXJmYWNlU2Nh
bGUoZmxvYXQpOworICAgIGJvb2wgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKIAogICAgIGZsb2F0
IGRpZmZ1c2VDb25zdGFudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0RGlmZnVzZUNvbnN0YW50KGZs
b2F0KTsKKyAgICBib29sIHNldERpZmZ1c2VDb25zdGFudChmbG9hdCk7CiAKICAgICBmbG9hdCBr
ZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0OwotICAgIHZvaWQgc2V0S2VybmVsVW5pdExlbmd0aFgo
ZmxvYXQpOworICAgIGJvb2wgc2V0S2VybmVsVW5pdExlbmd0aFgoZmxvYXQpOwogCiAgICAgZmxv
YXQga2VybmVsVW5pdExlbmd0aFkoKSBjb25zdDsKLSAgICB2b2lkIHNldEtlcm5lbFVuaXRMZW5n
dGhZKGZsb2F0KTsKKyAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0KTsKIAogICAg
IGNvbnN0IExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSgpIGNvbnN0OwogICAgIHZvaWQgc2V0TGln
aHRTb3VyY2UoUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcAppbmRleCBk
ZTA2OTFlLi43ZGM4YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcApAQCAtNDUsNiArNDUsMzAgQEAgdm9p
ZCBQb2ludExpZ2h0U291cmNlOjp1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiBwYWlu
dGluZ0RhdGEsIGludCB4LCBpbnQKICAgICBwYWludGluZ0RhdGEubGlnaHRWZWN0b3JMZW5ndGgg
PSBwYWludGluZ0RhdGEubGlnaHRWZWN0b3IubGVuZ3RoKCk7CiB9CiAKK2Jvb2wgUG9pbnRMaWdo
dFNvdXJjZTo6c2V0WChmbG9hdCB4KQoreworICAgIGlmIChtX3Bvc2l0aW9uLngoKSA9PSB4KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wb3NpdGlvbi5zZXRYKHgpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIFBvaW50TGlnaHRTb3VyY2U6OnNldFkoZmxvYXQgeSkKK3sKKyAg
ICBpZiAobV9wb3NpdGlvbi55KCkgPT0geSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1f
cG9zaXRpb24uc2V0WSh5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQb2ludExpZ2h0
U291cmNlOjpzZXRaKGZsb2F0IHopCit7CisgICAgaWYgKG1fcG9zaXRpb24ueigpID09IHopCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3Bvc2l0aW9uLnNldFooeik7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIC8vIHNwb3QtbGlnaHQgZWRnZSBkYXJrZW5pbmcgZGVwZW5kcyBvbiBhbiBh
YnNvbHV0ZSB0cmVzaG9sZAogLy8gYWNjb3JkaW5nIHRvIHRoZSBTVkcgMS4xIFNFIGxpZ2h0IHJl
Z3Jlc3Npb24gdGVzdHMKIHN0YXRpYyBjb25zdCBmbG9hdCBhbnRpQWxpYXNUcmVzaG9sZCA9IDAu
MDE2ZjsKQEAgLTEyMCw2ICsxNDQsNzAgQEAgdm9pZCBTcG90TGlnaHRTb3VyY2U6OnVwZGF0ZVBh
aW50aW5nRGF0YShQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSwgaW50IHgsIGludAogICAgIHBh
aW50aW5nRGF0YS5jb2xvclZlY3Rvci5zZXRaKHBhaW50aW5nRGF0YS5wcml2YXRlQ29sb3JWZWN0
b3IueigpICogbGlnaHRTdHJlbmd0aCk7CiB9CiAKK2Jvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRY
KGZsb2F0IHgpCit7CisgICAgaWYgKG1fcG9zaXRpb24ueCgpID09IHgpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBtX3Bvc2l0aW9uLnNldFgoeCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Jvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRZKGZsb2F0IHkpCit7CisgICAgaWYgKG1fcG9zaXRp
b24ueSgpID09IHkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX3Bvc2l0aW9uLnNldFko
eSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRaKGZs
b2F0IHopCit7CisgICAgaWYgKG1fcG9zaXRpb24ueigpID09IHopCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBtX3Bvc2l0aW9uLnNldFooeik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jv
b2wgU3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFgoZmxvYXQgcG9pbnRzQXRYKQoreworICAg
IGlmIChtX2RpcmVjdGlvbi54KCkgPT0gcG9pbnRzQXRYKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgbV9kaXJlY3Rpb24uc2V0WChwb2ludHNBdFgpOworICAgIHJldHVybiB0cnVlOworfQor
Citib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0UG9pbnRzQXRZKGZsb2F0IHBvaW50c0F0WSkKK3sK
KyAgICBpZiAobV9kaXJlY3Rpb24ueSgpID09IHBvaW50c0F0WSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIG1fZGlyZWN0aW9uLnNldFkocG9pbnRzQXRZKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WihmbG9hdCBwb2ludHNBdFop
Cit7CisgICAgaWYgKG1fZGlyZWN0aW9uLnooKSA9PSBwb2ludHNBdFopCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICBtX2RpcmVjdGlvbi5zZXRaKHBvaW50c0F0Wik7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0
IHNwZWN1bGFyRXhwb25lbnQpCit7CisgICAgaWYgKG1fc3BlY3VsYXJFeHBvbmVudCA9PSBzcGVj
dWxhckV4cG9uZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9zcGVjdWxhckV4cG9u
ZW50ID0gc3BlY3VsYXJFeHBvbmVudDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTcG90
TGlnaHRTb3VyY2U6OnNldExpbWl0aW5nQ29uZUFuZ2xlKGZsb2F0IGxpbWl0aW5nQ29uZUFuZ2xl
KQoreworICAgIGlmIChtX2xpbWl0aW5nQ29uZUFuZ2xlID09IGxpbWl0aW5nQ29uZUFuZ2xlKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9saW1pdGluZ0NvbmVBbmdsZSA9IGxpbWl0aW5n
Q29uZUFuZ2xlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIERpc3RhbnRMaWdodFNvdXJj
ZTo6aW5pdFBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmIHBhaW50aW5nRGF0YSkKIHsKICAgICBm
bG9hdCBhemltdXRoID0gZGVnMnJhZChtX2F6aW11dGgpOwpAQCAtMTM0LDYgKzIyMiwyMiBAQCB2
b2lkIERpc3RhbnRMaWdodFNvdXJjZTo6dXBkYXRlUGFpbnRpbmdEYXRhKFBhaW50aW5nRGF0YSYs
IGludCwgaW50LCBmbG9hdCkKIHsKIH0KIAorYm9vbCBEaXN0YW50TGlnaHRTb3VyY2U6OnNldEF6
aW11dGgoZmxvYXQgYXppbXV0aCkKK3sKKyAgICBpZiAobV9hemltdXRoID09IGF6aW11dGgpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2F6aW11dGggPSBhemltdXRoOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIERpc3RhbnRMaWdodFNvdXJjZTo6c2V0RWxldmF0aW9uKGZsb2F0
IGVsZXZhdGlvbikKK3sKKyAgICBpZiAobV9lbGV2YXRpb24gPT0gZWxldmF0aW9uKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgbV9lbGV2YXRpb24gPSBlbGV2YXRpb247CisgICAgcmV0dXJu
IHRydWU7Cit9CisKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBGbG9hdFBvaW50M0QmIHApCiB7CiAgICAgdHMgPDwgIng9IiA8PCBwLngoKSA8PCAi
IHk9IiA8PCBwLnkoKSA8PCAiIHo9IiA8PCBwLnooKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuaAppbmRleCAwMTNlOTEw
Li43YWEyNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0xpZ2h0U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9MaWdodFNvdXJjZS5oCkBAIC03NCw2ICs3NCwxNyBAQCBwdWJsaWM6CiAgICAg
Ly8gc3BlY2lmaWVkICJzdXJmYWNlU2NhbGUiIGNvbnN0YW50LCB3aGljaCB0eXBlIGlzIDxudW1i
ZXI+IGluIHRoZSBTVkcgc3RhbmRhcmQKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGFpbnRpbmdE
YXRhKFBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxvYXQgeikgPSAwOwogCisgICAgdmly
dHVhbCBib29sIHNldEF6aW11dGgoZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIHNldEVsZXZhdGlvbihmbG9hdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgc2V0WChmbG9hdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0
WShmbG9hdCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0WihmbG9hdCkg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0UG9pbnRzQXRYKGZsb2F0KSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzZXRQb2ludHNBdFkoZmxvYXQpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNldFBvaW50c0F0WihmbG9hdCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0U3BlY3VsYXJFeHBvbmVudChmbG9h
dCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0TGltaXRpbmdDb25lQW5n
bGUoZmxvYXQpIHsgcmV0dXJuIGZhbHNlOyB9CisKIHByaXZhdGU6CiAgICAgTGlnaHRUeXBlIG1f
dHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5oCmluZGV4IDE2M2M4MjkuLmQ3ZjY5OTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRM
aWdodFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvUG9pbnRMaWdodFNvdXJjZS5oCkBAIC0zNiw2ICszNiw5IEBAIHB1YmxpYzoKICAgICB9CiAK
ICAgICBjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3Np
dGlvbjsgfQorICAgIHZpcnR1YWwgYm9vbCBzZXRYKGZsb2F0KTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2V0WShmbG9hdCk7CisgICAgdmlydHVhbCBib29sIHNldFooZmxvYXQpOwogCiAgICAgdmlydHVh
bCB2b2lkIGluaXRQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJik7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZVBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IHop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
cG90TGlnaHRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvU3BvdExpZ2h0U291cmNlLmgKaW5kZXggY2Q2YTYxNC4uODM3ODE0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdo
dFNvdXJjZS5oCkBAIC0zNywxMCArMzcsMTggQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0
IEZsb2F0UG9pbnQzRCYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9Cisg
ICAgdmlydHVhbCBib29sIHNldFgoZmxvYXQpOworICAgIHZpcnR1YWwgYm9vbCBzZXRZKGZsb2F0
KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0WihmbG9hdCk7CiAgICAgY29uc3QgRmxvYXRQb2ludDNE
JiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlvbjsgfQorICAgIHZpcnR1YWwg
Ym9vbCBzZXRQb2ludHNBdFgoZmxvYXQpOworICAgIHZpcnR1YWwgYm9vbCBzZXRQb2ludHNBdFko
ZmxvYXQpOworICAgIHZpcnR1YWwgYm9vbCBzZXRQb2ludHNBdFooZmxvYXQpOwogCiAgICAgZmxv
YXQgc3BlY3VsYXJFeHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVudDsg
fQorICAgIHZpcnR1YWwgYm9vbCBzZXRTcGVjdWxhckV4cG9uZW50KGZsb2F0KTsKICAgICBmbG9h
dCBsaW1pdGluZ0NvbmVBbmdsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGltaXRpbmdDb25lQW5nbGU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2V0TGltaXRpbmdDb25lQW5nbGUoZmxvYXQpOwogCiAgICAg
dmlydHVhbCB2b2lkIGluaXRQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJik7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZVBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZs
b2F0IHopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcAppbmRleCBjZTk1ODkxLi45NjUxNGFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmls
dGVyLmNwcApAQCAtMzQyLDcgKzM0MiwxMCBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVy
OjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKFJlbmRlck9iamVjdCogb2JqZWN0LCBjbwogICAg
ICAgICBGaWx0ZXJFZmZlY3QqIGVmZmVjdCA9IGJ1aWxkZXItPmVmZmVjdEJ5UmVuZGVyZXIob2Jq
ZWN0KTsKICAgICAgICAgaWYgKCFlZmZlY3QpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgcHJpbWl0dmUtPnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShlZmZlY3QsIGF0dHJpYnV0ZSk7
CisgICAgICAgIC8vIFNpbmNlIGFsbCBlZmZlY3RzIHNoYXJlcyB0aGUgc2FtZSBhdHRyaWJ1dGUg
dmFsdWUsIGFsbAorICAgICAgICAvLyBvciBub25lIG9mIHRoZW0gd2lsbCBiZSBjaGFuZ2VkLgor
ICAgICAgICBpZiAoIXByaW1pdHZlLT5zZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoZWZmZWN0LCBh
dHRyaWJ1dGUpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBidWlsZGVyLT5jbGVhclJl
c3VsdHNSZWN1cnNpdmUoZWZmZWN0KTsKIAogICAgICAgICAvLyBSZXBhaW50IHRoZSBpbWFnZSBv
biB0aGUgc2NyZWVuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAppbmRleCAxMGY3NDM5Li5lYjQwN2YxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtODQsMTcg
Kzg0LDQ0IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpwYXJzZU1hcHBlZEF0
dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLXZvaWQgU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVy
RWZmZWN0KiBlZmZlY3QsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorYm9vbCBTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqIGVmZmVjdCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgRkVE
aWZmdXNlTGlnaHRpbmcqIGRpZmZ1c2VMaWdodGluZyA9IHN0YXRpY19jYXN0PEZFRGlmZnVzZUxp
Z2h0aW5nKj4oZWZmZWN0KTsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VT
Y2FsZUF0dHIpCi0gICAgICAgIGRpZmZ1c2VMaWdodGluZy0+c2V0U3VyZmFjZVNjYWxlKHN1cmZh
Y2VTY2FsZSgpKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNv
bnN0YW50QXR0cikKLSAgICAgICAgZGlmZnVzZUxpZ2h0aW5nLT5zZXREaWZmdXNlQ29uc3RhbnQo
ZGlmZnVzZUNvbnN0YW50KCkpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjps
aWdodGluZ19jb2xvckF0dHIpIHsKKyAgICAgICAgcmV0dXJuIGRpZmZ1c2VMaWdodGluZy0+c2V0
U3VyZmFjZVNjYWxlKHN1cmZhY2VTY2FsZSgpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIpCisgICAgICAgIHJldHVybiBkaWZmdXNlTGlnaHRpbmct
PnNldERpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQoKSk7CisgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpIHsKICAgICAgICAgUmVmUHRyPFJlbmRl
clN0eWxlPiBmaWx0ZXJTdHlsZSA9IHN0eWxlRm9yUmVuZGVyZXIoKTsKLSAgICAgICAgZGlmZnVz
ZUxpZ2h0aW5nLT5zZXRMaWdodGluZ0NvbG9yKGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5saWdo
dGluZ0NvbG9yKCkpOworICAgICAgICByZXR1cm4gZGlmZnVzZUxpZ2h0aW5nLT5zZXRMaWdodGlu
Z0NvbG9yKGZpbHRlclN0eWxlLT5zdmdTdHlsZSgpLT5saWdodGluZ0NvbG9yKCkpOwogICAgIH0K
KworICAgIExpZ2h0U291cmNlKiBsaWdodFNvdXJjZSA9IGNvbnN0X2Nhc3Q8TGlnaHRTb3VyY2Uq
PihkaWZmdXNlTGlnaHRpbmctPmxpZ2h0U291cmNlKCkpOworICAgIGNvbnN0IFNWR0ZFTGlnaHRF
bGVtZW50KiBsaWdodEVsZW1lbnQgPSBmaW5kTGlnaHRFbGVtZW50KCk7CisKKyAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmF6aW11dGhBdHRyKQorICAgICAgICByZXR1cm4gbGlnaHRTb3Vy
Y2UtPnNldEF6aW11dGgobGlnaHRFbGVtZW50LT5hemltdXRoKCkpOworICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6ZWxldmF0aW9uQXR0cikKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNl
LT5zZXRFbGV2YXRpb24obGlnaHRFbGVtZW50LT5lbGV2YXRpb24oKSk7CisgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp4QXR0cikKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRY
KGxpZ2h0RWxlbWVudC0+eCgpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRy
KQorICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFkobGlnaHRFbGVtZW50LT55KCkpOwor
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ekF0dHIpCisgICAgICAgIHJldHVybiBsaWdo
dFNvdXJjZS0+c2V0WihsaWdodEVsZW1lbnQtPnooKSk7CisgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpwb2ludHNBdFhBdHRyKQorICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBv
aW50c0F0WChsaWdodEVsZW1lbnQtPnBvaW50c0F0WCgpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnBvaW50c0F0WUF0dHIpCisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0
UG9pbnRzQXRZKGxpZ2h0RWxlbWVudC0+cG9pbnRzQXRZKCkpOworICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cG9pbnRzQXRaQXR0cikKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5z
ZXRQb2ludHNBdFoobGlnaHRFbGVtZW50LT5wb2ludHNBdFooKSk7CisgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0cikKKyAgICAgICAgcmV0dXJuIGxpZ2h0
U291cmNlLT5zZXRTcGVjdWxhckV4cG9uZW50KGxpZ2h0RWxlbWVudC0+c3BlY3VsYXJFeHBvbmVu
dCgpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0
cikKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRMaW1pdGluZ0NvbmVBbmdsZShsaWdo
dEVsZW1lbnQtPmxpbWl0aW5nQ29uZUFuZ2xlKCkpOworCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
QEAgLTExMSw2ICsxMzgsMTUgQEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck4KICAgICAgICAgaW52
YWxpZGF0ZSgpOwogfQogCit2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6bGlnaHRF
bGVtZW50QXR0cmlidXRlQ2hhbmdlZChjb25zdCBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHRFbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAgICBpZiAoZmluZExpZ2h0
RWxlbWVudCgpICE9IGxpZ2h0RWxlbWVudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gVGhl
IGxpZ2h0IGVsZW1lbnQgaGFzIGRpZmZlcmVudCBhdHRyaWJ1dGUgbmFtZXMuCisgICAgcHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Cit9CisKIHZvaWQgU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3lu
Y2hyb25pemVQcm9wZXJ0eShhdHRyTmFtZSk7CkBAIC0xNDcsMjUgKzE4MywzMSBAQCBQYXNzUmVm
UHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpidWlsZChTVkdG
aWx0ZXJCdWlsZGVyKiBmaQogICAgIENvbG9yIGNvbG9yID0gZmlsdGVyU3R5bGUtPnN2Z1N0eWxl
KCktPmxpZ2h0aW5nQ29sb3IoKTsKICAgICAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZl
Y3QgPSBGRURpZmZ1c2VMaWdodGluZzo6Y3JlYXRlKGZpbHRlciwgY29sb3IsIHN1cmZhY2VTY2Fs
ZSgpLCBkaWZmdXNlQ29uc3RhbnQoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VybmVsVW5pdExlbmd0aFgoKSwga2Vy
bmVsVW5pdExlbmd0aFkoKSwgZmluZExpZ2h0cygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXJuZWxVbml0TGVuZ3Ro
WCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBmaW5kTGlnaHQoKSk7CiAgICAgZWZmZWN0LT5pbnB1
dEVmZmVjdHMoKS5hcHBlbmQoaW5wdXQxKTsKICAgICByZXR1cm4gZWZmZWN0LnJlbGVhc2UoKTsK
IH0KIAotUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
OjpmaW5kTGlnaHRzKCkgY29uc3QKK1NWR0ZFTGlnaHRFbGVtZW50KiBTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6OmZpbmRMaWdodEVsZW1lbnQoKSBjb25zdAogewogICAgIGZvciAoTm9kZSog
bm9kZSA9IGZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsK
ICAgICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZlRGlzdGFudExpZ2h0VGFn
KQogICAgICAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVQb2ludExpZ2h0
VGFnKQogICAgICAgICAgICAgfHwgbm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmVTcG90TGln
aHRUYWcpKSB7Ci0gICAgICAgICAgICBTVkdGRUxpZ2h0RWxlbWVudCogbGlnaHROb2RlID0gc3Rh
dGljX2Nhc3Q8U1ZHRkVMaWdodEVsZW1lbnQqPihub2RlKTsgCi0gICAgICAgICAgICByZXR1cm4g
bGlnaHROb2RlLT5saWdodFNvdXJjZSgpOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFNWR0ZFTGlnaHRFbGVtZW50Kj4obm9kZSk7CiAgICAgICAgIH0KICAgICB9Ci0KICAgICByZXR1
cm4gMDsKIH0KIAorUGFzc1JlZlB0cjxMaWdodFNvdXJjZT4gU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpmaW5kTGlnaHQoKSBjb25zdAoreworICAgIFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdo
dE5vZGUgPSBmaW5kTGlnaHRFbGVtZW50KCk7CisgICAgaWYgKCFsaWdodE5vZGUpCisgICAgICAg
IHJldHVybiAwOworICAgIHJldHVybiBsaWdodE5vZGUtPmxpZ2h0U291cmNlKCk7Cit9CisKIH0K
IAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKaW5kZXggZTUwMjgzMS4uZjIwNzk5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuaApAQCAtMzQs
MTIgKzM0LDEzIEBAIGNsYXNzIFNWR0NvbG9yOwogY2xhc3MgU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50IDogcHVibGljIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIGxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgU1ZHRkVMaWdodEVsZW1lbnQq
LCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKIHByaXZhdGU6CiAgICAgU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOworICAgIHZpcnR1YWwgYm9vbCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmls
dGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciop
OwpAQCAtNTQsNyArNTUsOCBAQCBwcml2YXRlOgogICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVS
KEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWCkKICAgICBERUNMQVJFX0FOSU1B
VEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwga2VybmVsVW5pdExlbmd0aFkpCiAKLSAgICBQ
YXNzUmVmUHRyPExpZ2h0U291cmNlPiBmaW5kTGlnaHRzKCkgY29uc3Q7CisgICAgU1ZHRkVMaWdo
dEVsZW1lbnQqIGZpbmRMaWdodEVsZW1lbnQoKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPExpZ2h0
U291cmNlPiBmaW5kTGlnaHQoKSBjb25zdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCmluZGV4IDhmZjhlYjEuLmY1
MTJjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNW
R1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlNWR05hbWVz
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTkxLDExICs5MiwxNiBAQCB2b2lkIFNWR0ZF
TGlnaHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRaQXR0cgog
ICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIKICAg
ICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikgewot
ICAgICAgICBpZiAoQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpKSB7Ci0gICAg
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwotICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJp
bWl0aXZlKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAg
ICAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpOworICAgICAgICBpZiAo
IXBhcmVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOworICAgICAgICBpZiAoIXJlbmRlcmVyIHx8ICFy
ZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyAqcGFy
ZW50UHJpbWl0aXZlID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzKj4ocGFyZW50KTsKKyAgICAgICAgcGFyZW50UHJpbWl0aXZlLT5saWdodEVsZW1lbnRB
dHRyaWJ1dGVDaGFuZ2VkKHRoaXMsIGF0dHJOYW1lKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5jcHAKaW5kZXggMTAzMGI1Yi4uZjMzODllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAK
QEAgLTcwLDEwICs3MCwxMSBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyKQogICAgICAgICByZXR1
cm4gU1ZHU3R5bGVkRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CiAKLXZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpCitib29sIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKQogewogICAgIC8vIFdoZW4gYWxs
IGZpbHRlcnMgc3VwcG9ydCB0aGlzIG1ldGhvZCwgaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGEgcHVy
ZSB2aXJ0dWFsIG1ldGhvZC4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlcy5oCmluZGV4IGUwMGM5YzAuLjk0OTFlMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAg
LTM2LDEzICszNiwxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBGaWx0ZXI7CiBjbGFz
cyBGaWx0ZXJFZmZlY3Q7CiBjbGFzcyBTVkdGaWx0ZXJCdWlsZGVyOworY2xhc3MgU1ZHRkVMaWdo
dEVsZW1lbnQ7CiAKIGNsYXNzIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyA6
IHB1YmxpYyBTVkdTdHlsZWRFbGVtZW50IHsKIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YW5kYXJk
QXR0cmlidXRlcyhib29sLCBGaWx0ZXJFZmZlY3QqKSBjb25zdDsKIAogICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXIqIGZp
bHRlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmls
dGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIC8vIFJldHVybnMgdHJ1ZSwg
aWYgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb2xkIG9uZS4KKyAgICB2aXJ0
dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgbGlnaHRFbGVtZW50QXR0cmlidXRlQ2hh
bmdlZChjb25zdCBTVkdGRUxpZ2h0RWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKSB7IH0K
IAogcHJvdGVjdGVkOgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="71787"
          type_id="1"
          status="-"
          setter="zimmermann"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80328</attachid>
            <date>2011-01-27 06:31:43 -0800</date>
            <delta_ts>2011-01-31 11:01:17 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-light-filter-update.patch</filename>
            <type>text/plain</type>
            <size>29437</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBkNjFjODNkZDEyOTYwM2E5ZGYwY2JiZjNiMGQ5NzdkYWY4MmVhMThmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUaHUsIDI3IEphbiAyMDExIDE1OjI5OjA1ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gbGlnaHQtZmlsdGVyLXVwZGF0ZQoKU2lnbmVkLW9mZi1ieTogWm9sdGFuIEhlcmN6ZWcgPHpo
ZXJjemVnQGluZi51LXN6ZWdlZC5odT4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNjkgKysrKysrKysKIC4uLi9XZWJDb3JlL21hbnVh
bC10ZXN0cy9zdmctZmlsdGVyLWFuaW1hdGlvbi5zdmcgIHwgICAxMiArLQogLi4uL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmggfCAgICAyICsKIC4uLi9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCAgICAgICAgIHwgICAyNSArKystCiAu
Li4vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oICB8ICAgMTAg
Ky0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmNwcCAgICAgIHwg
IDE4MCArKysrKysrKysrKysrKysrKysrKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
TGlnaHRTb3VyY2UuaCAgICAgICAgfCAgIDExICsrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Qb2ludExpZ2h0U291cmNlLmggICB8ICAgIDMgKwogLi4uL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmggICAgfCAgICA4ICsKIC4uLi9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCAgICAgIHwgICAgNSArLQogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgfCAgIDY0ICsrKysrKy0tCiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmggICB8ICAgIDYg
Ky0KIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAgICAgICAgICAgIHwg
ICAyMCArKy0KIC4uLi9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cCAgIHwgICAgMyArLQogLi4uL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaCAgICAgfCAgICAzICstCiAxNSBmaWxlcyBjaGFuZ2VkLCAzODUgaW5zZXJ0aW9ucygrKSwg
MzYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVkNDA5N2EuLjYxODcyY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMS0wMS0yNyAgWm9sdGFuIEhlcmN6ZWcgIDx6aGVyY3pl
Z0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIExpZ2h0RWxlbWVudCBjaGFuZ2VzIGRvZXMgbm90IHJlcXVpcmUgcmVsYXlvdXQuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzIzMgorCisg
ICAgICAgIFdoZW4gYW4gYXR0cmlidXRlIG9mIGEgTGlnaHRFbGVtZW50IGNoYW5nZXMsIGl0Cisg
ICAgICAgIHNlbmQgYW4gdXBkYXRlIG1lc3NhZ2UgdG8gdGhlIGxpZ2h0aW5nIGZpbHRlcnMKKyAg
ICAgICAgdG8gdXBkYXRlIGl0cyBjb3JyZXNwb25kaW5nIExpZ2h0U291cmNlIG9iamVjdHMsCisg
ICAgICAgIGFuZCByZXBhaW50IHRoZSBmaWx0ZXJzLgorCisgICAgICAgIER1cGxpY2F0ZWQgJ2lk
JyBhdHRyaWJ1dGVzIHJlbW92ZWQgZnJvbSBzdmctZmlsdGVyLWFuaW1hdGlvbi5zdmcuCisKKyAg
ICAgICAgRXhpc3RpbmcgZHluYW1pYy11cGRhdGUgdGVzdHMgY292ZXJzIHRoaXMgZmVhdHVyZS4K
KworICAgICAgICA1eCBzcGVlZHVwIG9uIG1hbnVhbC10ZXN0cy9zdmctZmlsdGVyLWFuaW1hdGlv
bi5zdmcKKworICAgICAgICAqIG1hbnVhbC10ZXN0cy9zdmctZmlsdGVyLWFuaW1hdGlvbi5zdmc6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRMaWdodGluZ0Nv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2Nh
bGUpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldERpZmZ1c2VDb25z
dGFudCk6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5p
dExlbmd0aFgpOgorICAgICAgICAoV2ViQ29yZTo6RkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5l
bFVuaXRMZW5ndGhZKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlm
ZnVzZUxpZ2h0aW5nLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdo
dFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb2ludExpZ2h0U291cmNlOjpzZXRYKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvaW50TGlnaHRTb3VyY2U6OnNldFkpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9pbnRMaWdodFNvdXJjZTo6c2V0Wik6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGln
aHRTb3VyY2U6OnNldFgpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0U291cmNlOjpzZXRZ
KToKKyAgICAgICAgKFdlYkNvcmU6OlNwb3RMaWdodFNvdXJjZTo6c2V0Wik6CisgICAgICAgIChX
ZWJDb3JlOjpTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WCk6CisgICAgICAgIChXZWJDb3Jl
OjpTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WSk6CisgICAgICAgIChXZWJDb3JlOjpTcG90
TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0Wik6CisgICAgICAgIChXZWJDb3JlOjpTcG90TGlnaHRT
b3VyY2U6OnNldFNwZWN1bGFyRXhwb25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3BvdExpZ2h0
U291cmNlOjpzZXRMaW1pdGluZ0NvbmVBbmdsZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXN0YW50
TGlnaHRTb3VyY2U6OnNldEF6aW11dGgpOgorICAgICAgICAoV2ViQ29yZTo6RGlzdGFudExpZ2h0
U291cmNlOjpzZXRFbGV2YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3VyY2U6OnNl
dEF6aW11dGgpOgorICAgICAgICAoV2ViQ29yZTo6TGlnaHRTb3VyY2U6OnNldEVsZXZhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJjZTo6c2V0WCk6CisgICAgICAgIChXZWJDb3Jl
OjpMaWdodFNvdXJjZTo6c2V0WSk6CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJjZTo6c2V0
Wik6CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJjZTo6c2V0UG9pbnRzQXRYKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxpZ2h0U291cmNlOjpzZXRQb2ludHNBdFkpOgorICAgICAgICAoV2ViQ29y
ZTo6TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0Wik6CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNv
dXJjZTo6c2V0U3BlY3VsYXJFeHBvbmVudCk6CisgICAgICAgIChXZWJDb3JlOjpMaWdodFNvdXJj
ZTo6c2V0TGltaXRpbmdDb25lQW5nbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvTGlnaHRTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1BvaW50TGlnaHRTb3VyY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L1Nwb3RMaWdodFNvdXJjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0
ZXI6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1
c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6YnVp
bGQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpmaW5k
TGlnaHRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6ZmluZExpZ2h0KToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmg6CisKIDIwMTEtMDEtMjYgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIERvbid0IGNyZWF0ZSB0aGUgRGlyZWN0M0QgZGV2aWNlIGJlZm9yZSBp
dCdzIGZpcnN0IG5lZWRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3Rz
L3N2Zy1maWx0ZXItYW5pbWF0aW9uLnN2ZyBiL1NvdXJjZS9XZWJDb3JlL21hbnVhbC10ZXN0cy9z
dmctZmlsdGVyLWFuaW1hdGlvbi5zdmcKaW5kZXggNWI3YzljYy4uNGJjYTVlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWFudWFsLXRlc3RzL3N2Zy1maWx0ZXItYW5pbWF0aW9uLnN2Zwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYW51YWwtdGVzdHMvc3ZnLWZpbHRlci1hbmltYXRpb24uc3Zn
CkBAIC0zNCwxNiArMzQsMTYgQEAKIAogPGRlZnM+CiA8ZmlsdGVyIGlkPSJmaWx0IiBmaWx0ZXJV
bml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9
IjEwMCUiPgotICAgIDxmZVR1cmJ1bGVuY2UgaWQ9InR1cmIiIGJhc2VGcmVxdWVuY3k9IjAuMDMi
IG51bU9jdGF2ZXM9IjQiIHNlZWQ9IjY3IiByZXN1bHQ9InR1cmIiLz4KLSAgICA8ZmVHYXVzc2lh
bkJsdXIgaW49IlNvdXJjZUdyYXBoaWMiIHByaW1pdGl2ZVVuaXRzPSJvYmplY3RCb3VuZGluZ0Jv
eCIgaWQ9ImJsdXIiIHN0ZERldmlhdGlvbj0iMSIgcmVzdWx0PSJibHVyIi8+CisgICAgPGZlVHVy
YnVsZW5jZSBiYXNlRnJlcXVlbmN5PSIwLjAzIiBudW1PY3RhdmVzPSI0IiBzZWVkPSI2NyIgcmVz
dWx0PSJ0dXJiIi8+CisgICAgPGZlR2F1c3NpYW5CbHVyIGluPSJTb3VyY2VHcmFwaGljIiBwcmlt
aXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHN0ZERldmlhdGlvbj0iMSIgcmVzdWx0PSJi
bHVyIi8+CiAgICAgPGZlQ29tcG9zaXRlIGluPSJ0dXJiIiBpbjI9ImJsdXIiIG9wZXJhdG9yPSJh
cml0aG1ldGljIiBrMj0iMC4zIiBrMz0iMSIgcmVzdWx0PSJjb21wIi8+Ci0gICAgPGZlRGlmZnVz
ZUxpZ2h0aW5nIGluPSJjb21wIiBwcmltaXRpdmVVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlk
PSJkaWZmIiBkaWZmdXNlQ29uc3RhbnQ9IjEiIGxpZ2h0aW5nLWNvbG9yPSJ3aGl0ZSIgc3VyZmFj
ZVNjYWxlPSIxMCIgcmVzdWx0PSJsaWdodCIgPgorICAgIDxmZURpZmZ1c2VMaWdodGluZyBpbj0i
Y29tcCIgcHJpbWl0aXZlVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBkaWZmdXNlQ29uc3RhbnQ9
IjEiIGxpZ2h0aW5nLWNvbG9yPSJ3aGl0ZSIgc3VyZmFjZVNjYWxlPSIxMCIgcmVzdWx0PSJsaWdo
dCIgPgogICAgICAgICA8ZmVTcG90TGlnaHQgaWQ9ImxpZ2h0IiB4PSIwIiB5PSIzMDAiIHo9IjIw
MCIgcG9pbnRzQXRYPSItMjAwIiBwb2ludHNBdFk9IjEwMCIgcG9pbnRzQXRaPSIwIiBsaW1pdGlu
Z0NvbmVBbmdsZT0iOTAiIHNwZWN1bGFyRXhwb25lbnQ9IjIwIiAvPgogICAgIDwvZmVEaWZmdXNl
TGlnaHRpbmc+Ci0gICAgPGZlU3BlY3VsYXJMaWdodGluZyBpbj0iY29tcCIgcHJpbWl0aXZlVW5p
dHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0iZGlmZiIgZGlmZnVzZUNvbnN0YW50PSIxIiBsaWdo
dGluZy1jb2xvcj0iI0E2NjEwMiIgc3VyZmFjZVNjYWxlPSIxMCIgcmVzdWx0PSJhbWJpZW50IiA+
Ci0gICAgICAgIDxmZURpc3RhbnRMaWdodCBpZD0ibGlnaHQiIGF6aW11dGg9IjAiIGVsZXZhdGlv
bj0iOTAiIC8+CisgICAgPGZlU3BlY3VsYXJMaWdodGluZyBpbj0iY29tcCIgcHJpbWl0aXZlVW5p
dHM9Im9iamVjdEJvdW5kaW5nQm94IiBkaWZmdXNlQ29uc3RhbnQ9IjEiIGxpZ2h0aW5nLWNvbG9y
PSIjQTY2MTAyIiBzdXJmYWNlU2NhbGU9IjEwIiByZXN1bHQ9ImFtYmllbnQiID4KKyAgICAgICAg
PGZlRGlzdGFudExpZ2h0IGF6aW11dGg9IjAiIGVsZXZhdGlvbj0iOTAiIC8+CiAgICAgPC9mZVNw
ZWN1bGFyTGlnaHRpbmc+Ci0gICAgICAgIDxmZUNvbXBvc2l0ZSBpbj0ibGlnaHQiIGluMj0iYW1i
aWVudCIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsyPSIxLjIiIGszPSIuOCIvPgorICAgIDxmZUNv
bXBvc2l0ZSBpbj0ibGlnaHQiIGluMj0iYW1iaWVudCIgb3BlcmF0b3I9ImFyaXRobWV0aWMiIGsy
PSIxLjIiIGszPSIuOCIvPgogPC9maWx0ZXI+CiA8L2RlZnM+CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Rpc3RhbnRMaWdodFNv
dXJjZS5oCmluZGV4IGQ1ZDQ3NGYuLjFlMTljNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRGlzdGFudExpZ2h0U291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9EaXN0YW50TGlnaHRTb3VyY2Uu
aApAQCAtMzYsNyArMzYsOSBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgZmxvYXQgYXppbXV0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fYXppbXV0aDsgfQorICAgIGJvb2wgc2V0QXppbXV0aChmbG9hdCk7
CiAgICAgZmxvYXQgZWxldmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9lbGV2YXRpb247IH0KKyAg
ICBib29sIHNldEVsZXZhdGlvbihmbG9hdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdFBhaW50
aW5nRGF0YShQYWludGluZ0RhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGFpbnRpbmdE
YXRhKFBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxvYXQgeik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNl
TGlnaHRpbmcuY3BwCmluZGV4IGE4YTgyNWEuLjVmOWQwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGln
aHRpbmcuY3BwCkBAIC01Miw5ICs1MiwxMiBAQCBDb2xvciBGRURpZmZ1c2VMaWdodGluZzo6bGln
aHRpbmdDb2xvcigpIGNvbnN0CiAgICAgcmV0dXJuIG1fbGlnaHRpbmdDb2xvcjsKIH0KIAotdm9p
ZCBGRURpZmZ1c2VMaWdodGluZzo6c2V0TGlnaHRpbmdDb2xvcihjb25zdCBDb2xvciYgbGlnaHRp
bmdDb2xvcikKK2Jvb2wgRkVEaWZmdXNlTGlnaHRpbmc6OnNldExpZ2h0aW5nQ29sb3IoY29uc3Qg
Q29sb3ImIGxpZ2h0aW5nQ29sb3IpCiB7CisgICAgaWYgKG1fbGlnaHRpbmdDb2xvciA9PSBsaWdo
dGluZ0NvbG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9saWdodGluZ0NvbG9yID0g
bGlnaHRpbmdDb2xvcjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogZmxvYXQgRkVEaWZmdXNlTGln
aHRpbmc6OnN1cmZhY2VTY2FsZSgpIGNvbnN0IApAQCAtNjIsOSArNjUsMTIgQEAgZmxvYXQgRkVE
aWZmdXNlTGlnaHRpbmc6OnN1cmZhY2VTY2FsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3VyZmFj
ZVNjYWxlOwogfQogCi12b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXRTdXJmYWNlU2NhbGUoZmxv
YXQgc3VyZmFjZVNjYWxlKQorYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0U3VyZmFjZVNjYWxl
KGZsb2F0IHN1cmZhY2VTY2FsZSkKIHsKKyAgICBpZiAobV9zdXJmYWNlU2NhbGUgPT0gc3VyZmFj
ZVNjYWxlKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zdXJmYWNlU2NhbGUgPSBzdXJm
YWNlU2NhbGU7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGZsb2F0IEZFRGlmZnVzZUxpZ2h0aW5n
OjpkaWZmdXNlQ29uc3RhbnQoKSBjb25zdApAQCAtNzIsOSArNzgsMTIgQEAgZmxvYXQgRkVEaWZm
dXNlTGlnaHRpbmc6OmRpZmZ1c2VDb25zdGFudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGlmZnVz
ZUNvbnN0YW50OwogfQogCi12b2lkIEZFRGlmZnVzZUxpZ2h0aW5nOjpzZXREaWZmdXNlQ29uc3Rh
bnQoZmxvYXQgZGlmZnVzZUNvbnN0YW50KQorYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlm
ZnVzZUNvbnN0YW50KGZsb2F0IGRpZmZ1c2VDb25zdGFudCkKIHsKKyAgICBpZiAobV9kaWZmdXNl
Q29uc3RhbnQgPT0gZGlmZnVzZUNvbnN0YW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
bV9kaWZmdXNlQ29uc3RhbnQgPSBkaWZmdXNlQ29uc3RhbnQ7CisgICAgcmV0dXJuIHRydWU7CiB9
CiAKIGZsb2F0IEZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWCgpIGNvbnN0CkBA
IC04Miw5ICs5MSwxMiBAQCBmbG9hdCBGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0
aFgoKSBjb25zdAogICAgIHJldHVybiBtX2tlcm5lbFVuaXRMZW5ndGhYOwogfQogCi12b2lkIEZF
RGlmZnVzZUxpZ2h0aW5nOjpzZXRLZXJuZWxVbml0TGVuZ3RoWChmbG9hdCBrZXJuZWxVbml0TGVu
Z3RoWCkKK2Jvb2wgRkVEaWZmdXNlTGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0
IGtlcm5lbFVuaXRMZW5ndGhYKQogeworICAgIGlmIChtX2tlcm5lbFVuaXRMZW5ndGhYID09IGtl
cm5lbFVuaXRMZW5ndGhYKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9rZXJuZWxVbml0
TGVuZ3RoWCA9IGtlcm5lbFVuaXRMZW5ndGhYOworICAgIHJldHVybiB0cnVlOwogfQogCiBmbG9h
dCBGRURpZmZ1c2VMaWdodGluZzo6a2VybmVsVW5pdExlbmd0aFkoKSBjb25zdApAQCAtOTIsOSAr
MTA0LDEyIEBAIGZsb2F0IEZFRGlmZnVzZUxpZ2h0aW5nOjprZXJuZWxVbml0TGVuZ3RoWSgpIGNv
bnN0CiAgICAgcmV0dXJuIG1fa2VybmVsVW5pdExlbmd0aFk7CiB9CiAKLXZvaWQgRkVEaWZmdXNl
TGlnaHRpbmc6OnNldEtlcm5lbFVuaXRMZW5ndGhZKGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKQor
Ym9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0S2VybmVsVW5pdExlbmd0aFkoZmxvYXQga2VybmVs
VW5pdExlbmd0aFkpCiB7CisgICAgaWYgKG1fa2VybmVsVW5pdExlbmd0aFkgPT0ga2VybmVsVW5p
dExlbmd0aFkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZ
ID0ga2VybmVsVW5pdExlbmd0aFk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGNvbnN0IExpZ2h0
U291cmNlKiBGRURpZmZ1c2VMaWdodGluZzo6bGlnaHRTb3VyY2UoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdo
dGluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1
c2VMaWdodGluZy5oCmluZGV4IGI1OGI0N2EuLjVmMjA2NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0
aW5nLmgKQEAgLTM2LDE5ICszNiwxOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RkVEaWZmdXNl
TGlnaHRpbmcoKTsKIAogICAgIENvbG9yIGxpZ2h0aW5nQ29sb3IoKSBjb25zdDsKLSAgICB2b2lk
IHNldExpZ2h0aW5nQ29sb3IoY29uc3QgQ29sb3ImKTsKKyAgICBib29sIHNldExpZ2h0aW5nQ29s
b3IoY29uc3QgQ29sb3ImKTsKIAogICAgIGZsb2F0IHN1cmZhY2VTY2FsZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0U3VyZmFjZVNjYWxlKGZsb2F0KTsKKyAgICBib29sIHNldFN1cmZhY2VTY2FsZShm
bG9hdCk7CiAKICAgICBmbG9hdCBkaWZmdXNlQ29uc3RhbnQoKSBjb25zdDsKLSAgICB2b2lkIHNl
dERpZmZ1c2VDb25zdGFudChmbG9hdCk7CisgICAgYm9vbCBzZXREaWZmdXNlQ29uc3RhbnQoZmxv
YXQpOwogCiAgICAgZmxvYXQga2VybmVsVW5pdExlbmd0aFgoKSBjb25zdDsKLSAgICB2b2lkIHNl
dEtlcm5lbFVuaXRMZW5ndGhYKGZsb2F0KTsKKyAgICBib29sIHNldEtlcm5lbFVuaXRMZW5ndGhY
KGZsb2F0KTsKIAogICAgIGZsb2F0IGtlcm5lbFVuaXRMZW5ndGhZKCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRLZXJuZWxVbml0TGVuZ3RoWShmbG9hdCk7CisgICAgYm9vbCBzZXRLZXJuZWxVbml0TGVu
Z3RoWShmbG9hdCk7CiAKICAgICBjb25zdCBMaWdodFNvdXJjZSogbGlnaHRTb3VyY2UoKSBjb25z
dDsKICAgICB2b2lkIHNldExpZ2h0U291cmNlKFBhc3NSZWZQdHI8TGlnaHRTb3VyY2U+KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdo
dFNvdXJjZS5jcHAKaW5kZXggZGUwNjkxZS4uZTUwZTYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5jcHAKQEAg
LTQ1LDYgKzQ1LDMwIEBAIHZvaWQgUG9pbnRMaWdodFNvdXJjZTo6dXBkYXRlUGFpbnRpbmdEYXRh
KFBhaW50aW5nRGF0YSYgcGFpbnRpbmdEYXRhLCBpbnQgeCwgaW50CiAgICAgcGFpbnRpbmdEYXRh
LmxpZ2h0VmVjdG9yTGVuZ3RoID0gcGFpbnRpbmdEYXRhLmxpZ2h0VmVjdG9yLmxlbmd0aCgpOwog
fQogCitib29sIFBvaW50TGlnaHRTb3VyY2U6OnNldFgoZmxvYXQgeCkKK3sKKyAgICBpZiAobV9w
b3NpdGlvbi54KCkgPT0geCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fcG9zaXRpb24u
c2V0WCh4KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQb2ludExpZ2h0U291cmNlOjpz
ZXRZKGZsb2F0IHkpCit7CisgICAgaWYgKG1fcG9zaXRpb24ueSgpID09IHkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICBtX3Bvc2l0aW9uLnNldFkoeSk7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK2Jvb2wgUG9pbnRMaWdodFNvdXJjZTo6c2V0WihmbG9hdCB6KQoreworICAgIGlmIChtX3Bv
c2l0aW9uLnooKSA9PSB6KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wb3NpdGlvbi5z
ZXRaKHopOworICAgIHJldHVybiB0cnVlOworfQorCiAvLyBzcG90LWxpZ2h0IGVkZ2UgZGFya2Vu
aW5nIGRlcGVuZHMgb24gYW4gYWJzb2x1dGUgdHJlc2hvbGQKIC8vIGFjY29yZGluZyB0byB0aGUg
U1ZHIDEuMSBTRSBsaWdodCByZWdyZXNzaW9uIHRlc3RzCiBzdGF0aWMgY29uc3QgZmxvYXQgYW50
aUFsaWFzVHJlc2hvbGQgPSAwLjAxNmY7CkBAIC0xMjAsNiArMTQ0LDcwIEBAIHZvaWQgU3BvdExp
Z2h0U291cmNlOjp1cGRhdGVQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiBwYWludGluZ0RhdGEs
IGludCB4LCBpbnQKICAgICBwYWludGluZ0RhdGEuY29sb3JWZWN0b3Iuc2V0WihwYWludGluZ0Rh
dGEucHJpdmF0ZUNvbG9yVmVjdG9yLnooKSAqIGxpZ2h0U3RyZW5ndGgpOwogfQogCitib29sIFNw
b3RMaWdodFNvdXJjZTo6c2V0WChmbG9hdCB4KQoreworICAgIGlmIChtX3Bvc2l0aW9uLngoKSA9
PSB4KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wb3NpdGlvbi5zZXRYKHgpOworICAg
IHJldHVybiB0cnVlOworfQorCitib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0WShmbG9hdCB5KQor
eworICAgIGlmIChtX3Bvc2l0aW9uLnkoKSA9PSB5KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgbV9wb3NpdGlvbi5zZXRZKHkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwb3RM
aWdodFNvdXJjZTo6c2V0WihmbG9hdCB6KQoreworICAgIGlmIChtX3Bvc2l0aW9uLnooKSA9PSB6
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9wb3NpdGlvbi5zZXRaKHopOworICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0UG9pbnRzQXRYKGZsb2F0
IHBvaW50c0F0WCkKK3sKKyAgICBpZiAobV9kaXJlY3Rpb24ueCgpID09IHBvaW50c0F0WCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fZGlyZWN0aW9uLnNldFgocG9pbnRzQXRYKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldFBvaW50c0F0WShm
bG9hdCBwb2ludHNBdFkpCit7CisgICAgaWYgKG1fZGlyZWN0aW9uLnkoKSA9PSBwb2ludHNBdFkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2RpcmVjdGlvbi5zZXRZKHBvaW50c0F0WSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRQb2ludHNB
dFooZmxvYXQgcG9pbnRzQXRaKQoreworICAgIGlmIChtX2RpcmVjdGlvbi56KCkgPT0gcG9pbnRz
QXRaKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9kaXJlY3Rpb24uc2V0Wihwb2ludHNB
dFopOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNwb3RMaWdodFNvdXJjZTo6c2V0U3Bl
Y3VsYXJFeHBvbmVudChmbG9hdCBzcGVjdWxhckV4cG9uZW50KQoreworICAgIGlmIChtX3NwZWN1
bGFyRXhwb25lbnQgPT0gc3BlY3VsYXJFeHBvbmVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIG1fc3BlY3VsYXJFeHBvbmVudCA9IHNwZWN1bGFyRXhwb25lbnQ7CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgU3BvdExpZ2h0U291cmNlOjpzZXRMaW1pdGluZ0NvbmVBbmdsZShmbG9h
dCBsaW1pdGluZ0NvbmVBbmdsZSkKK3sKKyAgICBpZiAobV9saW1pdGluZ0NvbmVBbmdsZSA9PSBs
aW1pdGluZ0NvbmVBbmdsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fbGltaXRpbmdD
b25lQW5nbGUgPSBsaW1pdGluZ0NvbmVBbmdsZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogdm9p
ZCBEaXN0YW50TGlnaHRTb3VyY2U6OmluaXRQYWludGluZ0RhdGEoUGFpbnRpbmdEYXRhJiBwYWlu
dGluZ0RhdGEpCiB7CiAgICAgZmxvYXQgYXppbXV0aCA9IGRlZzJyYWQobV9hemltdXRoKTsKQEAg
LTEzNCw2ICsyMjIsOTggQEAgdm9pZCBEaXN0YW50TGlnaHRTb3VyY2U6OnVwZGF0ZVBhaW50aW5n
RGF0YShQYWludGluZ0RhdGEmLCBpbnQsIGludCwgZmxvYXQpCiB7CiB9CiAKK2Jvb2wgRGlzdGFu
dExpZ2h0U291cmNlOjpzZXRBemltdXRoKGZsb2F0IGF6aW11dGgpCit7CisgICAgaWYgKG1fYXpp
bXV0aCA9PSBhemltdXRoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9hemltdXRoID0g
YXppbXV0aDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBEaXN0YW50TGlnaHRTb3VyY2U6
OnNldEVsZXZhdGlvbihmbG9hdCBlbGV2YXRpb24pCit7CisgICAgaWYgKG1fZWxldmF0aW9uID09
IGVsZXZhdGlvbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fZWxldmF0aW9uID0gZWxl
dmF0aW9uOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIExpZ2h0U291cmNlOjpzZXRBemlt
dXRoKGZsb2F0IGF6aW11dGgpCit7CisgICAgaWYgKG1fdHlwZSA9PSBMU19ESVNUQU5UKQorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RGlzdGFudExpZ2h0U291cmNlKj4odGhpcyktPnNldEF6
aW11dGgoYXppbXV0aCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIExpZ2h0U291cmNl
OjpzZXRFbGV2YXRpb24oZmxvYXQgZWxldmF0aW9uKQoreworICAgIGlmIChtX3R5cGUgPT0gTFNf
RElTVEFOVCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PERpc3RhbnRMaWdodFNvdXJjZSo+
KHRoaXMpLT5zZXRFbGV2YXRpb24oZWxldmF0aW9uKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTGlnaHRTb3VyY2U6OnNldFgoZmxvYXQgeCkKK3sKKyAgICBpZiAobV90eXBlID09IExT
X1NQT1QpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTcG90TGlnaHRTb3VyY2UqPih0aGlz
KS0+c2V0WCh4KTsKKyAgICBpZiAobV90eXBlID09IExTX1BPSU5UKQorICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UG9pbnRMaWdodFNvdXJjZSo+KHRoaXMpLT5zZXRYKHgpOworICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBMaWdodFNvdXJjZTo6c2V0WShmbG9hdCB5KQoreworICAgIGlm
IChtX3R5cGUgPT0gTFNfU1BPVCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNwb3RMaWdo
dFNvdXJjZSo+KHRoaXMpLT5zZXRZKHkpOworICAgIGlmIChtX3R5cGUgPT0gTFNfUE9JTlQpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxQb2ludExpZ2h0U291cmNlKj4odGhpcyktPnNldFko
eSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIExpZ2h0U291cmNlOjpzZXRaKGZsb2F0
IHopCit7CisgICAgaWYgKG1fdHlwZSA9PSBMU19TUE9UKQorICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3BvdExpZ2h0U291cmNlKj4odGhpcyktPnNldFooeik7CisgICAgaWYgKG1fdHlwZSA9
PSBMU19QT0lOVCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFBvaW50TGlnaHRTb3VyY2Uq
Pih0aGlzKS0+c2V0Wih6KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTGlnaHRTb3Vy
Y2U6OnNldFBvaW50c0F0WChmbG9hdCBwb2ludHNBdFgpCit7CisgICAgaWYgKG1fdHlwZSA9PSBM
U19TUE9UKQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U3BvdExpZ2h0U291cmNlKj4odGhp
cyktPnNldFBvaW50c0F0WChwb2ludHNBdFgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9v
bCBMaWdodFNvdXJjZTo6c2V0UG9pbnRzQXRZKGZsb2F0IHBvaW50c0F0WSkKK3sKKyAgICBpZiAo
bV90eXBlID09IExTX1NQT1QpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTcG90TGlnaHRT
b3VyY2UqPih0aGlzKS0+c2V0UG9pbnRzQXRZKHBvaW50c0F0WSk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitib29sIExpZ2h0U291cmNlOjpzZXRQb2ludHNBdFooZmxvYXQgcG9pbnRzQXRaKQor
eworICAgIGlmIChtX3R5cGUgPT0gTFNfU1BPVCkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFNwb3RMaWdodFNvdXJjZSo+KHRoaXMpLT5zZXRQb2ludHNBdFoocG9pbnRzQXRaKTsKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTGlnaHRTb3VyY2U6OnNldFNwZWN1bGFyRXhwb25lbnQo
ZmxvYXQgc3BlY3VsYXJFeHBvbmVudCkKK3sKKyAgICBpZiAobV90eXBlID09IExTX1NQT1QpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxTcG90TGlnaHRTb3VyY2UqPih0aGlzKS0+c2V0U3Bl
Y3VsYXJFeHBvbmVudChzcGVjdWxhckV4cG9uZW50KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K2Jvb2wgTGlnaHRTb3VyY2U6OnNldExpbWl0aW5nQ29uZUFuZ2xlKGZsb2F0IGxpbWl0aW5nQ29u
ZUFuZ2xlKQoreworICAgIGlmIChtX3R5cGUgPT0gTFNfU1BPVCkKKyAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFNwb3RMaWdodFNvdXJjZSo+KHRoaXMpLT5zZXRMaW1pdGluZ0NvbmVBbmdsZShs
aW1pdGluZ0NvbmVBbmdsZSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBzdGF0aWMgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmxvYXRQb2ludDNEJiBwKQog
ewogICAgIHRzIDw8ICJ4PSIgPDwgcC54KCkgPDwgIiB5PSIgPDwgcC55KCkgPDwgIiB6PSIgPDwg
cC56KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0xpZ2h0U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0xpZ2h0U291cmNlLmgKaW5kZXggMDEzZTkxMC4uMjRjMzE5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9MaWdodFNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvTGlnaHRTb3VyY2UuaApA
QCAtNzQsNiArNzQsMTcgQEAgcHVibGljOgogICAgIC8vIHNwZWNpZmllZCAic3VyZmFjZVNjYWxl
IiBjb25zdGFudCwgd2hpY2ggdHlwZSBpcyA8bnVtYmVyPiBpbiB0aGUgU1ZHIHN0YW5kYXJkCiAg
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBhaW50aW5nRGF0YShQYWludGluZ0RhdGEmLCBpbnQgeCwg
aW50IHksIGZsb2F0IHopID0gMDsKIAorICAgIGJvb2wgc2V0QXppbXV0aChmbG9hdCk7CisgICAg
Ym9vbCBzZXRFbGV2YXRpb24oZmxvYXQpOworICAgIGJvb2wgc2V0WChmbG9hdCk7CisgICAgYm9v
bCBzZXRZKGZsb2F0KTsKKyAgICBib29sIHNldFooZmxvYXQpOworICAgIGJvb2wgc2V0UG9pbnRz
QXRYKGZsb2F0KTsKKyAgICBib29sIHNldFBvaW50c0F0WShmbG9hdCk7CisgICAgYm9vbCBzZXRQ
b2ludHNBdFooZmxvYXQpOworICAgIGJvb2wgc2V0U3BlY3VsYXJFeHBvbmVudChmbG9hdCk7Cisg
ICAgYm9vbCBzZXRMaW1pdGluZ0NvbmVBbmdsZShmbG9hdCk7CisKIHByaXZhdGU6CiAgICAgTGln
aHRUeXBlIG1fdHlwZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5oCmluZGV4IDE2M2M4MjkuLmE5
M2JmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvUG9pbnRMaWdodFNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5oCkBAIC0zNiw2ICszNiw5IEBAIHB1YmxpYzoK
ICAgICB9CiAKICAgICBjb25zdCBGbG9hdFBvaW50M0QmIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9wb3NpdGlvbjsgfQorICAgIGJvb2wgc2V0WChmbG9hdCk7CisgICAgYm9vbCBzZXRZKGZs
b2F0KTsKKyAgICBib29sIHNldFooZmxvYXQpOwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRQYWlu
dGluZ0RhdGEoUGFpbnRpbmdEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVBhaW50aW5n
RGF0YShQYWludGluZ0RhdGEmLCBpbnQgeCwgaW50IHksIGZsb2F0IHopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291
cmNlLmgKaW5kZXggY2Q2YTYxNC4uYjRmMWI2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5oCkBAIC0z
NywxMCArMzcsMTggQEAgcHVibGljOgogICAgIH0KIAogICAgIGNvbnN0IEZsb2F0UG9pbnQzRCYg
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgYm9vbCBzZXRYKGZs
b2F0KTsKKyAgICBib29sIHNldFkoZmxvYXQpOworICAgIGJvb2wgc2V0WihmbG9hdCk7CiAgICAg
Y29uc3QgRmxvYXRQb2ludDNEJiBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RpcmVjdGlv
bjsgfQorICAgIGJvb2wgc2V0UG9pbnRzQXRYKGZsb2F0KTsKKyAgICBib29sIHNldFBvaW50c0F0
WShmbG9hdCk7CisgICAgYm9vbCBzZXRQb2ludHNBdFooZmxvYXQpOwogCiAgICAgZmxvYXQgc3Bl
Y3VsYXJFeHBvbmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY3VsYXJFeHBvbmVudDsgfQorICAg
IGJvb2wgc2V0U3BlY3VsYXJFeHBvbmVudChmbG9hdCk7CiAgICAgZmxvYXQgbGltaXRpbmdDb25l
QW5nbGUoKSBjb25zdCB7IHJldHVybiBtX2xpbWl0aW5nQ29uZUFuZ2xlOyB9CisgICAgYm9vbCBz
ZXRMaW1pdGluZ0NvbmVBbmdsZShmbG9hdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgaW5pdFBhaW50
aW5nRGF0YShQYWludGluZ0RhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUGFpbnRpbmdE
YXRhKFBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxvYXQgeik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
CmluZGV4IGNlOTU4OTEuLjk2NTE0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0zNDIsNyArMzQy
LDEwIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnByaW1pdGl2ZUF0dHJpYnV0ZUNo
YW5nZWQoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvCiAgICAgICAgIEZpbHRlckVmZmVjdCogZWZm
ZWN0ID0gYnVpbGRlci0+ZWZmZWN0QnlSZW5kZXJlcihvYmplY3QpOwogICAgICAgICBpZiAoIWVm
ZmVjdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBwcmltaXR2ZS0+c2V0RmlsdGVy
RWZmZWN0QXR0cmlidXRlKGVmZmVjdCwgYXR0cmlidXRlKTsKKyAgICAgICAgLy8gU2luY2UgYWxs
IGVmZmVjdHMgc2hhcmVzIHRoZSBzYW1lIGF0dHJpYnV0ZSB2YWx1ZSwgYWxsCisgICAgICAgIC8v
IG9yIG5vbmUgb2YgdGhlbSB3aWxsIGJlIGNoYW5nZWQuCisgICAgICAgIGlmICghcHJpbWl0dmUt
PnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShlZmZlY3QsIGF0dHJpYnV0ZSkpCisgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGJ1aWxkZXItPmNsZWFyUmVzdWx0c1JlY3Vyc2l2ZShlZmZlY3Qp
OwogCiAgICAgICAgIC8vIFJlcGFpbnQgdGhlIGltYWdlIG9uIHRoZSBzY3JlZW4uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4
IDEwZjc0MzkuLmViNDA3ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC04NCwxNyArODQsNDQgQEAgdm9pZCBTVkdGRURp
ZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0
cikKICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KIAotdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1l
bnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCitib29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBGRURpZmZ1c2VMaWdodGluZyogZGlmZnVz
ZUxpZ2h0aW5nID0gc3RhdGljX2Nhc3Q8RkVEaWZmdXNlTGlnaHRpbmcqPihlZmZlY3QpOwogICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0cikKLSAgICAgICAgZGlm
ZnVzZUxpZ2h0aW5nLT5zZXRTdXJmYWNlU2NhbGUoc3VyZmFjZVNjYWxlKCkpOwotICAgIGVsc2Ug
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyKQotICAgICAgICBk
aWZmdXNlTGlnaHRpbmctPnNldERpZmZ1c2VDb25zdGFudChkaWZmdXNlQ29uc3RhbnQoKSk7Ci0g
ICAgZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgewor
ICAgICAgICByZXR1cm4gZGlmZnVzZUxpZ2h0aW5nLT5zZXRTdXJmYWNlU2NhbGUoc3VyZmFjZVNj
YWxlKCkpOworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0
cikKKyAgICAgICAgcmV0dXJuIGRpZmZ1c2VMaWdodGluZy0+c2V0RGlmZnVzZUNvbnN0YW50KGRp
ZmZ1c2VDb25zdGFudCgpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmxpZ2h0aW5n
X2NvbG9yQXR0cikgewogICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IGZpbHRlclN0eWxlID0g
c3R5bGVGb3JSZW5kZXJlcigpOwotICAgICAgICBkaWZmdXNlTGlnaHRpbmctPnNldExpZ2h0aW5n
Q29sb3IoZmlsdGVyU3R5bGUtPnN2Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKSk7CisgICAgICAg
IHJldHVybiBkaWZmdXNlTGlnaHRpbmctPnNldExpZ2h0aW5nQ29sb3IoZmlsdGVyU3R5bGUtPnN2
Z1N0eWxlKCktPmxpZ2h0aW5nQ29sb3IoKSk7CiAgICAgfQorCisgICAgTGlnaHRTb3VyY2UqIGxp
Z2h0U291cmNlID0gY29uc3RfY2FzdDxMaWdodFNvdXJjZSo+KGRpZmZ1c2VMaWdodGluZy0+bGln
aHRTb3VyY2UoKSk7CisgICAgY29uc3QgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0RWxlbWVudCA9
IGZpbmRMaWdodEVsZW1lbnQoKTsKKworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6YXpp
bXV0aEF0dHIpCisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0QXppbXV0aChsaWdodEVs
ZW1lbnQtPmF6aW11dGgoKSk7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjplbGV2YXRp
b25BdHRyKQorICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldEVsZXZhdGlvbihsaWdodEVs
ZW1lbnQtPmVsZXZhdGlvbigpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhBdHRy
KQorICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFgobGlnaHRFbGVtZW50LT54KCkpOwor
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpCisgICAgICAgIHJldHVybiBsaWdo
dFNvdXJjZS0+c2V0WShsaWdodEVsZW1lbnQtPnkoKSk7CisgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp6QXR0cikKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRaKGxpZ2h0RWxl
bWVudC0+eigpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0WEF0dHIp
CisgICAgICAgIHJldHVybiBsaWdodFNvdXJjZS0+c2V0UG9pbnRzQXRYKGxpZ2h0RWxlbWVudC0+
cG9pbnRzQXRYKCkpOworICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRZQXR0
cikKKyAgICAgICAgcmV0dXJuIGxpZ2h0U291cmNlLT5zZXRQb2ludHNBdFkobGlnaHRFbGVtZW50
LT5wb2ludHNBdFkoKSk7CisgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdFpB
dHRyKQorICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFBvaW50c0F0WihsaWdodEVsZW1l
bnQtPnBvaW50c0F0WigpKTsKKyAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFy
RXhwb25lbnRBdHRyKQorICAgICAgICByZXR1cm4gbGlnaHRTb3VyY2UtPnNldFNwZWN1bGFyRXhw
b25lbnQobGlnaHRFbGVtZW50LT5zcGVjdWxhckV4cG9uZW50KCkpOworICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6bGltaXRpbmdDb25lQW5nbGVBdHRyKQorICAgICAgICByZXR1cm4gbGln
aHRTb3VyY2UtPnNldExpbWl0aW5nQ29uZUFuZ2xlKGxpZ2h0RWxlbWVudC0+bGltaXRpbmdDb25l
QW5nbGUoKSk7CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7
CiB9CiAKIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTExLDYgKzEzOCwxNSBAQCB2
b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTgogICAgICAgICBpbnZhbGlkYXRlKCk7CiB9CiAKK3ZvaWQg
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpsaWdodEVsZW1lbnRBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdodEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQoreworICAgIGlmIChmaW5kTGlnaHRFbGVtZW50KCkgIT0gbGlnaHRFbGVt
ZW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBUaGUgbGlnaHQgZWxlbWVudCBoYXMgZGlm
ZmVyZW50IGF0dHJpYnV0ZSBuYW1lcy4KKyAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKK30KKwogdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzeW5jaHJvbml6ZVByb3BlcnR5KGF0dHJO
YW1lKTsKQEAgLTE0NywyNSArMTgzLDMxIEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdG
RURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqIGZpCiAgICAg
Q29sb3IgY29sb3IgPSBmaWx0ZXJTdHlsZS0+c3ZnU3R5bGUoKS0+bGlnaHRpbmdDb2xvcigpOwog
ICAgIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVmZmVjdCA9IEZFRGlmZnVzZUxpZ2h0aW5n
OjpjcmVhdGUoZmlsdGVyLCBjb2xvciwgc3VyZmFjZVNjYWxlKCksIGRpZmZ1c2VDb25zdGFudCgp
LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrZXJuZWxVbml0TGVuZ3RoWCgpLCBrZXJuZWxVbml0TGVuZ3RoWSgpLCBmaW5k
TGlnaHRzKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGtlcm5lbFVuaXRMZW5ndGhYKCksIGtlcm5lbFVuaXRMZW5ndGhZ
KCksIGZpbmRMaWdodCgpKTsKICAgICBlZmZlY3QtPmlucHV0RWZmZWN0cygpLmFwcGVuZChpbnB1
dDEpOwogICAgIHJldHVybiBlZmZlY3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPExpZ2h0
U291cmNlPiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodHMoKSBjb25zdAor
U1ZHRkVMaWdodEVsZW1lbnQqIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6ZmluZExpZ2h0
RWxlbWVudCgpIGNvbnN0CiB7CiAgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBu
b2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAobm9kZS0+aGFz
VGFnTmFtZShTVkdOYW1lczo6ZmVEaXN0YW50TGlnaHRUYWcpCiAgICAgICAgICAgICB8fCBub2Rl
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVBvaW50TGlnaHRUYWcpCiAgICAgICAgICAgICB8fCBu
b2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmZVNwb3RMaWdodFRhZykpIHsKLSAgICAgICAgICAg
IFNWR0ZFTGlnaHRFbGVtZW50KiBsaWdodE5vZGUgPSBzdGF0aWNfY2FzdDxTVkdGRUxpZ2h0RWxl
bWVudCo+KG5vZGUpOyAKLSAgICAgICAgICAgIHJldHVybiBsaWdodE5vZGUtPmxpZ2h0U291cmNl
KCk7CisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRkVMaWdodEVsZW1lbnQqPihu
b2RlKTsKICAgICAgICAgfQogICAgIH0KLQogICAgIHJldHVybiAwOwogfQogCitQYXNzUmVmUHRy
PExpZ2h0U291cmNlPiBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OmZpbmRMaWdodCgpIGNv
bnN0Cit7CisgICAgU1ZHRkVMaWdodEVsZW1lbnQqIGxpZ2h0Tm9kZSA9IGZpbmRMaWdodEVsZW1l
bnQoKTsKKyAgICBpZiAoIWxpZ2h0Tm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IGxpZ2h0Tm9kZS0+bGlnaHRTb3VyY2UoKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
aAppbmRleCBlNTAyODMxLi40YmZjYmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5oCkBAIC0zNCwxMiArMzQsMTMgQEAgY2xhc3MgU1ZH
Q29sb3I7CiBjbGFzcyBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQgOiBwdWJsaWMgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICB2b2lkIGxpZ2h0RWxlbWVudEF0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgU1ZHRkVMaWdodEVsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKIHBy
aXZhdGU6CiAgICAgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRl
KEF0dHJpYnV0ZSopOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUo
RmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgYm9vbCBz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOwogICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGQo
U1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciopOwpAQCAtNTQsNyArNTUsOCBAQCBwcml2YXRlOgog
ICAgIERFQ0xBUkVfQU5JTUFURURfTlVNQkVSKEtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0
TGVuZ3RoWCkKICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihLZXJuZWxVbml0TGVuZ3RoWSwg
a2VybmVsVW5pdExlbmd0aFkpCiAKLSAgICBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBmaW5kTGln
aHRzKCkgY29uc3Q7CisgICAgU1ZHRkVMaWdodEVsZW1lbnQqIGZpbmRMaWdodEVsZW1lbnQoKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPExpZ2h0U291cmNlPiBmaW5kTGlnaHQoKSBjb25zdDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwCmluZGV4IDhmZjhlYjEuLjNhYmI3Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTGlnaHRFbGVtZW50LmNwcApAQCAtMjcsNyArMjcsOSBAQAogI2luY2x1ZGUgIkF0dHJpYnV0
ZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlLmgiCisjaW5jbHVkZSAiU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHRmlsdGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTkxLDExICs5MywyMSBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXRaQXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6c3BlY3VsYXJFeHBvbmVudEF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmxpbWl0aW5nQ29uZUFuZ2xlQXR0cikgewotICAgICAgICBpZiAoQ29udGFpbmVy
Tm9kZSogcGFyZW50ID0gcGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwotICAgICAgICAgICAgaWYgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCi0gICAgICAgICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9IHBh
cmVudE5vZGUoKTsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKKyAg
ICAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmlt
aXRpdmUoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAocGFyZW50LT5oYXNU
YWdOYW1lKFNWR05hbWVzOjpmZURpZmZ1c2VMaWdodGluZ1RhZykpIHsKKyAgICAgICAgICAgIFNW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudCogZGlmZnVzZUxpZ2h0aW5nID0gc3RhdGljX2Nhc3Q8
U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50Kj4ocGFyZW50KTsKKyAgICAgICAgICAgIGRpZmZ1
c2VMaWdodGluZy0+bGlnaHRFbGVtZW50QXR0cmlidXRlQ2hhbmdlZCh0aGlzLCBhdHRyTmFtZSk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKyAgICAgICAgLy8gSGFuZGxlciBmb3Ig
U3BlY3VsYXJMaWdodGluZyBoYXMgbm90IGltcGxlbWVudGVkIHlldC4KKyAgICAgICAgUmVuZGVy
U1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihy
ZW5kZXJlcik7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCmluZGV4IDEwMzBiNWIu
LmYzMzg5ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCkBAIC03MCwxMCArNzAsMTEgQEAgdm9p
ZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlTWFwcGVkQXR0cmli
dXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgcmV0dXJuIFNWR1N0eWxlZEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQogCi12b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCos
IGNvbnN0IFF1YWxpZmllZE5hbWUmKQorYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqLCBjb25zdCBR
dWFsaWZpZWROYW1lJikKIHsKICAgICAvLyBXaGVuIGFsbCBmaWx0ZXJzIHN1cHBvcnQgdGhpcyBt
ZXRob2QsIGl0IHdpbGwgYmUgY2hhbmdlZCB0byBhIHB1cmUgdmlydHVhbCBtZXRob2QuCiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB2b2lkIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCBlMDBjOWMw
Li44NzZhYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC00Miw3ICs0Miw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFN0YW5kYXJkQXR0cmlidXRlcyhib29sLCBGaWx0ZXJFZmZlY3QqKSBjb25z
dDsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRl
ckJ1aWxkZXIqLCBGaWx0ZXIqIGZpbHRlcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIC8vIFJldHVybnMgdHJ1ZSwgaWYgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQgZnJvbSB0
aGUgb2xkIG9uZS4KKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAogcHJvdGVjdGVkOgogICAgIFNW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLS0gCjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="71809"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>