<?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>83380</bug_id>
          
          <creation_ts>2012-04-06 10:54:57 -0700</creation_ts>
          <short_desc>Don&apos;t expose the intrinsic padding concept to the code outside rendering</short_desc>
          <delta_ts>2012-04-10 21:16:01 -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>Layout and Rendering</component>
          <version>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>dbarton</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>597480</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-06 10:54:57 -0700</bug_when>
    <thetext>Currently intrinsic padding is available through a boolean on the padding* functions. This however exposes it to the outside world (and actually CSSComputedStyleDeclaration already relies on / works around it) when only the table rendering code should know about this concept.

There has been some back and forth discussion going on about that. See for example, bug 33593 and bug 83092.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597567</commentid>
    <comment_count>1</comment_count>
      <attachid>136054</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-06 12:41:44 -0700</bug_when>
    <thetext>Created attachment 136054
Proposed clean-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597908</commentid>
    <comment_count>2</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-04-06 19:43:58 -0700</bug_when>
    <thetext>I vote to rename the computedPadding* functions to cssOnlyPadding*. In all the padding functions something is &quot;computed&quot;. I know you mean this in the sense of &quot;computed CSS&quot;, but I don&apos;t know if a casual reader would get it.

&gt; // The content area of the box (excludes padding - and intrinsic padding for table cells - and border).
// The content area of the box (excludes padding - and intrinsic padding for table cells, etc. - and border).

&gt; // This returns the CSS computed padding values.
// These return the CSS computed padding values.

&gt; // Those functions are used during layout. Table cells override
&gt; // them to include an alignment padding (called intrinsic padding). 
These functions are used during layout. Table cells and some MathML renderers override
them to include extra &quot;intrinsic padding&quot; for alignment and other uses. 

I need paddingStart and paddingEnd to be virtual also, for MathML.

===

With the above changes, I really like this patch!

For the record, here&apos;s my point of view. I&apos;d like to use intrinsic padding for MathML also, as in my recent patch for bug 82353, where intrinsic padding leaves room for a square root sign. I like to think of intrinsic padding as maybe &quot;decorated padding&quot; that&apos;s similar to a fancy kind of border, but contained in the &quot;padding&quot;. This would be very helpful for MathML. That is, when RenderBlock::layout() uses the equation border-box = content-box + padding + border (+ maybe scroll bars), I want it to allow this padding to be more than just padding from CSS styles. Then this &quot;rendering padding&quot; needs to be treated as padding by availableLogicalWidth() for example when computing space for laying out or centering children.

So RenderBoxModelObject is a base class with two kinds of padding functions. The rendering one that includes intrinsic padding is virtual, so derived classes like TableCell and some MathML classes can override it. Other classes don&apos;t know the specifics of intrinsic padding in these derived classes, but they do know there are two kinds of padding functions. Actually the one without intrinsic padding is mostly just used by computed styles, and doesn&apos;t need to be virtual, as you point out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598230</commentid>
    <comment_count>3</comment_count>
      <attachid>136054</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-09 04:35:24 -0700</bug_when>
    <thetext>Comment on attachment 136054
Proposed clean-up.

Yes seems like a better solution and less intrusive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599651</commentid>
    <comment_count>4</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-10 14:35:57 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I vote to rename the computedPadding* functions to cssOnlyPadding*. In all the padding functions something is &quot;computed&quot;. I know you mean this in the sense of &quot;computed CSS&quot;, but I don&apos;t know if a casual reader would get it.

For the record, I thought about a similar name (cssPadding*) but I thought this would be confusing as it&apos;s not the raw CSS information (ie a Length) but a computed CSS information (percent / calculated length have been resolved). computedCSSPadding* could be a good compromise here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599659</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-04-10 14:42:50 -0700</bug_when>
    <thetext>computedCSSPadding* sounds great to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599757</commentid>
    <comment_count>6</comment_count>
      <attachid>136562</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-10 16:00:56 -0700</bug_when>
    <thetext>Created attachment 136562
Updated patch against ToT, also took Dave&apos;s comment into account.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599779</commentid>
    <comment_count>7</comment_count>
      <attachid>136562</attachid>
    <who name="Dave Barton">dbarton</who>
    <bug_when>2012-04-10 16:27:49 -0700</bug_when>
    <thetext>Comment on attachment 136562
Updated patch against ToT, also took Dave&apos;s comment into account.

LGTM, FWIW.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599787</commentid>
    <comment_count>8</comment_count>
      <attachid>136562</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-04-10 16:40:37 -0700</bug_when>
    <thetext>Comment on attachment 136562
Updated patch against ToT, also took Dave&apos;s comment into account.

Seems reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600004</commentid>
    <comment_count>9</comment_count>
      <attachid>136562</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 21:15:56 -0700</bug_when>
    <thetext>Comment on attachment 136562
Updated patch against ToT, also took Dave&apos;s comment into account.

Clearing flags on attachment: 136562

Committed r113823: &lt;http://trac.webkit.org/changeset/113823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600005</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 21:16:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136054</attachid>
            <date>2012-04-06 12:41:44 -0700</date>
            <delta_ts>2012-04-10 16:00:52 -0700</delta_ts>
            <desc>Proposed clean-up.</desc>
            <filename>bug-83380-20120406124143.patch</filename>
            <type>text/plain</type>
            <size>19450</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBjNjhjNDA2YzIxZTFk
ZTVmMDRjMTQ4MWRhYTMwOWY4NTdjNTlkMC4uOWU0Y2IyNjE1YzU0MDllNjI1NGZmY2YyODliYzA0
ODkyOGNkMmQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDEyLTA0LTA2ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIERvbid0IGV4
cG9zZSB0aGUgaW50cmluc2ljIHBhZGRpbmcgY29uY2VwdCB0byB0aGUgY29kZSBvdXRzaWRlIHJl
bmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODMzODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgY29k
ZSB3b3VsZCBleHBvc2UgdGhlIGNvbmNlcHQgb2YgaW50cmluc2ljIHBhZGRpbmcgdG8gZXZlcnkK
KyAgICAgICAgb2JqZWN0IGhvbGRpbmcgYSByZW5kZXJlciB0aHJvdWdoIGFuIGVudW0gb24gdGhl
IHBhZGRpbmcqIGZ1bmN0aW9ucy4KKworICAgICAgICBUaGlzIHdhcyB2ZXJ5IGZyYWdpbGUgYXMg
b25seSB0aGUgdGFibGUgY29kZSBzaG91bGQga25vdyB0aGUgdmVyeSBleGlzdGVuY2Ugb2YKKyAg
ICAgICAgaW50cmluc2ljIHBhZGRpbmcsIHRoZSByZXN0IG9mIHRoZSBjb2RlIHNob3VsZG4ndCBo
YXZlIHRvIHNwZWNpYWwgY2FzZSBmb3IgaXQuCisgICAgICAgIFRoZXJlIGlzIG9uZSBleGNlcHRp
b246IHRoZSBnZXRDb21wdXRlZFN0eWxlIGxvZ2ljIG5lZWRzIHRoZSBvcHBvc2l0ZSB2YWx1ZQor
ICAgICAgICByZW5kZXJpbmcgbmVlZHMuIFRvIGhhbmRsZSB0aGF0LCB3ZSBtYWtlIGl0IG1vcmUg
ZXhwbGljaXQgd2hhdCByZXR1cm5zIHRoZQorICAgICAgICBjb21wdXRlZCB2YWx1ZXMgdnMgdGhl
IHJlbmRlcmluZyB2YWx1ZXMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNpemluZ0JveCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUpOgor
ICAgICAgICBVcGRhdGVkIHRob3NlIGZ1bmN0aW9ucyB0byB1c2UgdGhlIG5ldyBjb21wdXRlZCog
ZnVuY3Rpb25zIGJlbG93LgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQm94Ojpjb21wdXRlZENvbnRlbnRCb3hSZWN0KToKKyAgICAg
ICAgVGhpcyBpcyB0aGUgY29tcHV0ZWQgY29udGVudCBib3guIEl0IGluY2x1ZGVzIHRoZSBpbnRy
aW5zaWMgcGFkZGluZy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRQ
YWRkaW5nVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21w
dXRlZFBhZGRpbmdCb3R0b20pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmNvbXB1dGVkUGFkZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9k
ZWxPYmplY3Q6OmNvbXB1dGVkUGFkZGluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZFBhZGRpbmdCZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkUGFkZGluZ0FmdGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZFBhZGRpbmdTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRQYWRkaW5nRW5k
KToKKyAgICAgICAgUmVuYW1lZCBmcm9tIHBhZGRpbmcqIGFzIHRoZXkgcmV0dXJuZWQgdGhlIENT
UyBjb21wdXRlZCB2YWx1ZXMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxP
YmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2JqZWN0KToKKyAgICAgICAgS2lsbGVk
IHRoZSBlbnVtIHBhZGRpbmdPcHRpb25zIQorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFkZGluZ1RvcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFkZGluZ0JvdHRvbSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6cGFkZGluZ0xlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhZGRpbmdSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFkZGluZ0JlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFkZGluZ0FmdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWRkaW5nU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhZGRpbmdFbmQpOgorICAgICAgICBBbGwgcGFkZGluZyogZnVuY3Rpb25zIGNhbGwgdGhl
IGNvbXB1dGVkUGFkZGluZyogb25lcyBhYm92ZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWRk
aW5nVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFkZGluZ0JvdHRv
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdMZWZ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFkZGluZ1JpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFkZGluZ0JlZm9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdBZnRlcik6CisgICAgICAgIFVwZGF0ZWQgYWZ0
ZXIgdGhlIHJlbmFtaW5nLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5o
OgorICAgICAgICBVcGRhdGVkIHRoZSBmdW5jdGlvbnMgc2lnbmF0dXJlIGFuZCBkZWNvcmF0ZWQg
dGhlbSB3aXRoIE9WRVJSSURFLgorCiAyMDEyLTA0LTA2ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2Jl
cnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW0d0a10gVW5za2lwIHRoZSB2aWRlbyB0cmFjayB0
ZXN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uLmNwcAppbmRleCA2ZjFmYWNlYTNjMTlhNDE4NWFiZmZkN2Y4ZjNlNTVjOWI5OTJhOWM1Li4x
ZTcyNDM3MjBkYjJiNmY5ZTI5ZDg5NDdkYTJiNGZmMTFjMTY1M2U4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtNjcwLDEz
ICs2NzAsNyBAQCBzdGF0aWMgTGF5b3V0UmVjdCBzaXppbmdCb3goUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAogICAgIFJlbmRlckJveCogYm94
ID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpOwotICAgIGlmIChib3gtPnN0eWxlKCktPmJveFNpemlu
ZygpID09IEJPUkRFUl9CT1gpCi0gICAgICAgIHJldHVybiBib3gtPmJvcmRlckJveFJlY3QoKTsK
LSAgICBMYXlvdXRVbml0IGNzc1BhZGRpbmdMZWZ0ID0gYm94LT5wYWRkaW5nTGVmdChFeGNsdWRl
SW50cmluc2ljUGFkZGluZyk7Ci0gICAgTGF5b3V0VW5pdCBjc3NQYWRkaW5nVG9wID0gYm94LT5w
YWRkaW5nVG9wKEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKTsKLSAgICBMYXlvdXRVbml0IGNzc1dp
ZHRoID0gYm94LT5jbGllbnRXaWR0aCgpIC0gY3NzUGFkZGluZ0xlZnQgLSBib3gtPnBhZGRpbmdS
aWdodChFeGNsdWRlSW50cmluc2ljUGFkZGluZyk7Ci0gICAgTGF5b3V0VW5pdCBjc3NIZWlnaHQg
PSBib3gtPmNsaWVudEhlaWdodCgpIC0gY3NzUGFkZGluZ1RvcCAtIGJveC0+cGFkZGluZ0JvdHRv
bShFeGNsdWRlSW50cmluc2ljUGFkZGluZyk7Ci0gICAgcmV0dXJuIExheW91dFJlY3QoYm94LT5i
b3JkZXJMZWZ0KCkgKyBjc3NQYWRkaW5nTGVmdCwgYm94LT5ib3JkZXJUb3AoKSArIGNzc1BhZGRp
bmdUb3AsIGNzc1dpZHRoLCBjc3NIZWlnaHQpOworICAgIHJldHVybiBib3gtPnN0eWxlKCktPmJv
eFNpemluZygpID09IEJPUkRFUl9CT1ggPyBib3gtPmJvcmRlckJveFJlY3QoKSA6IGJveC0+Y29t
cHV0ZWRDb250ZW50Qm94UmVjdCgpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaGFzQ29tcG9z
aXRlZExheWVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCkBAIC0xODcwLDE5ICsxODY0LDE5IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LT5jcmVhdGVWYWx1ZShzdHlsZS0+b3ZlcmZsb3dZKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5UGFkZGluZ1RvcDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNC
b3goKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1Jl
bmRlckJveChyZW5kZXJlciktPnBhZGRpbmdUb3AoRXhjbHVkZUludHJpbnNpY1BhZGRpbmcpLCBz
dHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJveChyZW5kZXJlciktPmNvbXB1dGVkUGFkZGluZ1Rv
cCgpLCBzdHlsZS5nZXQoKSwgY3NzVmFsdWVQb29sKTsKICAgICAgICAgICAgIHJldHVybiB6b29t
QWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wYWRkaW5nVG9wKCksIHN0eWxlLmdl
dCgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0
OgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJlbmRl
cmVyKS0+cGFkZGluZ1JpZ2h0KEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSwgc3R5bGUuZ2V0KCks
IGNzc1ZhbHVlUG9vbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVs
VmFsdWUodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb21wdXRlZFBhZGRpbmdSaWdodCgpLCBzdHls
ZS5nZXQoKSwgY3NzVmFsdWVQb29sKTsKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQ
aXhlbFZhbHVlRm9yTGVuZ3RoKHN0eWxlLT5wYWRkaW5nUmlnaHQoKSwgc3R5bGUuZ2V0KCksIGNz
c1ZhbHVlUG9vbCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9tOgogICAg
ICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICAgICAg
ICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+
cGFkZGluZ0JvdHRvbShFeGNsdWRlSW50cmluc2ljUGFkZGluZyksIHN0eWxlLmdldCgpLCBjc3NW
YWx1ZVBvb2wpOworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y29tcHV0ZWRQYWRkaW5nQm90dG9tKCksIHN0eWxlLmdl
dCgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVs
VmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBhZGRpbmdCb3R0b20oKSwgc3R5bGUuZ2V0KCksIGNzc1Zh
bHVlUG9vbCk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nTGVmdDoKICAgICAgICAg
ICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnBhZGRp
bmdMZWZ0KEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSwgc3R5bGUuZ2V0KCksIGNzc1ZhbHVlUG9v
bCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodG9SZW5k
ZXJCb3gocmVuZGVyZXIpLT5jb21wdXRlZFBhZGRpbmdMZWZ0KCksIHN0eWxlLmdldCgpLCBjc3NW
YWx1ZVBvb2wpOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JM
ZW5ndGgoc3R5bGUtPnBhZGRpbmdMZWZ0KCksIHN0eWxlLmdldCgpLCBjc3NWYWx1ZVBvb2wpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6CiAgICAgICAgICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLT5jcmVhdGVWYWx1ZShzdHlsZS0+cGFnZUJyZWFrQWZ0ZXIoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNDFkOWMyYTA5MzNhMDNkNDY3NTk2
YTBkZWE1OTg2ODlhMzEyMjA3NC4uOGQwMjllODFiNWQ1YjA5ZDBhNzkzY2VhZjM3NGFjZmZjZDhk
MzE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMTM2LDEzICsxMzYs
MTcgQEAgcHVibGljOgogICAgIEludFJlY3QgYm9yZGVyQm94UmVjdCgpIGNvbnN0IHsgcmV0dXJu
IEludFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZShtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRXaWR0
aCgpLCBtX2ZyYW1lUmVjdC5waXhlbFNuYXBwZWRIZWlnaHQoKSkpOyB9CiAgICAgdmlydHVhbCBJ
bnRSZWN0IGJvcmRlckJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyQm94UmVjdCgp
OyB9IAogCi0gICAgLy8gVGhlIGNvbnRlbnQgYXJlYSBvZiB0aGUgYm94IChleGNsdWRlcyBwYWRk
aW5nIGFuZCBib3JkZXIpLgorICAgIC8vIFRoZSBjb250ZW50IGFyZWEgb2YgdGhlIGJveCAoZXhj
bHVkZXMgcGFkZGluZyAtIGFuZCBpbnRyaW5zaWMgcGFkZGluZyBmb3IgdGFibGUgY2VsbHMgLSBh
bmQgYm9yZGVyKS4KICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1
cm4gTGF5b3V0UmVjdChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSAr
IHBhZGRpbmdUb3AoKSwgY29udGVudFdpZHRoKCksIGNvbnRlbnRIZWlnaHQoKSk7IH0KICAgICAv
LyBUaGUgY29udGVudCBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBJZ25vcmVzIHRyYW5zZm9ybXMu
CiAgICAgSW50UmVjdCBhYnNvbHV0ZUNvbnRlbnRCb3goKSBjb25zdDsKICAgICAvLyBUaGUgY29u
dGVudCBib3ggY29udmVydGVkIHRvIGFic29sdXRlIGNvb3JkcyAodGFraW5nIHRyYW5zZm9ybXMg
aW50byBhY2NvdW50KS4KICAgICBGbG9hdFF1YWQgYWJzb2x1dGVDb250ZW50UXVhZCgpIGNvbnN0
OwogCisgICAgLy8gVGhpcyByZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBjb250ZW50IGFyZWEgb2Yg
dGhlIGJveCAoZXhjbHVkaW5nIHBhZGRpbmcgYW5kIGJvcmRlcikuIFRoZSBvbmx5IGRpZmZlcmVu
Y2Ugd2l0aCBjb250ZW50Qm94UmVjdCBpcyB0aGF0IGNvbXB1dGVkQ29udGVudEJveFJlY3QKKyAg
ICAvLyBkb2VzIGluY2x1ZGUgdGhlIGludHJpbnNpYyBwYWRkaW5nIGluIHRoZSBjb250ZW50IGJv
eCBhcyB0aGlzIGlzIHdoYXQgZ2V0Q29tcHV0ZWRTdHlsZSBleHBlY3RzLgorICAgIExheW91dFJl
Y3QgY29tcHV0ZWRDb250ZW50Qm94UmVjdCgpIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoYm9y
ZGVyTGVmdCgpICsgY29tcHV0ZWRQYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIGNvbXB1dGVk
UGFkZGluZ1RvcCgpLCBjbGllbnRXaWR0aCgpIC0gY29tcHV0ZWRQYWRkaW5nTGVmdCgpIC0gY29t
cHV0ZWRQYWRkaW5nUmlnaHQoKSwgY2xpZW50SGVpZ2h0KCkgLSBjb21wdXRlZFBhZGRpbmdUb3Ao
KSAtIGNvbXB1dGVkUGFkZGluZ0JvdHRvbSgpKTsgfQorCiAgICAgLy8gQm91bmRzIG9mIHRoZSBv
dXRsaW5lIGJveCBpbiBhYnNvbHV0ZSBjb29yZHMuIFJlc3BlY3RzIHRyYW5zZm9ybXMKICAgICB2
aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxP
YmplY3QqIC8qcmVwYWludENvbnRhaW5lciovLCBMYXlvdXRQb2ludCogY2FjaGVkT2Zmc2V0VG9S
ZXBhaW50Q29udGFpbmVyKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNSaW5nUmVj
dHMoVmVjdG9yPEludFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDJlNTVlN2Y3
NDkyNDY0NDk3N2M2MzNlZTdlNmViYTRhNWI5YWNhZTQuLmJjYWE4NThjZGUxOTY4YWNiMDZjYTdj
MTNhMWExN2QwNGIyMDdlMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNTU1LDcgKzU1NSw3IEBAIGludCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGl4ZWxTbmFwcGVkT2Zmc2V0SGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4g
c25hcFNpemVUb1BpeGVsKG9mZnNldEhlaWdodCgpLCBvZmZzZXRUb3AoKSk7CiB9CiAKLUxheW91
dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdUb3AoUGFkZGluZ09wdGlvbnMpIGNv
bnN0CitMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZFBhZGRpbmdUb3Ao
KSBjb25zdAogewogICAgIExheW91dFVuaXQgdyA9IDA7CiAgICAgUmVuZGVyVmlldyogcmVuZGVy
VmlldyA9IDA7CkBAIC01NjcsNyArNTY3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFkZGluZ1RvcChQYWRkaW5nT3B0aW9ucykgY29uc3QKICAgICByZXR1cm4gbWluaW11
bVZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIHcsIHJlbmRlclZpZXcpOwogfQogCi1MYXlvdXRVbml0
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQm90dG9tKFBhZGRpbmdPcHRpb25zKSBjb25z
dAorTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRQYWRkaW5nQm90dG9t
KCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHcgPSAwOwogICAgIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcgPSAwOwpAQCAtNTc5LDcgKzU3OSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhZGRpbmdCb3R0b20oUGFkZGluZ09wdGlvbnMpIGNvbnN0CiAgICAgcmV0dXJuIG1p
bmltdW1WYWx1ZUZvckxlbmd0aChwYWRkaW5nLCB3LCByZW5kZXJWaWV3KTsKIH0KIAotTGF5b3V0
VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0xlZnQoUGFkZGluZ09wdGlvbnMpIGNv
bnN0CitMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZFBhZGRpbmdMZWZ0
KCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHcgPSAwOwogICAgIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcgPSAwOwpAQCAtNTkxLDcgKzU5MSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhZGRpbmdMZWZ0KFBhZGRpbmdPcHRpb25zKSBjb25zdAogICAgIHJldHVybiBtaW5p
bXVtVmFsdWVGb3JMZW5ndGgocGFkZGluZywgdywgcmVuZGVyVmlldyk7CiB9CiAKLUxheW91dFVu
aXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdSaWdodChQYWRkaW5nT3B0aW9ucykgY29u
c3QKK0xheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkUGFkZGluZ1JpZ2h0
KCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHcgPSAwOwogICAgIFJlbmRlclZpZXcqIHJlbmRl
clZpZXcgPSAwOwpAQCAtNjAzLDcgKzYwMyw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnBhZGRpbmdSaWdodChQYWRkaW5nT3B0aW9ucykgY29uc3QKICAgICByZXR1cm4gbWlu
aW11bVZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIHcsIHJlbmRlclZpZXcpOwogfQogCi1MYXlvdXRV
bml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQmVmb3JlKFBhZGRpbmdPcHRpb25zKSBj
b25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRQYWRkaW5nQmVm
b3JlKCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHcgPSAwOwogICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSAwOwpAQCAtNjE1LDcgKzYxNSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9k
ZWxPYmplY3Q6OnBhZGRpbmdCZWZvcmUoUGFkZGluZ09wdGlvbnMpIGNvbnN0CiAgICAgcmV0dXJu
IG1pbmltdW1WYWx1ZUZvckxlbmd0aChwYWRkaW5nLCB3LCByZW5kZXJWaWV3KTsKIH0KIAotTGF5
b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0FmdGVyKFBhZGRpbmdPcHRpb25z
KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRQYWRkaW5n
QWZ0ZXIoKSBjb25zdAogewogICAgIExheW91dFVuaXQgdyA9IDA7CiAgICAgUmVuZGVyVmlldyog
cmVuZGVyVmlldyA9IDA7CkBAIC02MjcsNyArNjI3LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6cGFkZGluZ0FmdGVyKFBhZGRpbmdPcHRpb25zKSBjb25zdAogICAgIHJldHVy
biBtaW5pbXVtVmFsdWVGb3JMZW5ndGgocGFkZGluZywgdywgcmVuZGVyVmlldyk7CiB9CiAKLUxh
eW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdTdGFydChQYWRkaW5nT3B0aW9u
cykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkUGFkZGlu
Z1N0YXJ0KCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHcgPSAwOwogICAgIFJlbmRlclZpZXcq
IHJlbmRlclZpZXcgPSAwOwpAQCAtNjM5LDcgKzYzOSw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhZGRpbmdTdGFydChQYWRkaW5nT3B0aW9ucykgY29uc3QKICAgICByZXR1
cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHBhZGRpbmcsIHcsIHJlbmRlclZpZXcpOwogfQogCi1M
YXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nRW5kKFBhZGRpbmdPcHRpb25z
KSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRQYWRkaW5n
RW5kKCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHcgPSAwOwogICAgIFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAppbmRleCA3YjQzZjcxZDk0YjVlY2VjZjUxMjBmZjU4NDUxNTU2M2RjNzA3NjU2
Li45MDEyNGQ1YTBkMWFkYzk5YjhiMjExZjE0ZjdiNmRmNjViMGY0MDRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtNDAsOCArNDAs
NiBAQCBlbnVtIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSB7CiAgICAgQmFja2dyb3VuZEJsZWVk
VXNlVHJhbnNwYXJlbmN5TGF5ZXIKIH07CiAKLWVudW0gUGFkZGluZ09wdGlvbnMgeyBJbmNsdWRl
SW50cmluc2ljUGFkZGluZywgRXhjbHVkZUludHJpbnNpY1BhZGRpbmcgfTsKLQogLy8gVGhpcyBj
bGFzcyBpcyB0aGUgYmFzZSBmb3IgYWxsIG9iamVjdHMgdGhhdCBhZGhlcmUgdG8gdGhlIENTUyBi
b3ggbW9kZWwgYXMgZGVzY3JpYmVkCiAvLyBhdCBodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9i
b3guaHRtbAogCkBAIC03OSwxNSArNzcsMjcgQEAgcHVibGljOgogICAgIC8vIFRoaXMgd2lsbCB3
b3JrIG9uIGlubGluZXMgdG8gcmV0dXJuIHRoZSBib3VuZGluZyBib3ggb2YgYWxsIG9mIHRoZSBs
aW5lcycgYm9yZGVyIGJveGVzLgogICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJCb3VuZGluZ0Jv
eCgpIGNvbnN0ID0gMDsKIAotICAgIC8vIFZpcnR1YWwgc2luY2UgdGFibGUgY2VsbHMgb3ZlcnJp
ZGUKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1RvcChQYWRkaW5nT3B0aW9ucyA9IElu
Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFk
ZGluZ0JvdHRvbShQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25z
dDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0xlZnQoUGFkZGluZ09wdGlvbnMgPSBJ
bmNsdWRlSW50cmluc2ljUGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBh
ZGRpbmdSaWdodChQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25z
dDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0JlZm9yZShQYWRkaW5nT3B0aW9ucyA9
IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQg
cGFkZGluZ0FmdGVyKFBhZGRpbmdPcHRpb25zID0gSW5jbHVkZUludHJpbnNpY1BhZGRpbmcpIGNv
bnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nU3RhcnQoUGFkZGluZ09wdGlvbnMg
PSBJbmNsdWRlSW50cmluc2ljUGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0
IHBhZGRpbmdFbmQoUGFkZGluZ09wdGlvbnMgPSBJbmNsdWRlSW50cmluc2ljUGFkZGluZykgY29u
c3Q7CisgICAgLy8gVGhpcyByZXR1cm5zIHRoZSBDU1MgY29tcHV0ZWQgcGFkZGluZyB2YWx1ZXMu
CisgICAgTGF5b3V0VW5pdCBjb21wdXRlZFBhZGRpbmdUb3AoKSBjb25zdDsKKyAgICBMYXlvdXRV
bml0IGNvbXB1dGVkUGFkZGluZ0JvdHRvbSgpIGNvbnN0OworICAgIExheW91dFVuaXQgY29tcHV0
ZWRQYWRkaW5nTGVmdCgpIGNvbnN0OworICAgIExheW91dFVuaXQgY29tcHV0ZWRQYWRkaW5nUmln
aHQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVkUGFkZGluZ0JlZm9yZSgpIGNvbnN0
OworICAgIExheW91dFVuaXQgY29tcHV0ZWRQYWRkaW5nQWZ0ZXIoKSBjb25zdDsKKyAgICBMYXlv
dXRVbml0IGNvbXB1dGVkUGFkZGluZ1N0YXJ0KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb21w
dXRlZFBhZGRpbmdFbmQoKSBjb25zdDsKKworICAgIC8vIFRob3NlIGZ1bmN0aW9ucyBhcmUgdXNl
ZCBkdXJpbmcgbGF5b3V0LiBUYWJsZSBjZWxscyBvdmVycmlkZQorICAgIC8vIHRoZW0gdG8gaW5j
bHVkZSBhbiBhbGlnbm1lbnQgcGFkZGluZyAoY2FsbGVkIGludHJpbnNpYyBwYWRkaW5nKS4KKyAg
ICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1RvcCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVk
UGFkZGluZ1RvcCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdCb3R0b20oKSBj
b25zdCB7IHJldHVybiBjb21wdXRlZFBhZGRpbmdCb3R0b20oKTsgfQorICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBwYWRkaW5nTGVmdCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVkUGFkZGluZ0xlZnQo
KTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nUmlnaHQoKSBjb25zdCB7IHJldHVy
biBjb21wdXRlZFBhZGRpbmdSaWdodCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRp
bmdCZWZvcmUoKSBjb25zdCB7IHJldHVybiBjb21wdXRlZFBhZGRpbmdCZWZvcmUoKTsgfQorICAg
IHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nQWZ0ZXIoKSBjb25zdCB7IHJldHVybiBjb21wdXRl
ZFBhZGRpbmdBZnRlcigpOyB9CisKKyAgICBMYXlvdXRVbml0IHBhZGRpbmdTdGFydCgpIGNvbnN0
IHsgcmV0dXJuIGNvbXB1dGVkUGFkZGluZ1N0YXJ0KCk7IH0KKyAgICBMYXlvdXRVbml0IHBhZGRp
bmdFbmQoKSBjb25zdCB7IHJldHVybiBjb21wdXRlZFBhZGRpbmdFbmQoKTsgfQogCiAgICAgdmly
dHVhbCBpbnQgYm9yZGVyVG9wKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyVG9wV2lk
dGgoKTsgfQogICAgIHZpcnR1YWwgaW50IGJvcmRlckJvdHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN0
eWxlKCktPmJvcmRlckJvdHRvbVdpZHRoKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggYzEyZDI1NTNiOWM4NzhjM2I3YjJhZTNmY2EyZTY0
M2U5ZGNjYTUzNC4uNDUwMjQ3ODA3MzI1ZTU4ODI2NDM4YWE2NTBjOTYyNWVhYzBlZTJmMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTE5MSw1
MyArMTkxLDQ3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpsYXlvdXQoKQogICAgIHNldENlbGxX
aWR0aENoYW5nZWQoZmFsc2UpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6cGFk
ZGluZ1RvcChQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0aW9uKSBjb25zdAorTGF5b3V0VW5pdCBS
ZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdUb3AoKSBjb25zdAogewotICAgIExheW91dFVuaXQgcmVz
dWx0ID0gUmVuZGVyQmxvY2s6OnBhZGRpbmdUb3AoKTsKLSAgICBpZiAocGFkZGluZ09wdGlvbiA9
PSBFeGNsdWRlSW50cmluc2ljUGFkZGluZyB8fCAhaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkK
KyAgICBMYXlvdXRVbml0IHJlc3VsdCA9IGNvbXB1dGVkUGFkZGluZ1RvcCgpOworICAgIGlmICgh
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBy
ZXR1cm4gcmVzdWx0ICsgKHN0eWxlKCktPndyaXRpbmdNb2RlKCkgPT0gVG9wVG9Cb3R0b21Xcml0
aW5nTW9kZSA/IGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSA6IGludHJpbnNpY1BhZGRpbmdBZnRl
cigpKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdCb3R0b20oUGFk
ZGluZ09wdGlvbnMgcGFkZGluZ09wdGlvbikgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyVGFibGVD
ZWxsOjpwYWRkaW5nQm90dG9tKCkgY29uc3QKIHsKLSAgICBMYXlvdXRVbml0IHJlc3VsdCA9IFJl
bmRlckJsb2NrOjpwYWRkaW5nQm90dG9tKCk7Ci0gICAgaWYgKHBhZGRpbmdPcHRpb24gPT0gRXhj
bHVkZUludHJpbnNpY1BhZGRpbmcgfHwgIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAg
TGF5b3V0VW5pdCByZXN1bHQgPSBjb21wdXRlZFBhZGRpbmdCb3R0b20oKTsKKyAgICBpZiAoIWlz
SG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgcmV0
dXJuIHJlc3VsdCArIChzdHlsZSgpLT53cml0aW5nTW9kZSgpID09IFRvcFRvQm90dG9tV3JpdGlu
Z01vZGUgPyBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIoKSA6IGludHJpbnNpY1BhZGRpbmdCZWZvcmUo
KSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nTGVmdChQYWRkaW5n
T3B0aW9ucyBwYWRkaW5nT3B0aW9uKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6
OnBhZGRpbmdMZWZ0KCkgY29uc3QKIHsKLSAgICBMYXlvdXRVbml0IHJlc3VsdCA9IFJlbmRlckJs
b2NrOjpwYWRkaW5nTGVmdCgpOwotICAgIGlmIChwYWRkaW5nT3B0aW9uID09IEV4Y2x1ZGVJbnRy
aW5zaWNQYWRkaW5nIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgTGF5b3V0VW5p
dCByZXN1bHQgPSBjb21wdXRlZFBhZGRpbmdMZWZ0KCk7CisgICAgaWYgKGlzSG9yaXpvbnRhbFdy
aXRpbmdNb2RlKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgcmV0dXJuIHJlc3VsdCAr
IChzdHlsZSgpLT53cml0aW5nTW9kZSgpID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgPyBpbnRy
aW5zaWNQYWRkaW5nQmVmb3JlKCkgOiBpbnRyaW5zaWNQYWRkaW5nQWZ0ZXIoKSk7CiAgICAgCiB9
CiAKLUxheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nUmlnaHQoUGFkZGluZ09wdGlv
bnMgcGFkZGluZ09wdGlvbikgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpwYWRk
aW5nUmlnaHQoKSBjb25zdAogeyAgIAotICAgIExheW91dFVuaXQgcmVzdWx0ID0gUmVuZGVyQmxv
Y2s6OnBhZGRpbmdSaWdodCgpOwotICAgIGlmIChwYWRkaW5nT3B0aW9uID09IEV4Y2x1ZGVJbnRy
aW5zaWNQYWRkaW5nIHx8IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgTGF5b3V0VW5p
dCByZXN1bHQgPSBjb21wdXRlZFBhZGRpbmdSaWdodCgpOworICAgIGlmIChpc0hvcml6b250YWxX
cml0aW5nTW9kZSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIHJldHVybiByZXN1bHQg
KyAoc3R5bGUoKS0+d3JpdGluZ01vZGUoKSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlID8gaW50
cmluc2ljUGFkZGluZ0FmdGVyKCkgOiBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkpOwogfQogCi1M
YXlvdXRVbml0IFJlbmRlclRhYmxlQ2VsbDo6cGFkZGluZ0JlZm9yZShQYWRkaW5nT3B0aW9ucyBw
YWRkaW5nT3B0aW9uKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdC
ZWZvcmUoKSBjb25zdAogewotICAgIExheW91dFVuaXQgcmVzdWx0ID0gUmVuZGVyQmxvY2s6OnBh
ZGRpbmdCZWZvcmUoKTsKLSAgICBpZiAocGFkZGluZ09wdGlvbiA9PSBFeGNsdWRlSW50cmluc2lj
UGFkZGluZykKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0ICsgaW50
cmluc2ljUGFkZGluZ0JlZm9yZSgpOworICAgIHJldHVybiBjb21wdXRlZFBhZGRpbmdCZWZvcmUo
KSArIGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJUYWJs
ZUNlbGw6OnBhZGRpbmdBZnRlcihQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0aW9uKSBjb25zdAor
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdBZnRlcigpIGNvbnN0CiB7Ci0gICAg
TGF5b3V0VW5pdCByZXN1bHQgPSBSZW5kZXJCbG9jazo6cGFkZGluZ0FmdGVyKCk7Ci0gICAgaWYg
KHBhZGRpbmdPcHRpb24gPT0gRXhjbHVkZUludHJpbnNpY1BhZGRpbmcpCi0gICAgICAgIHJldHVy
biByZXN1bHQ7Ci0gICAgcmV0dXJuIHJlc3VsdCArIGludHJpbnNpY1BhZGRpbmdBZnRlcigpOwor
ICAgIHJldHVybiBjb21wdXRlZFBhZGRpbmdBZnRlcigpICsgaW50cmluc2ljUGFkZGluZ0FmdGVy
KCk7CiB9CiAKIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpzZXRPdmVycmlkZUhlaWdodEZyb21Sb3dI
ZWlnaHQoTGF5b3V0VW5pdCByb3dIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmgKaW5kZXggZDNhOWVlOWNhMzVhNWViMGRlNTVlY2VjNDk3NDQ4MTc0OGYz
Zjc1OS4uYTZmMDA5NDViNTUxM2JmMTQ4NTZlMzEzYzcwMzc0OTNhOWM0OWQwYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTIwLDE2ICsxMjAsMTYg
QEAgcHVibGljOgogICAgIGludCBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkgY29uc3QgeyByZXR1
cm4gbV9pbnRyaW5zaWNQYWRkaW5nQmVmb3JlOyB9CiAgICAgaW50IGludHJpbnNpY1BhZGRpbmdB
ZnRlcigpIGNvbnN0IHsgcmV0dXJuIG1faW50cmluc2ljUGFkZGluZ0FmdGVyOyB9CiAKLSAgICB2
aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1RvcChQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRy
aW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0JvdHRv
bShQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2
aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0xlZnQoUGFkZGluZ09wdGlvbnMgPSBJbmNsdWRlSW50
cmluc2ljUGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdSaWdo
dChQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsKKyAgICB2
aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1RvcCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgTGF5b3V0VW5pdCBwYWRkaW5nQm90dG9tKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBMYXlvdXRVbml0IHBhZGRpbmdMZWZ0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBM
YXlvdXRVbml0IHBhZGRpbmdSaWdodCgpIGNvbnN0IE9WRVJSSURFOwogICAgIAogICAgIC8vIEZJ
WE1FOiBGb3Igbm93IHdlIGp1c3QgYXNzdW1lIHRoZSBjZWxsIGhhcyB0aGUgc2FtZSBibG9jayBm
bG93IGRpcmVjdGlvbiBhcyB0aGUgdGFibGUuICBJdCdzIGxpa2VseSB3ZSdsbAogICAgIC8vIGNy
ZWF0ZSBhbiBleHRyYSBhbm9ueW1vdXMgUmVuZGVyQmxvY2sgdG8gaGFuZGxlIG1peGluZyBkaXJl
Y3Rpb25hbGl0eSBhbnl3YXksIGluIHdoaWNoIGNhc2Ugd2UgY2FuIGxvY2sKICAgICAvLyB0aGUg
YmxvY2sgZmxvdyBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgY2VsbHMgdG8gdGhlIHRhYmxlJ3MgZGly
ZWN0aW9uYWxpdHkuCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdCZWZvcmUoUGFkZGlu
Z09wdGlvbnMgPSBJbmNsdWRlSW50cmluc2ljUGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBM
YXlvdXRVbml0IHBhZGRpbmdBZnRlcihQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQ
YWRkaW5nKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0JlZm9yZSgpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nQWZ0ZXIoKSBjb25z
dCBPVkVSUklERTsKIAogICAgIHZvaWQgc2V0T3ZlcnJpZGVIZWlnaHRGcm9tUm93SGVpZ2h0KExh
eW91dFVuaXQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136562</attachid>
            <date>2012-04-10 16:00:56 -0700</date>
            <delta_ts>2012-04-10 21:15:56 -0700</delta_ts>
            <desc>Updated patch against ToT, also took Dave&apos;s comment into account.</desc>
            <filename>bug-83380-20120410160054.patch</filename>
            <type>text/plain</type>
            <size>27531</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M3NzA5M2E0YTQzMWM5
Y2YyYzI1Zjk1NWJjN2YzZDVhNTAyYjlhMC4uODg2NmI2YWQyMjAyNWM2MmVhNzQ4MGU3NWY3MDll
MzA1NmM0MDM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDEyLTA0LTEwICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIERvbid0IGV4
cG9zZSB0aGUgaW50cmluc2ljIHBhZGRpbmcgY29uY2VwdCB0byB0aGUgY29kZSBvdXRzaWRlIHJl
bmRlcmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODMzODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIHJlZmFjdG9yaW5nIG9ubHkuCisKKyAgICAgICAgVGhlIGN1cnJlbnQgY29k
ZSB3b3VsZCBleHBvc2UgdGhlIGNvbmNlcHQgb2YgaW50cmluc2ljIHBhZGRpbmcgdG8gZXZlcnkK
KyAgICAgICAgb2JqZWN0IGhvbGRpbmcgYSByZW5kZXJlciB0aHJvdWdoIGFuIGVudW0gb24gdGhl
IHBhZGRpbmcqIGZ1bmN0aW9ucy4KKworICAgICAgICBUaGlzIHdhcyB2ZXJ5IGZyYWdpbGUgYXMg
b25seSB0aGUgY2xhc3MgdXNpbmcgaW50cmluc2ljIHBhZGRpbmcgc2hvdWxkIGtub3cgYWJvdXQK
KyAgICAgICAgaXRzIHZlcnkgZXhpc3RlbmNlLCB0aGUgcmVzdCBvZiB0aGUgY29kZSBzaG91bGRu
J3QgaGF2ZSB0byBzcGVjaWFsIGNhc2UgZm9yIGl0LgorICAgICAgICBUaGVyZSBpcyBvbmUgZXhj
ZXB0aW9uOiB0aGUgZ2V0Q29tcHV0ZWRTdHlsZSBsb2dpYyBuZWVkcyB0aGUgb3Bwb3NpdGUgdmFs
dWUKKyAgICAgICAgcmVuZGVyaW5nIG5lZWRzLiBUbyBoYW5kbGUgdGhhdCwgd2UgbWFrZSBpdCBt
b3JlIGV4cGxpY2l0IHdoYXQgcmV0dXJucyB0aGUKKyAgICAgICAgY29tcHV0ZWQgdmFsdWVzIHZz
IHRoZSByZW5kZXJpbmcgdmFsdWVzLgorCisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaXppbmdCb3gpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVl
KToKKyAgICAgICAgVXBkYXRlZCB0aG9zZSBmdW5jdGlvbnMgdG8gdXNlIHRoZSBuZXcgY29tcHV0
ZWRDU1MqIGZ1bmN0aW9ucyBiZWxvdy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3gu
aDoKKyAgICAgICAgKFJlbmRlckJveCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNv
bXB1dGVkQ1NTQ29udGVudEJveFJlY3QpOgorICAgICAgICBUaGlzIGlzIHRoZSBjb21wdXRlZCBj
b250ZW50IGJveC4gSXQgaW5jbHVkZXMgdGhlIGludHJpbnNpYyBwYWRkaW5nLgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdUb3ApOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0JvdHRvbSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRk
aW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0
ZWRDU1NQYWRkaW5nUmlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0JlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3hNb2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ1N0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdFbmQp
OgorICAgICAgICBSZW5hbWVkIGZyb20gcGFkZGluZyogYXMgdGhleSByZXR1cm5lZCB0aGUgQ1NT
IGNvbXB1dGVkIHZhbHVlcy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5oOgorICAgICAgICAoUmVuZGVyQm94TW9kZWxPYmplY3QpOgorICAgICAgICBLaWxsZWQg
dGhlIGVudW0gcGFkZGluZ09wdGlvbnMhCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpwYWRkaW5nVG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWRkaW5nQm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpwYWRkaW5nTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFkZGluZ1JpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWRkaW5nQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2Jq
ZWN0OjpwYWRkaW5nQWZ0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmpl
Y3Q6OnBhZGRpbmdTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVj
dDo6cGFkZGluZ0VuZCk6CisgICAgICAgIEFsbCBwYWRkaW5nKiBmdW5jdGlvbnMgY2FsbCB0aGUg
Y29tcHV0ZWRDU1NQYWRkaW5nKiBvbmVzIGFib3ZlLgorCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnBh
ZGRpbmdUb3ApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nQm90
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFkZGluZ0xlZnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nUmlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nQmVmb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFkZGluZ0FmdGVyKToKKyAgICAgICAgVXBkYXRlZCB0
aGVzZSBmdW5jdGlvbnMgYWZ0ZXIgdGhlIHJlbmFtaW5nLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAoUmVuZGVyVGFibGVDZWxsKToKKyAgICAgICAg
VXBkYXRlZCB0aGUgZnVuY3Rpb25zIHNpZ25hdHVyZSBhbmQgZGVjb3JhdGVkIHRoZW0gd2l0aCBP
VkVSUklERS4KKworICAgICAgICAqIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdUb3ApOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdCb3R0b20pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdMZWZ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlck1hdGhNTEJsb2NrOjpwYWRkaW5nUmlnaHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdCZWZvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdBZnRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJNYXRoTUxCbG9jazo6cGFkZGluZ1N0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1hdGhNTEJsb2NrOjpwYWRkaW5nRW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1Jl
bmRlck1hdGhNTEJsb2NrLmg6CisgICAgICAgIChSZW5kZXJNYXRoTUxCbG9jayk6CisgICAgICAg
IFVwZGF0ZWQgdGhlc2UgZnVuY3Rpb25zIGFmdGVyIHRoZSByZW5hbWluZy4KKworICAgICAgICAq
IHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpwYWludCk6CisgICAgICAgIFVwZGF0ZWQg
dGhpcyBmdW5jdGlvbiB0byB1c2UgY29tcHV0ZUNTU0NvbnRlbnRCb3hSZWN0LmxvY2F0aW9uKCku
CisKIDIwMTItMDQtMTAgIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNwbGl0IG5vZGVzIGFuZCBlZGdlcyBhcnJheSBpbiBo
ZWFwIHByb2ZpbGVyIHNlcmlhbGl6YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDY1NDAxMGFkYjM2MjAzYjU5YzY4
MzBlYzIzZDJiYmM2MzdjZmVjMzEuLmQzNTY0NDlmMTljYmMxZWUxODU5MzJhMzZhN2M1YzViMmZk
YjJiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCkBAIC02NjksMTMgKzY2OSw3IEBAIHN0YXRpYyBMYXlvdXRSZWN0IHNpemlu
Z0JveChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgp
OwogCiAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJveChyZW5kZXJlcik7Ci0gICAgaWYg
KGJveC0+c3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQk9SREVSX0JPWCkKLSAgICAgICAgcmV0dXJu
IGJveC0+Ym9yZGVyQm94UmVjdCgpOwotICAgIExheW91dFVuaXQgY3NzUGFkZGluZ0xlZnQgPSBi
b3gtPnBhZGRpbmdMZWZ0KEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKTsKLSAgICBMYXlvdXRVbml0
IGNzc1BhZGRpbmdUb3AgPSBib3gtPnBhZGRpbmdUb3AoRXhjbHVkZUludHJpbnNpY1BhZGRpbmcp
OwotICAgIExheW91dFVuaXQgY3NzV2lkdGggPSBib3gtPmNsaWVudFdpZHRoKCkgLSBjc3NQYWRk
aW5nTGVmdCAtIGJveC0+cGFkZGluZ1JpZ2h0KEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKTsKLSAg
ICBMYXlvdXRVbml0IGNzc0hlaWdodCA9IGJveC0+Y2xpZW50SGVpZ2h0KCkgLSBjc3NQYWRkaW5n
VG9wIC0gYm94LT5wYWRkaW5nQm90dG9tKEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKTsKLSAgICBy
ZXR1cm4gTGF5b3V0UmVjdChib3gtPmJvcmRlckxlZnQoKSArIGNzc1BhZGRpbmdMZWZ0LCBib3gt
PmJvcmRlclRvcCgpICsgY3NzUGFkZGluZ1RvcCwgY3NzV2lkdGgsIGNzc0hlaWdodCk7CisgICAg
cmV0dXJuIGJveC0+c3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQk9SREVSX0JPWCA/IGJveC0+Ym9y
ZGVyQm94UmVjdCgpIDogYm94LT5jb21wdXRlZENTU0NvbnRlbnRCb3hSZWN0KCk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBoYXNDb21wb3NpdGVkTGF5ZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKQEAgLTE4NjEsMTkgKzE4NTUsMTkgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnQKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShzdHlsZS0+b3ZlcmZsb3dZ
KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1RvcDoKICAgICAgICAgICAgIGlm
IChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNCb3goKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRlckJveChyZW5kZXJlciktPnBhZGRpbmdUb3Ao
RXhjbHVkZUludHJpbnNpY1BhZGRpbmcpLCBzdHlsZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodG9SZW5kZXJCb3gocmVuZGVyZXIpLT5jb21w
dXRlZENTU1BhZGRpbmdUb3AoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHpv
b21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBhZGRpbmdUb3AoKSwgc3R5bGUu
Z2V0KCkpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5UGFkZGluZ1JpZ2h0OgogICAgICAgICAg
ICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQotICAgICAgICAgICAgICAgIHJl
dHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+cGFkZGlu
Z1JpZ2h0KEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSwgc3R5bGUuZ2V0KCkpOworICAgICAgICAg
ICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJlbmRlcmVy
KS0+Y29tcHV0ZWRDU1NQYWRkaW5nUmlnaHQoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAg
cmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWVGb3JMZW5ndGgoc3R5bGUtPnBhZGRpbmdSaWdo
dCgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQYWRkaW5nQm90dG9t
OgogICAgICAgICAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0JveCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHRvUmVuZGVyQm94KHJlbmRl
cmVyKS0+cGFkZGluZ0JvdHRvbShFeGNsdWRlSW50cmluc2ljUGFkZGluZyksIHN0eWxlLmdldCgp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1JlbmRl
ckJveChyZW5kZXJlciktPmNvbXB1dGVkQ1NTUGFkZGluZ0JvdHRvbSgpLCBzdHlsZS5nZXQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aChzdHls
ZS0+cGFkZGluZ0JvdHRvbSgpLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlQYWRkaW5nTGVmdDoKICAgICAgICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNC
b3goKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh0b1Jl
bmRlckJveChyZW5kZXJlciktPnBhZGRpbmdMZWZ0KEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSwg
c3R5bGUuZ2V0KCkpOworICAgICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+Y29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgpLCBzdHls
ZS5nZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxl
bmd0aChzdHlsZS0+cGFkZGluZ0xlZnQoKSwgc3R5bGUuZ2V0KCkpOwogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5UGFnZUJyZWFrQWZ0ZXI6CiAgICAgICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29s
KCkuY3JlYXRlVmFsdWUoc3R5bGUtPnBhZ2VCcmVha0FmdGVyKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCmluZGV4IDAxYjczODk0YmI3YTIwYTk4MWRlYmU2MDFjODA0YzAzNzEw
YjIzZTUuLjcxMmJiYTdjMzcxZmE4MzMyZTMyYWFlZDI0OWJlYmJhYWNjOTY5YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTEzNiwxMyArMTM2LDE3IEBAIHB1YmxpYzoK
ICAgICBJbnRSZWN0IGJvcmRlckJveFJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KEludFBv
aW50KCksIEludFNpemUobV9mcmFtZVJlY3QucGl4ZWxTbmFwcGVkV2lkdGgoKSwgbV9mcmFtZVJl
Y3QucGl4ZWxTbmFwcGVkSGVpZ2h0KCkpKTsgfQogICAgIHZpcnR1YWwgSW50UmVjdCBib3JkZXJC
b3VuZGluZ0JveCgpIGNvbnN0IHsgcmV0dXJuIGJvcmRlckJveFJlY3QoKTsgfSAKIAotICAgIC8v
IFRoZSBjb250ZW50IGFyZWEgb2YgdGhlIGJveCAoZXhjbHVkZXMgcGFkZGluZyBhbmQgYm9yZGVy
KS4KKyAgICAvLyBUaGUgY29udGVudCBhcmVhIG9mIHRoZSBib3ggKGV4Y2x1ZGVzIHBhZGRpbmcg
LSBhbmQgaW50cmluc2ljIHBhZGRpbmcgZm9yIHRhYmxlIGNlbGxzLCBldGMuLi4gLSBhbmQgYm9y
ZGVyKS4KICAgICBMYXlvdXRSZWN0IGNvbnRlbnRCb3hSZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5
b3V0UmVjdChib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpLCBib3JkZXJUb3AoKSArIHBhZGRp
bmdUb3AoKSwgY29udGVudFdpZHRoKCksIGNvbnRlbnRIZWlnaHQoKSk7IH0KICAgICAvLyBUaGUg
Y29udGVudCBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBJZ25vcmVzIHRyYW5zZm9ybXMuCiAgICAg
SW50UmVjdCBhYnNvbHV0ZUNvbnRlbnRCb3goKSBjb25zdDsKICAgICAvLyBUaGUgY29udGVudCBi
b3ggY29udmVydGVkIHRvIGFic29sdXRlIGNvb3JkcyAodGFraW5nIHRyYW5zZm9ybXMgaW50byBh
Y2NvdW50KS4KICAgICBGbG9hdFF1YWQgYWJzb2x1dGVDb250ZW50UXVhZCgpIGNvbnN0OwogCisg
ICAgLy8gVGhpcyByZXR1cm5zIHRoZSBjb250ZW50IGFyZWEgb2YgdGhlIGJveCAoZXhjbHVkaW5n
IHBhZGRpbmcgYW5kIGJvcmRlcikuIFRoZSBvbmx5IGRpZmZlcmVuY2Ugd2l0aCBjb250ZW50Qm94
UmVjdCBpcyB0aGF0IGNvbXB1dGVkQ1NTQ29udGVudEJveFJlY3QKKyAgICAvLyBkb2VzIGluY2x1
ZGUgdGhlIGludHJpbnNpYyBwYWRkaW5nIGluIHRoZSBjb250ZW50IGJveCBhcyB0aGlzIGlzIHdo
YXQgc29tZSBjYWxsZXJzIGV4cGVjdCAobGlrZSBnZXRDb21wdXRlZFN0eWxlKS4KKyAgICBMYXlv
dXRSZWN0IGNvbXB1dGVkQ1NTQ29udGVudEJveFJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRS
ZWN0KGJvcmRlckxlZnQoKSArIGNvbXB1dGVkQ1NTUGFkZGluZ0xlZnQoKSwgYm9yZGVyVG9wKCkg
KyBjb21wdXRlZENTU1BhZGRpbmdUb3AoKSwgY2xpZW50V2lkdGgoKSAtIGNvbXB1dGVkQ1NTUGFk
ZGluZ0xlZnQoKSAtIGNvbXB1dGVkQ1NTUGFkZGluZ1JpZ2h0KCksIGNsaWVudEhlaWdodCgpIC0g
Y29tcHV0ZWRDU1NQYWRkaW5nVG9wKCkgLSBjb21wdXRlZENTU1BhZGRpbmdCb3R0b20oKSk7IH0K
KwogICAgIC8vIEJvdW5kcyBvZiB0aGUgb3V0bGluZSBib3ggaW4gYWJzb2x1dGUgY29vcmRzLiBS
ZXNwZWN0cyB0cmFuc2Zvcm1zCiAgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNG
b3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5
b3V0UG9pbnQqIGNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lcikgY29uc3Q7CiAgICAgdmly
dHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxJbnRSZWN0PiYsIGNvbnN0IExheW91
dFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmNwcAppbmRleCBkNjBmZTE4MmQ2YjkyMTc3MDg2N2NhYTI0NzJlMzI4NmNhZTI5MDc4
Li40YjNiOGI3YWMyYTFkNjEzNjhmMGNhZThkZjE0ZDQwMWVmYjUyMDJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTU1NSw3
ICs1NTUsNyBAQCBpbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBpeGVsU25hcHBlZE9mZnNldEhl
aWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIHNuYXBTaXplVG9QaXhlbChvZmZzZXRIZWlnaHQoKSwg
b2Zmc2V0VG9wKCkpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRk
aW5nVG9wKFBhZGRpbmdPcHRpb25zKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nVG9wKCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0IHcg
PSAwOwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSAwOwpAQCAtNTY3LDcgKzU2Nyw3IEBA
IExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhZGRpbmdUb3AoUGFkZGluZ09wdGlv
bnMpIGNvbnN0CiAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChwYWRkaW5nLCB3LCBy
ZW5kZXJWaWV3KTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGlu
Z0JvdHRvbShQYWRkaW5nT3B0aW9ucykgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0JvdHRvbSgpIGNvbnN0CiB7CiAgICAgTGF5b3V0VW5p
dCB3ID0gMDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gMDsKQEAgLTU3OSw3ICs1Nzks
NyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nQm90dG9tKFBhZGRp
bmdPcHRpb25zKSBjb25zdAogICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JMZW5ndGgocGFkZGlu
ZywgdywgcmVuZGVyVmlldyk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6
OnBhZGRpbmdMZWZ0KFBhZGRpbmdPcHRpb25zKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Y29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgpIGNvbnN0CiB7CiAgICAgTGF5b3V0
VW5pdCB3ID0gMDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gMDsKQEAgLTU5MSw3ICs1
OTEsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nTGVmdChQYWRk
aW5nT3B0aW9ucykgY29uc3QKICAgICByZXR1cm4gbWluaW11bVZhbHVlRm9yTGVuZ3RoKHBhZGRp
bmcsIHcsIHJlbmRlclZpZXcpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWRkaW5nUmlnaHQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlckJv
eE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdSaWdodCgpIGNvbnN0CiB7CiAgICAgTGF5
b3V0VW5pdCB3ID0gMDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gMDsKQEAgLTYwMyw3
ICs2MDMsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nUmlnaHQo
UGFkZGluZ09wdGlvbnMpIGNvbnN0CiAgICAgcmV0dXJuIG1pbmltdW1WYWx1ZUZvckxlbmd0aChw
YWRkaW5nLCB3LCByZW5kZXJWaWV3KTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJCb3hNb2RlbE9i
amVjdDo6cGFkZGluZ0JlZm9yZShQYWRkaW5nT3B0aW9ucykgY29uc3QKK0xheW91dFVuaXQgUmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0JlZm9yZSgpIGNvbnN0CiB7CiAg
ICAgTGF5b3V0VW5pdCB3ID0gMDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gMDsKQEAg
LTYxNSw3ICs2MTUsNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWRkaW5n
QmVmb3JlKFBhZGRpbmdPcHRpb25zKSBjb25zdAogICAgIHJldHVybiBtaW5pbXVtVmFsdWVGb3JM
ZW5ndGgocGFkZGluZywgdywgcmVuZGVyVmlldyk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnBhZGRpbmdBZnRlcihQYWRkaW5nT3B0aW9ucykgY29uc3QKK0xheW91dFVu
aXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkgY29uc3QK
IHsKICAgICBMYXlvdXRVbml0IHcgPSAwOwogICAgIFJlbmRlclZpZXcqIHJlbmRlclZpZXcgPSAw
OwpAQCAtNjI3LDcgKzYyNyw3IEBAIExheW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBh
ZGRpbmdBZnRlcihQYWRkaW5nT3B0aW9ucykgY29uc3QKICAgICByZXR1cm4gbWluaW11bVZhbHVl
Rm9yTGVuZ3RoKHBhZGRpbmcsIHcsIHJlbmRlclZpZXcpOwogfQogCi1MYXlvdXRVbml0IFJlbmRl
ckJveE1vZGVsT2JqZWN0OjpwYWRkaW5nU3RhcnQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CitMYXlv
dXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlZENTU1BhZGRpbmdTdGFydCgpIGNv
bnN0CiB7CiAgICAgTGF5b3V0VW5pdCB3ID0gMDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gMDsKQEAgLTYzOSw3ICs2MzksNyBAQCBMYXlvdXRVbml0IFJlbmRlckJveE1vZGVsT2JqZWN0
OjpwYWRkaW5nU3RhcnQoUGFkZGluZ09wdGlvbnMpIGNvbnN0CiAgICAgcmV0dXJuIG1pbmltdW1W
YWx1ZUZvckxlbmd0aChwYWRkaW5nLCB3LCByZW5kZXJWaWV3KTsKIH0KIAotTGF5b3V0VW5pdCBS
ZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0VuZChQYWRkaW5nT3B0aW9ucykgY29uc3QKK0xh
eW91dFVuaXQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVkQ1NTUGFkZGluZ0VuZCgpIGNv
bnN0CiB7CiAgICAgTGF5b3V0VW5pdCB3ID0gMDsKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmgKaW5kZXggZjE0ZDA1NTY1NzI4N2U1NzMxYTZkMmIxOTg5YTNlOWE3YWZhYmY5NS4uNjU4MWJi
OWJkNWYwYzBhMmQ0OTdlMjE2NTFlODViNjk5N2JlMTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTQwLDggKzQwLDYgQEAgZW51
bSBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgewogICAgIEJhY2tncm91bmRCbGVlZFVzZVRyYW5z
cGFyZW5jeUxheWVyCiB9OwogCi1lbnVtIFBhZGRpbmdPcHRpb25zIHsgSW5jbHVkZUludHJpbnNp
Y1BhZGRpbmcsIEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nIH07Ci0KIC8vIFRoaXMgY2xhc3MgaXMg
dGhlIGJhc2UgZm9yIGFsbCBvYmplY3RzIHRoYXQgYWRoZXJlIHRvIHRoZSBDU1MgYm94IG1vZGVs
IGFzIGRlc2NyaWJlZAogLy8gYXQgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwK
IApAQCAtNzksMTUgKzc3LDI2IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIHdpbGwgd29yayBvbiBp
bmxpbmVzIHRvIHJldHVybiB0aGUgYm91bmRpbmcgYm94IG9mIGFsbCBvZiB0aGUgbGluZXMnIGJv
cmRlciBib3hlcy4KICAgICB2aXJ0dWFsIEludFJlY3QgYm9yZGVyQm91bmRpbmdCb3goKSBjb25z
dCA9IDA7CiAKLSAgICAvLyBWaXJ0dWFsIHNpbmNlIHRhYmxlIGNlbGxzIGFuZCBzb21lIE1hdGhN
TCByZW5kZXJlcnMgb3ZlcnJpZGUKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1RvcChQ
YWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2aXJ0
dWFsIExheW91dFVuaXQgcGFkZGluZ0JvdHRvbShQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRy
aW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0xlZnQo
UGFkZGluZ09wdGlvbnMgPSBJbmNsdWRlSW50cmluc2ljUGFkZGluZykgY29uc3Q7Ci0gICAgdmly
dHVhbCBMYXlvdXRVbml0IHBhZGRpbmdSaWdodChQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRy
aW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0JlZm9y
ZShQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2
aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0FmdGVyKFBhZGRpbmdPcHRpb25zID0gSW5jbHVkZUlu
dHJpbnNpY1BhZGRpbmcpIGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nU3Rh
cnQoUGFkZGluZ09wdGlvbnMgPSBJbmNsdWRlSW50cmluc2ljUGFkZGluZykgY29uc3Q7Ci0gICAg
dmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdFbmQoUGFkZGluZ09wdGlvbnMgPSBJbmNsdWRlSW50
cmluc2ljUGFkZGluZykgY29uc3Q7CisgICAgLy8gVGhlc2UgcmV0dXJuIHRoZSBDU1MgY29tcHV0
ZWQgcGFkZGluZyB2YWx1ZXMuCisgICAgTGF5b3V0VW5pdCBjb21wdXRlZENTU1BhZGRpbmdUb3Ao
KSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVkQ1NTUGFkZGluZ0JvdHRvbSgpIGNvbnN0
OworICAgIExheW91dFVuaXQgY29tcHV0ZWRDU1NQYWRkaW5nTGVmdCgpIGNvbnN0OworICAgIExh
eW91dFVuaXQgY29tcHV0ZWRDU1NQYWRkaW5nUmlnaHQoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0
IGNvbXB1dGVkQ1NTUGFkZGluZ0JlZm9yZSgpIGNvbnN0OworICAgIExheW91dFVuaXQgY29tcHV0
ZWRDU1NQYWRkaW5nQWZ0ZXIoKSBjb25zdDsKKyAgICBMYXlvdXRVbml0IGNvbXB1dGVkQ1NTUGFk
ZGluZ1N0YXJ0KCkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBjb21wdXRlZENTU1BhZGRpbmdFbmQo
KSBjb25zdDsKKworICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBkdXJpbmcgbGF5b3V0
LiBUYWJsZSBjZWxscyBhbmQgdGhlIE1hdGhNTAorICAgIC8vIGNvZGUgb3ZlcnJpZGUgdGhlbSB0
byBpbmNsdWRlIHNvbWUgZXh0cmEgaW50cmluc2ljIHBhZGRpbmcuCisgICAgdmlydHVhbCBMYXlv
dXRVbml0IHBhZGRpbmdUb3AoKSBjb25zdCB7IHJldHVybiBjb21wdXRlZENTU1BhZGRpbmdUb3Ao
KTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nQm90dG9tKCkgY29uc3QgeyByZXR1
cm4gY29tcHV0ZWRDU1NQYWRkaW5nQm90dG9tKCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFVuaXQg
cGFkZGluZ0xlZnQoKSBjb25zdCB7IHJldHVybiBjb21wdXRlZENTU1BhZGRpbmdMZWZ0KCk7IH0K
KyAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1JpZ2h0KCkgY29uc3QgeyByZXR1cm4gY29t
cHV0ZWRDU1NQYWRkaW5nUmlnaHQoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5n
QmVmb3JlKCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZWRDU1NQYWRkaW5nQmVmb3JlKCk7IH0KKyAg
ICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0FmdGVyKCkgY29uc3QgeyByZXR1cm4gY29tcHV0
ZWRDU1NQYWRkaW5nQWZ0ZXIoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nU3Rh
cnQoKSBjb25zdCB7IHJldHVybiBjb21wdXRlZENTU1BhZGRpbmdTdGFydCgpOyB9CisgICAgdmly
dHVhbCBMYXlvdXRVbml0IHBhZGRpbmdFbmQoKSBjb25zdCB7IHJldHVybiBjb21wdXRlZENTU1Bh
ZGRpbmdFbmQoKTsgfQogCiAgICAgdmlydHVhbCBpbnQgYm9yZGVyVG9wKCkgY29uc3QgeyByZXR1
cm4gc3R5bGUoKS0+Ym9yZGVyVG9wV2lkdGgoKTsgfQogICAgIHZpcnR1YWwgaW50IGJvcmRlckJv
dHRvbSgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRlckJvdHRvbVdpZHRoKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggYzEyZDI1
NTNiOWM4NzhjM2I3YjJhZTNmY2EyZTY0M2U5ZGNjYTUzNC4uYjU2ZThkOGZiOGMyOWFmYzQ0MDdh
ZjI1YmYwNTc2MzgwMjg1Y2NkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKQEAgLTE5MSw1MyArMTkxLDQ3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxs
OjpsYXlvdXQoKQogICAgIHNldENlbGxXaWR0aENoYW5nZWQoZmFsc2UpOwogfQogCi1MYXlvdXRV
bml0IFJlbmRlclRhYmxlQ2VsbDo6cGFkZGluZ1RvcChQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0
aW9uKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdUb3AoKSBjb25z
dAogewotICAgIExheW91dFVuaXQgcmVzdWx0ID0gUmVuZGVyQmxvY2s6OnBhZGRpbmdUb3AoKTsK
LSAgICBpZiAocGFkZGluZ09wdGlvbiA9PSBFeGNsdWRlSW50cmluc2ljUGFkZGluZyB8fCAhaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUoKSkKKyAgICBMYXlvdXRVbml0IHJlc3VsdCA9IGNvbXB1dGVk
Q1NTUGFkZGluZ1RvcCgpOworICAgIGlmICghaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICByZXR1cm4gcmVzdWx0ICsgKHN0eWxlKCktPndyaXRp
bmdNb2RlKCkgPT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSA/IGludHJpbnNpY1BhZGRpbmdCZWZv
cmUoKSA6IGludHJpbnNpY1BhZGRpbmdBZnRlcigpKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJU
YWJsZUNlbGw6OnBhZGRpbmdCb3R0b20oUGFkZGluZ09wdGlvbnMgcGFkZGluZ09wdGlvbikgY29u
c3QKK0xheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nQm90dG9tKCkgY29uc3QKIHsK
LSAgICBMYXlvdXRVbml0IHJlc3VsdCA9IFJlbmRlckJsb2NrOjpwYWRkaW5nQm90dG9tKCk7Ci0g
ICAgaWYgKHBhZGRpbmdPcHRpb24gPT0gRXhjbHVkZUludHJpbnNpY1BhZGRpbmcgfHwgIWlzSG9y
aXpvbnRhbFdyaXRpbmdNb2RlKCkpCisgICAgTGF5b3V0VW5pdCByZXN1bHQgPSBjb21wdXRlZENT
U1BhZGRpbmdCb3R0b20oKTsKKyAgICBpZiAoIWlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgcmV0dXJuIHJlc3VsdCArIChzdHlsZSgpLT53cml0
aW5nTW9kZSgpID09IFRvcFRvQm90dG9tV3JpdGluZ01vZGUgPyBpbnRyaW5zaWNQYWRkaW5nQWZ0
ZXIoKSA6IGludHJpbnNpY1BhZGRpbmdCZWZvcmUoKSk7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVy
VGFibGVDZWxsOjpwYWRkaW5nTGVmdChQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0aW9uKSBjb25z
dAorTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdMZWZ0KCkgY29uc3QKIHsKLSAg
ICBMYXlvdXRVbml0IHJlc3VsdCA9IFJlbmRlckJsb2NrOjpwYWRkaW5nTGVmdCgpOwotICAgIGlm
IChwYWRkaW5nT3B0aW9uID09IEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nIHx8IGlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkpCisgICAgTGF5b3V0VW5pdCByZXN1bHQgPSBjb21wdXRlZENTU1BhZGRp
bmdMZWZ0KCk7CisgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgcmV0dXJuIHJlc3VsdCArIChzdHlsZSgpLT53cml0aW5nTW9kZSgp
ID09IExlZnRUb1JpZ2h0V3JpdGluZ01vZGUgPyBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkgOiBp
bnRyaW5zaWNQYWRkaW5nQWZ0ZXIoKSk7CiAgICAgCiB9CiAKLUxheW91dFVuaXQgUmVuZGVyVGFi
bGVDZWxsOjpwYWRkaW5nUmlnaHQoUGFkZGluZ09wdGlvbnMgcGFkZGluZ09wdGlvbikgY29uc3QK
K0xheW91dFVuaXQgUmVuZGVyVGFibGVDZWxsOjpwYWRkaW5nUmlnaHQoKSBjb25zdAogeyAgIAot
ICAgIExheW91dFVuaXQgcmVzdWx0ID0gUmVuZGVyQmxvY2s6OnBhZGRpbmdSaWdodCgpOwotICAg
IGlmIChwYWRkaW5nT3B0aW9uID09IEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nIHx8IGlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkpCisgICAgTGF5b3V0VW5pdCByZXN1bHQgPSBjb21wdXRlZENTU1Bh
ZGRpbmdSaWdodCgpOworICAgIGlmIChpc0hvcml6b250YWxXcml0aW5nTW9kZSgpKQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIHJldHVybiByZXN1bHQgKyAoc3R5bGUoKS0+d3JpdGluZ01v
ZGUoKSA9PSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlID8gaW50cmluc2ljUGFkZGluZ0FmdGVyKCkg
OiBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkpOwogfQogCi1MYXlvdXRVbml0IFJlbmRlclRhYmxl
Q2VsbDo6cGFkZGluZ0JlZm9yZShQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0aW9uKSBjb25zdAor
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdCZWZvcmUoKSBjb25zdAogewotICAg
IExheW91dFVuaXQgcmVzdWx0ID0gUmVuZGVyQmxvY2s6OnBhZGRpbmdCZWZvcmUoKTsKLSAgICBp
ZiAocGFkZGluZ09wdGlvbiA9PSBFeGNsdWRlSW50cmluc2ljUGFkZGluZykKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICByZXR1cm4gcmVzdWx0ICsgaW50cmluc2ljUGFkZGluZ0JlZm9yZSgp
OworICAgIHJldHVybiBjb21wdXRlZENTU1BhZGRpbmdCZWZvcmUoKSArIGludHJpbnNpY1BhZGRp
bmdCZWZvcmUoKTsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJUYWJsZUNlbGw6OnBhZGRpbmdBZnRl
cihQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0aW9uKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJU
YWJsZUNlbGw6OnBhZGRpbmdBZnRlcigpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCByZXN1bHQg
PSBSZW5kZXJCbG9jazo6cGFkZGluZ0FmdGVyKCk7Ci0gICAgaWYgKHBhZGRpbmdPcHRpb24gPT0g
RXhjbHVkZUludHJpbnNpY1BhZGRpbmcpCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgcmV0
dXJuIHJlc3VsdCArIGludHJpbnNpY1BhZGRpbmdBZnRlcigpOworICAgIHJldHVybiBjb21wdXRl
ZENTU1BhZGRpbmdBZnRlcigpICsgaW50cmluc2ljUGFkZGluZ0FmdGVyKCk7CiB9CiAKIHZvaWQg
UmVuZGVyVGFibGVDZWxsOjpzZXRPdmVycmlkZUhlaWdodEZyb21Sb3dIZWlnaHQoTGF5b3V0VW5p
dCByb3dIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgK
aW5kZXggNTFlOWJmNmFmOGM3NWYzZjE4ZTU1OGE1Yjc5ZGM2MzIwNTUwYTZkYy4uMDZhMjc3NDZh
ZWFhNzkzY2MyMzBhNmU3NWQzNTdlOGExMWNjYjJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTIwLDE2ICsxMjAsMTYgQEAgcHVibGljOgogICAg
IGludCBpbnRyaW5zaWNQYWRkaW5nQmVmb3JlKCkgY29uc3QgeyByZXR1cm4gbV9pbnRyaW5zaWNQ
YWRkaW5nQmVmb3JlOyB9CiAgICAgaW50IGludHJpbnNpY1BhZGRpbmdBZnRlcigpIGNvbnN0IHsg
cmV0dXJuIG1faW50cmluc2ljUGFkZGluZ0FmdGVyOyB9CiAKLSAgICB2aXJ0dWFsIExheW91dFVu
aXQgcGFkZGluZ1RvcChQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBj
b25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0JvdHRvbShQYWRkaW5nT3B0aW9u
cyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFVu
aXQgcGFkZGluZ0xlZnQoUGFkZGluZ09wdGlvbnMgPSBJbmNsdWRlSW50cmluc2ljUGFkZGluZykg
Y29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdSaWdodChQYWRkaW5nT3B0aW9u
cyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFVu
aXQgcGFkZGluZ1RvcCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBw
YWRkaW5nQm90dG9tKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBh
ZGRpbmdMZWZ0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRp
bmdSaWdodCgpIGNvbnN0IE9WRVJSSURFOwogICAgIAogICAgIC8vIEZJWE1FOiBGb3Igbm93IHdl
IGp1c3QgYXNzdW1lIHRoZSBjZWxsIGhhcyB0aGUgc2FtZSBibG9jayBmbG93IGRpcmVjdGlvbiBh
cyB0aGUgdGFibGUuICBJdCdzIGxpa2VseSB3ZSdsbAogICAgIC8vIGNyZWF0ZSBhbiBleHRyYSBh
bm9ueW1vdXMgUmVuZGVyQmxvY2sgdG8gaGFuZGxlIG1peGluZyBkaXJlY3Rpb25hbGl0eSBhbnl3
YXksIGluIHdoaWNoIGNhc2Ugd2UgY2FuIGxvY2sKICAgICAvLyB0aGUgYmxvY2sgZmxvdyBkaXJl
Y3Rpb25hbGl0eSBvZiB0aGUgY2VsbHMgdG8gdGhlIHRhYmxlJ3MgZGlyZWN0aW9uYWxpdHkuCi0g
ICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdCZWZvcmUoUGFkZGluZ09wdGlvbnMgPSBJbmNs
dWRlSW50cmluc2ljUGFkZGluZykgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRp
bmdBZnRlcihQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdDsK
KyAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0JlZm9yZSgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nQWZ0ZXIoKSBjb25zdCBPVkVSUklERTsKIAog
ICAgIHZvaWQgc2V0T3ZlcnJpZGVIZWlnaHRGcm9tUm93SGVpZ2h0KExheW91dFVuaXQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTEJs
b2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxv
Y2suY3BwCmluZGV4IGRjYjNiYTE1YTFjYzJlZmI2ZjA4OTM1OTc0ZTU1MjQwNjM4NzI1MzYuLmJk
NjcwNGZkN2Y3ZDk1NTM0ZmE3ZWU4ZjM5YmFhMjY3YjMxY2Y1NjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwCkBAIC01
NCwxMSArNTQsOSBAQCBib29sIFJlbmRlck1hdGhNTEJsb2NrOjppc0NoaWxkQWxsb3dlZChSZW5k
ZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJTdHlsZSopIGNvbnN0CiAgICAgcmV0dXJuIGNoaWxkLT5u
b2RlKCkgJiYgY2hpbGQtPm5vZGUoKS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREU7
CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdUb3AoUGFkZGluZ09w
dGlvbnMgcGFkZGluZ09wdGlvbikgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6
OnBhZGRpbmdUb3AoKSBjb25zdAogewotICAgIExheW91dFVuaXQgcmVzdWx0ID0gUmVuZGVyQmxv
Y2s6OnBhZGRpbmdUb3AoRXhjbHVkZUludHJpbnNpY1BhZGRpbmcpOwotICAgIGlmIChwYWRkaW5n
T3B0aW9uID09IEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKQotICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIExheW91dFVuaXQgcmVzdWx0ID0gY29tcHV0ZWRDU1NQYWRkaW5nVG9wKCk7CiAgICAg
c3dpdGNoIChzdHlsZSgpLT53cml0aW5nTW9kZSgpKSB7CiAgICAgY2FzZSBUb3BUb0JvdHRvbVdy
aXRpbmdNb2RlOgogICAgICAgICByZXR1cm4gcmVzdWx0ICsgbV9pbnRyaW5zaWNQYWRkaW5nQmVm
b3JlOwpAQCAtNzIsMTEgKzcwLDkgQEAgTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6cGFk
ZGluZ1RvcChQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0aW9uKSBjb25zdAogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdCb3R0b20o
UGFkZGluZ09wdGlvbnMgcGFkZGluZ09wdGlvbikgY29uc3QKK0xheW91dFVuaXQgUmVuZGVyTWF0
aE1MQmxvY2s6OnBhZGRpbmdCb3R0b20oKSBjb25zdAogewotICAgIExheW91dFVuaXQgcmVzdWx0
ID0gUmVuZGVyQmxvY2s6OnBhZGRpbmdCb3R0b20oRXhjbHVkZUludHJpbnNpY1BhZGRpbmcpOwot
ICAgIGlmIChwYWRkaW5nT3B0aW9uID09IEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKQotICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIExheW91dFVuaXQgcmVzdWx0ID0gY29tcHV0ZWRDU1NQYWRk
aW5nQm90dG9tKCk7CiAgICAgc3dpdGNoIChzdHlsZSgpLT53cml0aW5nTW9kZSgpKSB7CiAgICAg
Y2FzZSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlOgogICAgICAgICByZXR1cm4gcmVzdWx0ICsgbV9p
bnRyaW5zaWNQYWRkaW5nQWZ0ZXI7CkBAIC05MCwxMSArODYsOSBAQCBMYXlvdXRVbml0IFJlbmRl
ck1hdGhNTEJsb2NrOjpwYWRkaW5nQm90dG9tKFBhZGRpbmdPcHRpb25zIHBhZGRpbmdPcHRpb24p
IGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxC
bG9jazo6cGFkZGluZ0xlZnQoUGFkZGluZ09wdGlvbnMgcGFkZGluZ09wdGlvbikgY29uc3QKK0xh
eW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdMZWZ0KCkgY29uc3QKIHsKLSAgICBM
YXlvdXRVbml0IHJlc3VsdCA9IFJlbmRlckJsb2NrOjpwYWRkaW5nTGVmdChFeGNsdWRlSW50cmlu
c2ljUGFkZGluZyk7Ci0gICAgaWYgKHBhZGRpbmdPcHRpb24gPT0gRXhjbHVkZUludHJpbnNpY1Bh
ZGRpbmcpCi0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgTGF5b3V0VW5pdCByZXN1bHQgPSBj
b21wdXRlZENTU1BhZGRpbmdMZWZ0KCk7CiAgICAgc3dpdGNoIChzdHlsZSgpLT53cml0aW5nTW9k
ZSgpKSB7CiAgICAgY2FzZSBMZWZ0VG9SaWdodFdyaXRpbmdNb2RlOgogICAgICAgICByZXR1cm4g
cmVzdWx0ICsgbV9pbnRyaW5zaWNQYWRkaW5nQmVmb3JlOwpAQCAtMTA4LDExICsxMDIsOSBAQCBM
YXlvdXRVbml0IFJlbmRlck1hdGhNTEJsb2NrOjpwYWRkaW5nTGVmdChQYWRkaW5nT3B0aW9ucyBw
YWRkaW5nT3B0aW9uKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUxheW91dFVuaXQg
UmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdSaWdodChQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0
aW9uKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6cGFkZGluZ1JpZ2h0KCkg
Y29uc3QKIHsKLSAgICBMYXlvdXRVbml0IHJlc3VsdCA9IFJlbmRlckJsb2NrOjpwYWRkaW5nUmln
aHQoRXhjbHVkZUludHJpbnNpY1BhZGRpbmcpOwotICAgIGlmIChwYWRkaW5nT3B0aW9uID09IEV4
Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKQotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIExheW91
dFVuaXQgcmVzdWx0ID0gY29tcHV0ZWRDU1NQYWRkaW5nUmlnaHQoKTsKICAgICBzd2l0Y2ggKHN0
eWxlKCktPndyaXRpbmdNb2RlKCkpIHsKICAgICBjYXNlIFJpZ2h0VG9MZWZ0V3JpdGluZ01vZGU6
CiAgICAgICAgIHJldHVybiByZXN1bHQgKyBtX2ludHJpbnNpY1BhZGRpbmdCZWZvcmU7CkBAIC0x
MjYsMjQgKzExOCwyNCBAQCBMYXlvdXRVbml0IFJlbmRlck1hdGhNTEJsb2NrOjpwYWRkaW5nUmln
aHQoUGFkZGluZ09wdGlvbnMgcGFkZGluZ09wdGlvbikgY29uc3QKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1MYXlvdXRVbml0IFJlbmRlck1hdGhNTEJsb2NrOjpwYWRkaW5nQmVmb3JlKFBhZGRp
bmdPcHRpb25zIHBhZGRpbmdPcHRpb24pIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlck1hdGhNTEJs
b2NrOjpwYWRkaW5nQmVmb3JlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUmVuZGVyQmxvY2s6OnBh
ZGRpbmdCZWZvcmUoRXhjbHVkZUludHJpbnNpY1BhZGRpbmcpICsgKHBhZGRpbmdPcHRpb24gPT0g
SW5jbHVkZUludHJpbnNpY1BhZGRpbmcgPyBtX2ludHJpbnNpY1BhZGRpbmdCZWZvcmUgOiAwKTsK
KyAgICByZXR1cm4gY29tcHV0ZWRDU1NQYWRkaW5nQmVmb3JlKCkgKyBtX2ludHJpbnNpY1BhZGRp
bmdCZWZvcmU7CiB9CiAKLUxheW91dFVuaXQgUmVuZGVyTWF0aE1MQmxvY2s6OnBhZGRpbmdBZnRl
cihQYWRkaW5nT3B0aW9ucyBwYWRkaW5nT3B0aW9uKSBjb25zdAorTGF5b3V0VW5pdCBSZW5kZXJN
YXRoTUxCbG9jazo6cGFkZGluZ0FmdGVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUmVuZGVyQmxv
Y2s6OnBhZGRpbmdBZnRlcihFeGNsdWRlSW50cmluc2ljUGFkZGluZykgKyAocGFkZGluZ09wdGlv
biA9PSBJbmNsdWRlSW50cmluc2ljUGFkZGluZyA/IG1faW50cmluc2ljUGFkZGluZ0FmdGVyIDog
MCk7CisgICAgcmV0dXJuIGNvbXB1dGVkQ1NTUGFkZGluZ0FmdGVyKCkgKyBtX2ludHJpbnNpY1Bh
ZGRpbmdBZnRlcjsKIH0KIAotTGF5b3V0VW5pdCBSZW5kZXJNYXRoTUxCbG9jazo6cGFkZGluZ1N0
YXJ0KFBhZGRpbmdPcHRpb25zIHBhZGRpbmdPcHRpb24pIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ck1hdGhNTEJsb2NrOjpwYWRkaW5nU3RhcnQoKSBjb25zdAogewotICAgIHJldHVybiBSZW5kZXJC
bG9jazo6cGFkZGluZ1N0YXJ0KEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSArIChwYWRkaW5nT3B0
aW9uID09IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nID8gbV9pbnRyaW5zaWNQYWRkaW5nU3RhcnQg
OiAwKTsKKyAgICByZXR1cm4gY29tcHV0ZWRDU1NQYWRkaW5nU3RhcnQoKSArIG1faW50cmluc2lj
UGFkZGluZ1N0YXJ0OwogfQogCi1MYXlvdXRVbml0IFJlbmRlck1hdGhNTEJsb2NrOjpwYWRkaW5n
RW5kKFBhZGRpbmdPcHRpb25zIHBhZGRpbmdPcHRpb24pIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ck1hdGhNTEJsb2NrOjpwYWRkaW5nRW5kKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUmVuZGVyQmxv
Y2s6OnBhZGRpbmdFbmQoRXhjbHVkZUludHJpbnNpY1BhZGRpbmcpICsgKHBhZGRpbmdPcHRpb24g
PT0gSW5jbHVkZUludHJpbnNpY1BhZGRpbmcgPyBtX2ludHJpbnNpY1BhZGRpbmdFbmQgOiAwKTsK
KyAgICByZXR1cm4gY29tcHV0ZWRDU1NQYWRkaW5nRW5kKCkgKyBtX2ludHJpbnNpY1BhZGRpbmdF
bmQ7CiB9CiAKIFJlbmRlck1hdGhNTEJsb2NrKiBSZW5kZXJNYXRoTUxCbG9jazo6Y3JlYXRlQWxt
b3N0QW5vbnltb3VzQmxvY2soRURpc3BsYXkgZGlzcGxheSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MQmxvY2suaAppbmRleCBjMmZjMzI3ZWIw
YWViZTM5ODE4ZTFkZTlmZjlkYjJjMzNkZTlmYWYxLi4xZGMzZmM4MjdkNTI5OTcwOTMwODllNzc3
ODIzOTkyMGU2NzllZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEJsb2NrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21h
dGhtbC9SZW5kZXJNYXRoTUxCbG9jay5oCkBAIC01NiwxNCArNTYsMTQgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgUmVuZGVyTWF0aE1MT3BlcmF0b3IqIHVuZW1iZWxsaXNoZWRPcGVyYXRvcigpIHsg
cmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RyZXRjaFRvSGVpZ2h0KGludCBoZWlnaHQp
OwogCi0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdUb3AoUGFkZGluZ09wdGlvbnMgPSBJ
bmNsdWRlSW50cmluc2ljUGFkZGluZykgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBMYXlv
dXRVbml0IHBhZGRpbmdCb3R0b20oUGFkZGluZ09wdGlvbnMgPSBJbmNsdWRlSW50cmluc2ljUGFk
ZGluZykgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdMZWZ0
KFBhZGRpbmdPcHRpb25zID0gSW5jbHVkZUludHJpbnNpY1BhZGRpbmcpIGNvbnN0IE9WRVJSSURF
OwotICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nUmlnaHQoUGFkZGluZ09wdGlvbnMgPSBJ
bmNsdWRlSW50cmluc2ljUGFkZGluZykgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBMYXlv
dXRVbml0IHBhZGRpbmdCZWZvcmUoUGFkZGluZ09wdGlvbnMgPSBJbmNsdWRlSW50cmluc2ljUGFk
ZGluZykgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdBZnRl
cihQYWRkaW5nT3B0aW9ucyA9IEluY2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSBjb25zdCBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1N0YXJ0KFBhZGRpbmdPcHRpb25zID0g
SW5jbHVkZUludHJpbnNpY1BhZGRpbmcpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgTGF5
b3V0VW5pdCBwYWRkaW5nRW5kKFBhZGRpbmdPcHRpb25zID0gSW5jbHVkZUludHJpbnNpY1BhZGRp
bmcpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nVG9wKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdCb3R0b20oKSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0xlZnQoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ1JpZ2h0KCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdCZWZvcmUoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgcGFkZGluZ0FmdGVyKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRVbml0IHBhZGRpbmdTdGFydCgpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBwYWRkaW5nRW5kKCkgY29uc3QgT1ZFUlJJREU7
CiAgICAgCiAjaWYgRU5BQkxFKERFQlVHX01BVEhfTEFZT1VUKQogICAgIHZpcnR1YWwgdm9pZCBw
YWludChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MU3F1YXJlUm9vdC5jcHAK
aW5kZXggMGM3MzU5ZjMwMjY5Y2JmZTIyZTM4MGM4YjAwNzUxZjk2MmU4ODgyMy4uYjA0MGY4OGM5
NjFiM2JiZmVjNWUxMzM4M2EwNTZkNGFmNDQ1Mjg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxTcXVhcmVSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTFNxdWFyZVJvb3QuY3BwCkBA
IC0xMTYsOSArMTE2LDggQEAgdm9pZCBSZW5kZXJNYXRoTUxTcXVhcmVSb290OjpwYWludChQYWlu
dEluZm8mIGluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnMKICAgICAKICAgICBpZiAo
aW5mby5jb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBMYXlvdXRTaXplIGNzc0NvbnRlbnRMZWZ0VG9wKGJvcmRlckxlZnQoKSArIHBhZGRpbmdM
ZWZ0KEV4Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSwgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKEV4
Y2x1ZGVJbnRyaW5zaWNQYWRkaW5nKSk7Ci0gICAgSW50UG9pbnQgYWRqdXN0ZWRQYWludE9mZnNl
dCA9IHJvdW5kZWRJbnRQb2ludChwYWludE9mZnNldCArIGxvY2F0aW9uKCkgKyBjc3NDb250ZW50
TGVmdFRvcCk7CisKKyAgICBJbnRQb2ludCBhZGp1c3RlZFBhaW50T2Zmc2V0ID0gcm91bmRlZElu
dFBvaW50KHBhaW50T2Zmc2V0ICsgbG9jYXRpb24oKSArIGNvbXB1dGVkQ1NTQ29udGVudEJveFJl
Y3QoKS5sb2NhdGlvbigpKTsKICAgICAKICAgICBpbnQgYmFzZUhlaWdodCA9IHJvdW5kVG9JbnQo
Z2V0Qm94TW9kZWxPYmplY3RIZWlnaHQoZmlyc3RDaGlsZCgpKSk7CiAgICAgaW50IG92ZXJiYXJX
aWR0aCA9IHJvdW5kVG9JbnQoZ2V0Qm94TW9kZWxPYmplY3RXaWR0aChmaXJzdENoaWxkKCkpKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>