<?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>54392</bug_id>
          
          <creation_ts>2011-02-14 08:01:19 -0800</creation_ts>
          <short_desc>[EFL] Adjust functions of RenderThemeEfl.cpp to WebKit parameter style</short_desc>
          <delta_ts>2011-03-03 22:05:51 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>54693</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>350659</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-02-14 08:01:19 -0800</bug_when>
    <thetext>In Bug 53906, I add dummy functions to RenderThemeEFl.cpp. But, the added function&apos;s parameter is different from other&apos;s.

Other function :
    bool RenderThemeEfl::paintSearchFieldResultsButton(RenderObject* o, const PaintInfo&amp; i, const IntRect&amp; rect) 
    bool RenderThemeEfl::paintSearchFieldResultsDecoration(RenderObject* o, const PaintInfo&amp; i, const IntRect&amp; rect) 
    bool RenderThemeEfl::paintSearchFieldCancelButton(RenderObject* o, const PaintInfo&amp; i, const IntRect&amp; rect)
    ...   

Added functions :
    bool RenderThemeEfl::paintMediaMuteButton(RenderObject* renderObject, const PaintInfo&amp; paintInfo, const IntRect&amp; re ct)
    bool RenderThemeEfl::paintMediaPlayButton(RenderObject* renderObject, const PaintInfo&amp; paintInfo, const IntRect&amp; rect)
    ...

I&apos;d like to change &quot;paintInfo&quot; with &quot;i&quot; in order to sync with other functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350662</commentid>
    <comment_count>1</comment_count>
      <attachid>82316</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-02-14 08:07:02 -0800</bug_when>
    <thetext>Created attachment 82316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350675</commentid>
    <comment_count>2</comment_count>
      <attachid>82316</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-02-14 08:36:57 -0800</bug_when>
    <thetext>Comment on attachment 82316
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Change pamater name of new functions.

type: pamater</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350677</commentid>
    <comment_count>3</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-02-14 08:37:32 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 82316 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=82316&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        Change pamater name of new functions.
&gt; 
&gt; type: pamater

typo even :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350876</commentid>
    <comment_count>4</comment_count>
      <attachid>82360</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-02-14 14:13:33 -0800</bug_when>
    <thetext>Created attachment 82360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>350939</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-02-14 15:41:35 -0800</bug_when>
    <thetext>Hello Antonio :-)

Thank you for your review. I fix wrong spelling. And, I change parameter name one more thing. Other functions are using &quot;o&quot; for RenderObject* parameter. So, I change renderObject with o as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352790</commentid>
    <comment_count>6</comment_count>
      <attachid>82360</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-02-17 06:09:49 -0800</bug_when>
    <thetext>Comment on attachment 82360
Patch

After thinking a bit more about this, we try to avoid abreviations in the source code. Maybe we should renamed it the other way around? Also, most of the parameters are ununsed anyways.

I know other ports also abreviate variable names in their respective RenderThemeXXX methods, but ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>352813</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-02-17 06:43:18 -0800</bug_when>
    <thetext>I like the original code.  Abbreviations are not good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353203</commentid>
    <comment_count>8</comment_count>
      <attachid>82360</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-02-17 15:23:23 -0800</bug_when>
    <thetext>Comment on attachment 82360
Patch

Moving to abbreviations is not the right way to go here. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362051</commentid>
    <comment_count>9</comment_count>
      <attachid>84649</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-03-03 16:21:04 -0800</bug_when>
    <thetext>Created attachment 84649
Patch

Functions of RenderThemeEfl.cpp have efl coding style. But, WebCore&apos;s functions should adhere WebKit coding style.
So, I modify the efl style parameter as below,

- EvasObject* o -&gt; EvasObject* object
- ThemePartCacheEntry* ce -&gt; ThemePartCacheEntry* entry
- PaintInfo&amp; i -&gt; PaintInfo&amp; info
- RenderObject* o -&gt; RenderObject* object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362056</commentid>
    <comment_count>10</comment_count>
      <attachid>84649</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-03-03 16:24:06 -0800</bug_when>
    <thetext>Comment on attachment 84649
Patch

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

Yay!  LGTM.

&gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:1119
&gt; +bool RenderThemeEfl::paintMediaCurrentTime(RenderObject* object, const PaintInfo&amp; info, const IntRect&amp; rect)

Why info instead of paintInfo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362069</commentid>
    <comment_count>11</comment_count>
      <attachid>84649</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-03-03 16:30:28 -0800</bug_when>
    <thetext>Comment on attachment 84649
Patch

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

&gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:119
&gt; +    struct ThemePartCacheEntry *entry = new struct ThemePartCacheEntry;

nit: We had better use OwnPtr&lt;ThemePartCacheEntry&gt; to avoid &apos;delete&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362073</commentid>
    <comment_count>12</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-03-03 16:38:39 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 84649 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84649&amp;action=review
&gt; 
&gt; Yay!  LGTM.
&gt; 
&gt; &gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:1119
&gt; &gt; +bool RenderThemeEfl::paintMediaCurrentTime(RenderObject* object, const PaintInfo&amp; info, const IntRect&amp; rect)
&gt; 
&gt; Why info instead of paintInfo?

I&apos;d like to keep sync with other parameters. Other parameters use last name of data type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362074</commentid>
    <comment_count>13</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-03-03 16:39:56 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; (From update of attachment 84649 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84649&amp;action=review
&gt; &gt; 
&gt; &gt; Yay!  LGTM.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:1119
&gt; &gt; &gt; +bool RenderThemeEfl::paintMediaCurrentTime(RenderObject* object, const PaintInfo&amp; info, const IntRect&amp; rect)
&gt; &gt; 
&gt; &gt; Why info instead of paintInfo?
&gt; 
&gt; I&apos;d like to keep sync with other parameters. Other parameters use last name of data type.

Thank you for your comment. (In reply to comment #11)
&gt; (From update of attachment 84649 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=84649&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/efl/RenderThemeEfl.cpp:119
&gt; &gt; +    struct ThemePartCacheEntry *entry = new struct ThemePartCacheEntry;
&gt; 
&gt; nit: We had better use OwnPtr&lt;ThemePartCacheEntry&gt; to avoid &apos;delete&apos;.

Thank you for your guidance. This seem to be processed by new bug. I will make a bug for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362265</commentid>
    <comment_count>14</comment_count>
      <attachid>84649</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-03 21:51:04 -0800</bug_when>
    <thetext>Comment on attachment 84649
Patch

Clearing flags on attachment: 84649

Committed r80324: &lt;http://trac.webkit.org/changeset/80324&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362266</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-03 21:51:11 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362273</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-03 22:05:51 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/80324 might have broken EFL Linux Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82316</attachid>
            <date>2011-02-14 08:07:02 -0800</date>
            <delta_ts>2011-02-14 15:39:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch-render-efl.txt</filename>
            <type>text/plain</type>
            <size>4851</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNGNlZDViLi44YTU3NmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDItMTQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBD
aGFuZ2UgcGFyYW1ldGVyIG5hbWUgdG8gc3luYyB3aXRoIG90aGVyIGZ1bmN0aW9ucyBpbiBSZW5k
ZXJUaGVtZUVmbC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU0MzkyCisKKyAgICAgICAgVGhlcmUgd2VyZSBkaWZmZXJlbmNlIG9mIHBhcmFtZXRl
ciBuYW1lIGJldHdlZW4gbmV3IGZ1bmN0aW9ucyBhbmQgb3RoZXJzLgorICAgICAgICBDaGFuZ2Ug
cGFtYXRlciBuYW1lIG9mIG5ldyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
UmVuZGVyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
RWZsOjpwYWludE1lZGlhTXV0ZUJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVt
ZUVmbDo6cGFpbnRNZWRpYVBsYXlCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhU2xpZGVyVHJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTbGlkZXJUaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9s
dW1lU2xpZGVyVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50
TWVkaWFDdXJyZW50VGltZSk6CisKIDIwMTEtMDItMTQgIFJvbGFuZCBTdGVpbmVyICA8cm9sYW5k
c3RlaW5lckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcAppbmRl
eCA5MTAyZDE3Li43MWIyODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvUmVuZGVyVGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9S
ZW5kZXJUaGVtZUVmbC5jcHAKQEAgLTEwNTYsNjcgKzEwNTYsNjcgQEAgU3RyaW5nIFJlbmRlclRo
ZW1lRWZsOjpmb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUoZmxvYXQgY3VycmVudFRpbWUs
IGZsb2F0IGQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6
OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVy
VGhlbWVFZmw6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wg
UmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVy
T2JqZWN0LCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhl
bWVFZmw6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2Jq
ZWN0LCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVF
Zmw6OnBhaW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwg
Y29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJl
bmRlclRoZW1lRWZsOjpwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiByZW5k
ZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJU
aGVtZUVmbDo6cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVy
T2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkK
K2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihSZW5kZXJP
YmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1i
b29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0
IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRp
YVNsaWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8s
IGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhU2xpZGVy
VGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3Qm
IHIpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJDb250YWluZXIoUmVuZGVy
T2JqZWN0KiwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3Qp
Citib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVj
dCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVGh1bWIoUmVuZGVy
T2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRl
clRodW1iKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIGksIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFDdXJyZW50VGltZShS
ZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhQ3VycmVu
dFRpbWUoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaSwgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBm
YWxzZTsK
</data>
<flag name="review"
          id="73978"
          type_id="1"
          status="+"
          setter="tonikitoo"
    />
    <flag name="commit-queue"
          id="73979"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82360</attachid>
            <date>2011-02-14 14:13:33 -0800</date>
            <delta_ts>2011-03-03 16:21:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch-render-efl.txt</filename>
            <type>text/plain</type>
            <size>4767</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBhNGNlZDViLi44MzY0NzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYg
QEAKKzIwMTEtMDItMTQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBD
aGFuZ2UgcGFyYW1ldGVyIG5hbWUgdG8gc3luYyB3aXRoIG90aGVyIGZ1bmN0aW9ucyBpbiBSZW5k
ZXJUaGVtZUVmbC5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU0MzkyCisKKyAgICAgICAgVGhlcmUgd2VyZSBkaWZmZXJlbmNlIG9mIHBhcmFtZXRl
ciBuYW1lIGJldHdlZW4gbmV3IGZ1bmN0aW9ucyBhbmQgb3RoZXJzLgorICAgICAgICBDaGFuZ2Ug
cGFyYW1ldGVyIG5hbWUgb2YgbmV3IGZ1bmN0aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL2Vm
bC9SZW5kZXJUaGVtZUVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6
cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OnBhaW50TWVkaWFNdXRlQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRo
ZW1lRWZsOjpwYWludE1lZGlhUGxheUJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJU
aGVtZUVmbDo6cGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lRWZsOjpwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24pOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xp
ZGVyVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFW
b2x1bWVTbGlkZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFp
bnRNZWRpYUN1cnJlbnRUaW1lKToKKwogMjAxMS0wMi0xNCAgUm9sYW5kIFN0ZWluZXIgIDxyb2xh
bmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVy
YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVm
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3BwCmlu
ZGV4IDkxMDJkMTcuLjc5NmUyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZs
L1JlbmRlclRoZW1lRWZsLmNwcApAQCAtMTA1Niw2NyArMTA1Niw2NyBAQCBTdHJpbmcgUmVuZGVy
VGhlbWVFZmw6OmZvcm1hdE1lZGlhQ29udHJvbHNDdXJyZW50VGltZShmbG9hdCBjdXJyZW50VGlt
ZSwgZmxvYXQgZAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVm
bDo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qs
IGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBS
ZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYUZ1bGxzY3JlZW5CdXR0b24oUmVuZGVyT2JqZWN0KiBv
LCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6
OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhl
bWVFZmw6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJ
bmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhUGxh
eUJ1dHRvbihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1l
ZGlhUGxheUJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKFJl
bmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTZWVrQmFj
a0J1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRl
ck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTZWVrRm9yd2Fy
ZEJ1dHRvbihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHIpCitib29s
IFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHIpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50
TWVkaWFTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByKQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNs
aWRlclRodW1iKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKFJl
bmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlckNvbnRhaW5l
cihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRyYWNrKFJlbmRlck9iamVj
dCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFj
ayhSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRodW1iKFJlbmRlck9iamVj
dCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVj
dCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUaHVt
YihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9v
bCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYUN1cnJlbnRUaW1lKFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVj
dCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFDdXJyZW50VGltZShSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsK
</data>
<flag name="review"
          id="74028"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>84649</attachid>
            <date>2011-03-03 16:21:04 -0800</date>
            <delta_ts>2011-03-03 21:51:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch-style-renderthemeefl.txt</filename>
            <type>text/plain</type>
            <size>43273</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMzM1ZjIzLi43Y2IxNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTEtMDMtMDMgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBB
ZGp1c3QgZnVuY3Rpb25zIG9mIFJlbmRlclRoZW1lRWZsLmNwcCB0byBXZWJLaXQgcGFyYW1ldGVy
IHN0eWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
NDM5MgorCisgICAgICAgIEZ1bmN0aW9ucyBvZiBSZW5kZXJUaGVtZUVmbC5jcHAgYWRoZXJlIGVm
bCBjb2Rpbmcgc3R5bGUgaW5zdGVhZCBvZiBXZWJLaXQgY29kaW5nIHN0eWxlLgorICAgICAgICBX
ZWJDb3JlJ3MgZnVuY3Rpb25zIHNob3VsZCBhZGhlcmUgV2ViS2l0IGNvZGluZyBzdHlsZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVFbnRyeVJlc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjp0aGVtZVBhcnRDYWNoZUVudHJ5U3VyZmFjZUNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6Y2FjaGVUaGVtZVBhcnROZXcp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmNhY2hlVGhlbWVQYXJ0UmVzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmNhY2hlVGhlbWVQYXJ0UmVzaXpl
QW5kUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OmNhY2hlVGhlbWVQ
YXJ0R2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpjYWNoZVRoZW1lUGFy
dEZsdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBseUVkamVTdGF0
ZUZyb21Gb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludFRoZW1l
UGFydCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NTZWxlY3Rp
b25BY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzU2Vs
ZWN0aW9uSW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyVGhlbWVFZmxDb2xvckNs
YXNzRm9jdXNSaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRoZW1lRWZsQ29sb3JDbGFz
c0J1dHRvblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6cmVuZGVyVGhlbWVFZmxDb2xvckNsYXNz
Q29tYm9UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc0Vu
dHJ5VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpyZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NTZWFy
Y2hUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNj
cmlwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YXBwbHlQYXJ0RGVz
Y3JpcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpjb250cm9sU3Vw
cG9ydHNUaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YmFzZWxpbmVQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRTbGlkZXJU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVyVHJh
Y2tTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVy
VGh1bWJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRTbGlk
ZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0Q2hlY2ti
b3hTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRDaGVja2Jv
eCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0UmFkaW9TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRSYWRpbyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0QnV0dG9uU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lRWZsOjphZGp1c3RNZW51TGlzdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lRWZsOjpwYWludE1lbnVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRoZW1lRWZsOjphZGp1c3RUZXh0RmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRUZXh0RmllbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OmFkanVzdFRleHRBcmVhU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhl
bWVFZmw6OnBhaW50VGV4dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6
OmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkRGVjb3JhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFy
Y2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRDYW5jZWxCdXR0b25TdHls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2Vh
cmNoRmllbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRT
ZWFyY2hGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6YWRqdXN0UHJv
Z3Jlc3NCYXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRQ
cm9ncmVzc0Jhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRp
YUZ1bGxzY3JlZW5CdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFNdXRlQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpw
YWludE1lZGlhUGxheUJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6
cGFpbnRNZWRpYVNlZWtCYWNrQnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRoZW1l
RWZsOjpwYWludE1lZGlhU2Vla0ZvcndhcmRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTbGlkZXJUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVNsaWRlclRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyQ29udGFpbmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFWb2x1bWVTbGlk
ZXJUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYUN1
cnJlbnRUaW1lKToKKwogMjAxMS0wMy0wMyAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9SZW5kZXJUaGVtZUVmbC5jcHAKaW5kZXggOTEwMmQxNy4uMjdlOGE0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1JlbmRlclRoZW1lRWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvUmVuZGVyVGhlbWVFZmwuY3Bw
CkBAIC00LDcgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDggSU5kVCAtIEluc3RpdHV0byBOb2tpYSBkZSBUZWNub2xvZ2lh
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwot
ICogQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcworICogQ29weXJp
Z2h0IChDKSAyMDA5LTIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC02OCwxOSArNjgsMTkgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2l6ZUNvbnN0
cmFpbnRzKFJlbmRlclN0eWxlKiBzdHlsZSwgRm9ybVR5cGUgdHlwZSkgY28KICAgICBzdHlsZS0+
c2V0UGFkZGluZ1JpZ2h0KGRlc2MtPnBhZGRpbmcucmlnaHQoKSk7CiB9CiAKLWJvb2wgUmVuZGVy
VGhlbWVFZmw6OnRoZW1lUGFydENhY2hlRW50cnlSZXNldChzdHJ1Y3QgVGhlbWVQYXJ0Q2FjaGVF
bnRyeSogY2UsIEZvcm1UeXBlIHR5cGUpCitib29sIFJlbmRlclRoZW1lRWZsOjp0aGVtZVBhcnRD
YWNoZUVudHJ5UmVzZXQoc3RydWN0IFRoZW1lUGFydENhY2hlRW50cnkqIGVudHJ5LCBGb3JtVHlw
ZSB0eXBlKQogewogICAgIGNvbnN0IGNoYXIgKmZpbGUsICpncm91cDsKIAotICAgIEFTU0VSVChj
ZSk7CisgICAgQVNTRVJUKGVudHJ5KTsKIAogICAgIGVkamVfb2JqZWN0X2ZpbGVfZ2V0KG1fZWRq
ZSwgJmZpbGUsIDApOwogICAgIGdyb3VwID0gZWRqZUdyb3VwRnJvbUZvcm1UeXBlKHR5cGUpOwog
ICAgIEFTU0VSVChmaWxlKTsKICAgICBBU1NFUlQoZ3JvdXApOwogCi0gICAgaWYgKCFlZGplX29i
amVjdF9maWxlX3NldChjZS0+bywgZmlsZSwgZ3JvdXApKSB7Ci0gICAgICAgIEVkamVfTG9hZF9F
cnJvciBlcnIgPSBlZGplX29iamVjdF9sb2FkX2Vycm9yX2dldChjZS0+byk7CisgICAgaWYgKCFl
ZGplX29iamVjdF9maWxlX3NldChlbnRyeS0+bywgZmlsZSwgZ3JvdXApKSB7CisgICAgICAgIEVk
amVfTG9hZF9FcnJvciBlcnIgPSBlZGplX29iamVjdF9sb2FkX2Vycm9yX2dldChlbnRyeS0+byk7
CiAgICAgICAgIGNvbnN0IGNoYXIgKmVycm1zZyA9IGVkamVfbG9hZF9lcnJvcl9zdHIoZXJyKTsK
ICAgICAgICAgRUlOQV9MT0dfRVJSKCJDb3VsZCBub3QgbG9hZCAnJXMnIGZyb20gdGhlbWUgJXM6
ICVzIiwKICAgICAgICAgICAgICAgICAgICAgIGdyb3VwLCBmaWxlLCBlcnJtc2cpOwpAQCAtODks
MjEgKzg5LDIxIEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnRoZW1lUGFydENhY2hlRW50cnlSZXNl
dChzdHJ1Y3QgVGhlbWVQYXJ0Q2FjaGVFbnRyeSogY2UsIEZvCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6OnRoZW1lUGFydENhY2hlRW50cnlTdXJmYWNlQ3JlYXRl
KHN0cnVjdCBUaGVtZVBhcnRDYWNoZUVudHJ5KiBjZSkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnRo
ZW1lUGFydENhY2hlRW50cnlTdXJmYWNlQ3JlYXRlKHN0cnVjdCBUaGVtZVBhcnRDYWNoZUVudHJ5
KiBlbnRyeSkKIHsKICAgICBpbnQgdywgaDsKICAgICBjYWlyb19zdGF0dXNfdCBzdGF0dXM7CiAK
ICAgICBBU1NFUlQoY2UpOwotICAgIEFTU0VSVChjZS0+ZWUpOworICAgIEFTU0VSVChlbnRyeS0+
ZWUpOwogCi0gICAgZWNvcmVfZXZhc19nZW9tZXRyeV9nZXQoY2UtPmVlLCAwLCAwLCAmdywgJmgp
OworICAgIGVjb3JlX2V2YXNfZ2VvbWV0cnlfZ2V0KGVudHJ5LT5lZSwgMCwgMCwgJncsICZoKTsK
ICAgICBBU1NFUlQodyA+IDApOwogICAgIEFTU0VSVChoID4gMCk7CiAKLSAgICBjZS0+c3VyZmFj
ZSA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKCh1bnNpZ25lZCBjaGFyICop
ZWNvcmVfZXZhc19idWZmZXJfcGl4ZWxzX2dldChjZS0+ZWUpLAorICAgIGVudHJ5LT5zdXJmYWNl
ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoKHVuc2lnbmVkIGNoYXIgKill
Y29yZV9ldmFzX2J1ZmZlcl9waXhlbHNfZ2V0KGVudHJ5LT5lZSksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQUlST19GT1JNQVRfQVJHQjMy
LCB3LCBoLCB3ICogNCk7Ci0gICAgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9zdGF0dXMoY2UtPnN1
cmZhY2UpOworICAgIHN0YXR1cyA9IGNhaXJvX3N1cmZhY2Vfc3RhdHVzKGVudHJ5LT5zdXJmYWNl
KTsKICAgICBpZiAoc3RhdHVzICE9IENBSVJPX1NUQVRVU19TVUNDRVNTKSB7CiAgICAgICAgIEVJ
TkFfTE9HX0VSUigiQ291bGQgbm90IGNyZWF0ZSBjYWlybyBzdXJmYWNlOiAlcyIsCiAgICAgICAg
ICAgICAgICAgICAgICBjYWlyb19zdGF0dXNfdG9fc3RyaW5nKHN0YXR1cykpOwpAQCAtMTE2LDc1
ICsxMTYsNzUgQEAgYm9vbCBSZW5kZXJUaGVtZUVmbDo6dGhlbWVQYXJ0Q2FjaGVFbnRyeVN1cmZh
Y2VDcmVhdGUoc3RydWN0IFRoZW1lUGFydENhY2hlRW50cnkKIC8vIGFsbG9jYXRlIGEgbmV3IGVu
dHJ5IGFuZCBmaWxsIGl0IHdpdGggZWRqZSBncm91cAogc3RydWN0IFJlbmRlclRoZW1lRWZsOjpU
aGVtZVBhcnRDYWNoZUVudHJ5KiBSZW5kZXJUaGVtZUVmbDo6Y2FjaGVUaGVtZVBhcnROZXcoRm9y
bVR5cGUgdHlwZSwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBzdHJ1Y3QgVGhlbWVQYXJ0
Q2FjaGVFbnRyeSAqY2UgPSBuZXcgc3RydWN0IFRoZW1lUGFydENhY2hlRW50cnk7CisgICAgc3Ry
dWN0IFRoZW1lUGFydENhY2hlRW50cnkgKmVudHJ5ID0gbmV3IHN0cnVjdCBUaGVtZVBhcnRDYWNo
ZUVudHJ5OwogCi0gICAgaWYgKCFjZSkgeworICAgIGlmICghZW50cnkpIHsKICAgICAgICAgRUlO
QV9MT0dfRVJSKCJjb3VsZCBub3QgYWxsb2NhdGUgVGhlbWVQYXJ0Q2FjaGVFbnRyeS4iKTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgY2UtPmVlID0gZWNvcmVfZXZhc19idWZmZXJf
bmV3KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgaWYgKCFjZS0+ZWUpIHsKKyAg
ICBlbnRyeS0+ZWUgPSBlY29yZV9ldmFzX2J1ZmZlcl9uZXcoc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKTsKKyAgICBpZiAoIWVudHJ5LT5lZSkgewogICAgICAgICBFSU5BX0xPR19FUlIoImVj
b3JlX2V2YXNfYnVmZmVyX25ldyglZCwgJWQpIGZhaWxlZC4iLAogICAgICAgICAgICAgICAgICAg
ICAgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICAgICAgZGVsZXRlIGNlOworICAg
ICAgICBkZWxldGUgZW50cnk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIGNlLT5v
ID0gZWRqZV9vYmplY3RfYWRkKGVjb3JlX2V2YXNfZ2V0KGNlLT5lZSkpOwotICAgIEFTU0VSVChj
ZS0+byk7Ci0gICAgaWYgKCF0aGVtZVBhcnRDYWNoZUVudHJ5UmVzZXQoY2UsIHR5cGUpKSB7Ci0g
ICAgICAgIGV2YXNfb2JqZWN0X2RlbChjZS0+byk7Ci0gICAgICAgIGVjb3JlX2V2YXNfZnJlZShj
ZS0+ZWUpOwotICAgICAgICBkZWxldGUgY2U7CisgICAgZW50cnktPm8gPSBlZGplX29iamVjdF9h
ZGQoZWNvcmVfZXZhc19nZXQoZW50cnktPmVlKSk7CisgICAgQVNTRVJUKGVudHJ5LT5vKTsKKyAg
ICBpZiAoIXRoZW1lUGFydENhY2hlRW50cnlSZXNldChlbnRyeSwgdHlwZSkpIHsKKyAgICAgICAg
ZXZhc19vYmplY3RfZGVsKGVudHJ5LT5vKTsKKyAgICAgICAgZWNvcmVfZXZhc19mcmVlKGVudHJ5
LT5lZSk7CisgICAgICAgIGRlbGV0ZSBlbnRyeTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
Ci0gICAgaWYgKCF0aGVtZVBhcnRDYWNoZUVudHJ5U3VyZmFjZUNyZWF0ZShjZSkpIHsKLSAgICAg
ICAgZXZhc19vYmplY3RfZGVsKGNlLT5vKTsKLSAgICAgICAgZWNvcmVfZXZhc19mcmVlKGNlLT5l
ZSk7Ci0gICAgICAgIGRlbGV0ZSBjZTsKKyAgICBpZiAoIXRoZW1lUGFydENhY2hlRW50cnlTdXJm
YWNlQ3JlYXRlKGVudHJ5KSkgeworICAgICAgICBldmFzX29iamVjdF9kZWwoZW50cnktPm8pOwor
ICAgICAgICBlY29yZV9ldmFzX2ZyZWUoZW50cnktPmVlKTsKKyAgICAgICAgZGVsZXRlIGVudHJ5
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBldmFzX29iamVjdF9yZXNpemUoY2Ut
Pm8sIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZXZhc19vYmplY3Rfc2hvdyhj
ZS0+byk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKGVudHJ5LT5vLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOworICAgIGV2YXNfb2JqZWN0X3Nob3coZW50cnktPm8pOwogCi0gICAgY2Ut
PnR5cGUgPSB0eXBlOwotICAgIGNlLT5zaXplID0gc2l6ZTsKKyAgICBlbnRyeS0+dHlwZSA9IHR5
cGU7CisgICAgZW50cnktPnNpemUgPSBzaXplOwogCi0gICAgbV9wYXJ0Q2FjaGUucHJlcGVuZChj
ZSk7Ci0gICAgcmV0dXJuIGNlOworICAgIG1fcGFydENhY2hlLnByZXBlbmQoZW50cnkpOworICAg
IHJldHVybiBlbnRyeTsKIH0KIAogLy8ganVzdCBjaGFuZ2UgdGhlIGVkamUgZ3JvdXAgYW5kIHJl
dHVybiB0aGUgc2FtZSBlbnRyeQotc3RydWN0IFJlbmRlclRoZW1lRWZsOjpUaGVtZVBhcnRDYWNo
ZUVudHJ5KiBSZW5kZXJUaGVtZUVmbDo6Y2FjaGVUaGVtZVBhcnRSZXNldChGb3JtVHlwZSB0eXBl
LCBzdHJ1Y3QgUmVuZGVyVGhlbWVFZmw6OlRoZW1lUGFydENhY2hlRW50cnkqIGNlKQorc3RydWN0
IFJlbmRlclRoZW1lRWZsOjpUaGVtZVBhcnRDYWNoZUVudHJ5KiBSZW5kZXJUaGVtZUVmbDo6Y2Fj
aGVUaGVtZVBhcnRSZXNldChGb3JtVHlwZSB0eXBlLCBzdHJ1Y3QgUmVuZGVyVGhlbWVFZmw6OlRo
ZW1lUGFydENhY2hlRW50cnkqIGVudHJ5KQogewotICAgIGlmICghdGhlbWVQYXJ0Q2FjaGVFbnRy
eVJlc2V0KGNlLCB0eXBlKSkgewotICAgICAgICBjZS0+dHlwZSA9IEZvcm1UeXBlTGFzdDsgLy8g
aW52YWxpZGF0ZQotICAgICAgICBtX3BhcnRDYWNoZS5hcHBlbmQoY2UpOworICAgIGlmICghdGhl
bWVQYXJ0Q2FjaGVFbnRyeVJlc2V0KGVudHJ5LCB0eXBlKSkgeworICAgICAgICBlbnRyeS0+dHlw
ZSA9IEZvcm1UeXBlTGFzdDsgLy8gaW52YWxpZGF0ZQorICAgICAgICBtX3BhcnRDYWNoZS5hcHBl
bmQoZW50cnkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgY2UtPnR5cGUgPSB0eXBl
OwotICAgIG1fcGFydENhY2hlLnByZXBlbmQoY2UpOwotICAgIHJldHVybiBjZTsKKyAgICBlbnRy
eS0+dHlwZSA9IHR5cGU7CisgICAgbV9wYXJ0Q2FjaGUucHJlcGVuZChlbnRyeSk7CisgICAgcmV0
dXJuIGVudHJ5OwogfQogCiAvLyByZXNpemUgZW50cnkgYW5kIHJlc2V0IGl0Ci1zdHJ1Y3QgUmVu
ZGVyVGhlbWVFZmw6OlRoZW1lUGFydENhY2hlRW50cnkqIFJlbmRlclRoZW1lRWZsOjpjYWNoZVRo
ZW1lUGFydFJlc2l6ZUFuZFJlc2V0KEZvcm1UeXBlIHR5cGUsIGNvbnN0IEludFNpemUmIHNpemUs
IHN0cnVjdCBSZW5kZXJUaGVtZUVmbDo6VGhlbWVQYXJ0Q2FjaGVFbnRyeSogY2UpCitzdHJ1Y3Qg
UmVuZGVyVGhlbWVFZmw6OlRoZW1lUGFydENhY2hlRW50cnkqIFJlbmRlclRoZW1lRWZsOjpjYWNo
ZVRoZW1lUGFydFJlc2l6ZUFuZFJlc2V0KEZvcm1UeXBlIHR5cGUsIGNvbnN0IEludFNpemUmIHNp
emUsIHN0cnVjdCBSZW5kZXJUaGVtZUVmbDo6VGhlbWVQYXJ0Q2FjaGVFbnRyeSogZW50cnkpCiB7
Ci0gICAgY2Fpcm9fc3VyZmFjZV9maW5pc2goY2UtPnN1cmZhY2UpOwotICAgIGVjb3JlX2V2YXNf
cmVzaXplKGNlLT5lZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBldmFzX29i
amVjdF9yZXNpemUoY2UtPm8sIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fp
cm9fc3VyZmFjZV9maW5pc2goZW50cnktPnN1cmZhY2UpOworICAgIGVjb3JlX2V2YXNfcmVzaXpl
KGVudHJ5LT5lZSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICBldmFzX29iamVj
dF9yZXNpemUoZW50cnktPm8sIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiAKLSAgICBp
ZiAoIXRoZW1lUGFydENhY2hlRW50cnlTdXJmYWNlQ3JlYXRlKGNlKSkgewotICAgICAgICBldmFz
X29iamVjdF9kZWwoY2UtPm8pOwotICAgICAgICBlY29yZV9ldmFzX2ZyZWUoY2UtPmVlKTsKLSAg
ICAgICAgZGVsZXRlIGNlOworICAgIGlmICghdGhlbWVQYXJ0Q2FjaGVFbnRyeVN1cmZhY2VDcmVh
dGUoZW50cnkpKSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2RlbChlbnRyeS0+byk7CisgICAgICAg
IGVjb3JlX2V2YXNfZnJlZShlbnRyeS0+ZWUpOworICAgICAgICBkZWxldGUgZW50cnk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiBjYWNoZVRoZW1lUGFydFJlc2V0KHR5
cGUsIGNlKTsKKyAgICByZXR1cm4gY2FjaGVUaGVtZVBhcnRSZXNldCh0eXBlLCBlbnRyeSk7CiB9
CiAKIC8vIGdlbmVyYWwgcHVycG9zZSBnZXQgKHdpbGwgY3JlYXRlLCByZXVzZSBhbmQgYWxsKQpA
QCAtMTk3LDExICsxOTcsMTEgQEAgc3RydWN0IFJlbmRlclRoZW1lRWZsOjpUaGVtZVBhcnRDYWNo
ZUVudHJ5KiBSZW5kZXJUaGVtZUVmbDo6Y2FjaGVUaGVtZVBhcnRHZXQoRm8KICAgICBpdHIgPSBt
X3BhcnRDYWNoZS5iZWdpbigpOwogICAgIGVuZCA9IG1fcGFydENhY2hlLmVuZCgpOwogICAgIGZv
ciAoaSA9IDA7IGl0ciAhPSBlbmQ7IGkrKywgaXRyKyspIHsKLSAgICAgICAgc3RydWN0IFRoZW1l
UGFydENhY2hlRW50cnkgKmNlID0gKml0cjsKLSAgICAgICAgaWYgKGNlLT5zaXplID09IHNpemUp
IHsKLSAgICAgICAgICAgIGlmIChjZS0+dHlwZSA9PSB0eXBlKQotICAgICAgICAgICAgICAgIHJl
dHVybiBjZTsKLSAgICAgICAgICAgIGNlX2xhc3Rfc2l6ZSA9IGNlOworICAgICAgICBzdHJ1Y3Qg
VGhlbWVQYXJ0Q2FjaGVFbnRyeSAqZW50cnkgPSAqaXRyOworICAgICAgICBpZiAoZW50cnktPnNp
emUgPT0gc2l6ZSkgeworICAgICAgICAgICAgaWYgKGVudHJ5LT50eXBlID09IHR5cGUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGVudHJ5OworICAgICAgICAgICAgY2VfbGFzdF9zaXplID0gZW50
cnk7CiAgICAgICAgICAgICBpZHhMYXN0U2l6ZSA9IGk7CiAgICAgICAgIH0KICAgICB9CkBAIC0y
MTQsOSArMjE0LDkgQEAgc3RydWN0IFJlbmRlclRoZW1lRWZsOjpUaGVtZVBhcnRDYWNoZUVudHJ5
KiBSZW5kZXJUaGVtZUVmbDo6Y2FjaGVUaGVtZVBhcnRHZXQoRm8KICAgICAgICAgcmV0dXJuIGNh
Y2hlVGhlbWVQYXJ0UmVzZXQodHlwZSwgY2VfbGFzdF9zaXplKTsKICAgICB9CiAKLSAgICBUaGVt
ZVBhcnRDYWNoZUVudHJ5KiBjZSA9IG1fcGFydENhY2hlLmxhc3QoKTsKKyAgICBUaGVtZVBhcnRD
YWNoZUVudHJ5KiBlbnRyeSA9IG1fcGFydENhY2hlLmxhc3QoKTsKICAgICBtX3BhcnRDYWNoZS5y
ZW1vdmVMYXN0KCk7Ci0gICAgcmV0dXJuIGNhY2hlVGhlbWVQYXJ0UmVzaXplQW5kUmVzZXQodHlw
ZSwgc2l6ZSwgY2UpOworICAgIHJldHVybiBjYWNoZVRoZW1lUGFydFJlc2l6ZUFuZFJlc2V0KHR5
cGUsIHNpemUsIGVudHJ5KTsKIH0KIAogdm9pZCBSZW5kZXJUaGVtZUVmbDo6Y2FjaGVUaGVtZVBh
cnRGbHVzaCgpCkBAIC0yMjYsMTYgKzIyNiwxNiBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjpjYWNo
ZVRoZW1lUGFydEZsdXNoKCkKICAgICBpdHIgPSBtX3BhcnRDYWNoZS5iZWdpbigpOwogICAgIGVu
ZCA9IG1fcGFydENhY2hlLmVuZCgpOwogICAgIGZvciAoOyBpdHIgIT0gZW5kOyBpdHIrKykgewot
ICAgICAgICBzdHJ1Y3QgVGhlbWVQYXJ0Q2FjaGVFbnRyeSAqY2UgPSAqaXRyOwotICAgICAgICBj
YWlyb19zdXJmYWNlX2ZpbmlzaChjZS0+c3VyZmFjZSk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2Rl
bChjZS0+byk7Ci0gICAgICAgIGVjb3JlX2V2YXNfZnJlZShjZS0+ZWUpOwotICAgICAgICBkZWxl
dGUgY2U7CisgICAgICAgIHN0cnVjdCBUaGVtZVBhcnRDYWNoZUVudHJ5ICplbnRyeSA9ICppdHI7
CisgICAgICAgIGNhaXJvX3N1cmZhY2VfZmluaXNoKGVudHJ5LT5zdXJmYWNlKTsKKyAgICAgICAg
ZXZhc19vYmplY3RfZGVsKGVudHJ5LT5vKTsKKyAgICAgICAgZWNvcmVfZXZhc19mcmVlKGVudHJ5
LT5lZSk7CisgICAgICAgIGRlbGV0ZSBlbnRyeTsKICAgICB9CiAgICAgbV9wYXJ0Q2FjaGUuY2xl
YXIoKTsKIH0KIAotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3RhdGVGcm9tRm9ybShF
dmFzX09iamVjdCogbywgQ29udHJvbFN0YXRlcyBzdGF0ZXMpCit2b2lkIFJlbmRlclRoZW1lRWZs
OjphcHBseUVkamVTdGF0ZUZyb21Gb3JtKEV2YXNfT2JqZWN0KiBvYmplY3QsIENvbnRyb2xTdGF0
ZXMgc3RhdGVzKQogewogICAgIGNvbnN0IGNoYXIgKnNpZ25hbHNbXSA9IHsgLy8ga2VlcCBpbiBz
eW5jIHdpdGggV2ViQ29yZS9wbGF0Zm9ybS9UaGVtZVR5cGVzLmgKICAgICAgICAgImhvdmVyZWQi
LApAQCAtMjQ5LDM3ICsyNDksMzcgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlFZGplU3Rh
dGVGcm9tRm9ybShFdmFzX09iamVjdCogbywgQ29udHJvbFN0YXRlcyBzdGF0ZXMKICAgICAgICAg
ImluZGV0ZXJtaW5hdGUiCiAgICAgfTsKIAotICAgIGVkamVfb2JqZWN0X3NpZ25hbF9lbWl0KG8s
ICJyZXNldCIsICIiKTsKKyAgICBlZGplX29iamVjdF9zaWduYWxfZW1pdChvYmplY3QsICJyZXNl
dCIsICIiKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChz
aWduYWxzKTsgKytpKSB7CiAgICAgICAgIGlmIChzdGF0ZXMgJiAoMSA8PCBpKSkKLSAgICAgICAg
ICAgIGVkamVfb2JqZWN0X3NpZ25hbF9lbWl0KG8sIHNpZ25hbHNbaV0sICIiKTsKKyAgICAgICAg
ICAgIGVkamVfb2JqZWN0X3NpZ25hbF9lbWl0KG9iamVjdCwgc2lnbmFsc1tpXSwgIiIpOwogICAg
IH0KIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0
KiBvLCBGb3JtVHlwZSB0eXBlLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJl
Y3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqIG9i
amVjdCwgRm9ybVR5cGUgdHlwZSwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewotICAgIFRoZW1lUGFydENhY2hlRW50cnkqIGNlOworICAgIFRoZW1lUGFydENh
Y2hlRW50cnkqIGVudHJ5OwogICAgIEVpbmFfTGlzdCogdXBkYXRlczsKICAgICBjYWlyb190KiBj
YWlybzsKIAogICAgIEFTU0VSVChtX2NhbnZhcyk7CiAgICAgQVNTRVJUKG1fZWRqZSk7CiAKLSAg
ICBjZSA9IGNhY2hlVGhlbWVQYXJ0R2V0KHR5cGUsIHJlY3Quc2l6ZSgpKTsKLSAgICBBU1NFUlQo
Y2UpOwotICAgIGlmICghY2UpCisgICAgZW50cnkgPSBjYWNoZVRoZW1lUGFydEdldCh0eXBlLCBy
ZWN0LnNpemUoKSk7CisgICAgQVNTRVJUKGVudHJ5KTsKKyAgICBpZiAoIWVudHJ5KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBhcHBseUVkamVTdGF0ZUZyb21Gb3JtKGNlLT5vLCBjb250
cm9sU3RhdGVzRm9yUmVuZGVyZXIobykpOworICAgIGFwcGx5RWRqZVN0YXRlRnJvbUZvcm0oZW50
cnktPm8sIGNvbnRyb2xTdGF0ZXNGb3JSZW5kZXJlcihvYmplY3QpKTsKIAotICAgIGNhaXJvID0g
aS5jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKKyAgICBjYWlybyA9IGluZm8uY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgQVNTRVJUKGNhaXJvKTsKIAogICAgIC8vIEN1cnJlbnRs
eSwgb25seSBzbGlkZXJzIG5lZWRzIHRoaXMgbWVzc2FnZTsgaWYgb3RoZXIgd2lkZ2V0IGV2ZXIg
bmVlZHMgc3BlY2lhbAogICAgIC8vIHRyZWF0bWVudCwgbW92ZSB0aGVtIHRvIHNwZWNpYWwgZnVu
Y3Rpb25zLgogICAgIGlmICh0eXBlID09IFNsaWRlclZlcnRpY2FsIHx8IHR5cGUgPT0gU2xpZGVy
SG9yaXpvbnRhbCkgewotICAgICAgICBSZW5kZXJTbGlkZXIqIHJlbmRlclNsaWRlciA9IHRvUmVu
ZGVyU2xpZGVyKG8pOworICAgICAgICBSZW5kZXJTbGlkZXIqIHJlbmRlclNsaWRlciA9IHRvUmVu
ZGVyU2xpZGVyKG9iamVjdCk7CiAgICAgICAgIEVkamVfTWVzc2FnZV9GbG9hdF9TZXQqIG1zZzsK
ICAgICAgICAgaW50IG1heCwgdmFsdWU7CiAKQEAgLTI5Niw3ICsyOTYsNyBAQCBib29sIFJlbmRl
clRoZW1lRWZsOjpwYWludFRoZW1lUGFydChSZW5kZXJPYmplY3QqIG8sIEZvcm1UeXBlIHR5cGUs
IGNvbnN0IFBhaW50SQogICAgICAgICBtc2ctPmNvdW50ID0gMjsKICAgICAgICAgbXNnLT52YWxb
MF0gPSBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpIC8gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1heCk7
CiAgICAgICAgIG1zZy0+dmFsWzFdID0gMC4xOwotICAgICAgICBlZGplX29iamVjdF9tZXNzYWdl
X3NlbmQoY2UtPm8sIEVESkVfTUVTU0FHRV9GTE9BVF9TRVQsIDAsIG1zZyk7CisgICAgICAgIGVk
amVfb2JqZWN0X21lc3NhZ2Vfc2VuZChlbnRyeS0+bywgRURKRV9NRVNTQUdFX0ZMT0FUX1NFVCwg
MCwgbXNnKTsKICNpZiBFTkFCTEUoUFJPR1JFU1NfVEFHKQogICAgIH0gZWxzZSBpZiAodHlwZSA9
PSBQcm9ncmVzc0JhcikgewogICAgICAgICBSZW5kZXJQcm9ncmVzcyogcmVuZGVyUHJvZ3Jlc3Mg
PSB0b1JlbmRlclByb2dyZXNzKG8pOwpAQCAtMzE0LDE3ICszMTQsMTcgQEAgYm9vbCBSZW5kZXJU
aGVtZUVmbDo6cGFpbnRUaGVtZVBhcnQoUmVuZGVyT2JqZWN0KiBvLCBGb3JtVHlwZSB0eXBlLCBj
b25zdCBQYWludEkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbXNnLT52YWxbMF0gPSAwOwog
ICAgICAgICBtc2ctPnZhbFsxXSA9IHZhbHVlOwotICAgICAgICBlZGplX29iamVjdF9tZXNzYWdl
X3NlbmQoY2UtPm8sIEVESkVfTUVTU0FHRV9GTE9BVF9TRVQsIDAsIG1zZyk7CisgICAgICAgIGVk
amVfb2JqZWN0X21lc3NhZ2Vfc2VuZChlbnRyeS0+bywgRURKRV9NRVNTQUdFX0ZMT0FUX1NFVCwg
MCwgbXNnKTsKICNlbmRpZgogICAgIH0KIAotICAgIGVkamVfb2JqZWN0X2NhbGNfZm9yY2UoY2Ut
Pm8pOwotICAgIGVkamVfb2JqZWN0X21lc3NhZ2Vfc2lnbmFsX3Byb2Nlc3MoY2UtPm8pOwotICAg
IHVwZGF0ZXMgPSBldmFzX3JlbmRlcl91cGRhdGVzKGVjb3JlX2V2YXNfZ2V0KGNlLT5lZSkpOwor
ICAgIGVkamVfb2JqZWN0X2NhbGNfZm9yY2UoZW50cnktPm8pOworICAgIGVkamVfb2JqZWN0X21l
c3NhZ2Vfc2lnbmFsX3Byb2Nlc3MoZW50cnktPm8pOworICAgIHVwZGF0ZXMgPSBldmFzX3JlbmRl
cl91cGRhdGVzKGVjb3JlX2V2YXNfZ2V0KGVudHJ5LT5lZSkpOwogICAgIGV2YXNfcmVuZGVyX3Vw
ZGF0ZXNfZnJlZSh1cGRhdGVzKTsKIAogICAgIGNhaXJvX3NhdmUoY2Fpcm8pOwotICAgIGNhaXJv
X3NldF9zb3VyY2Vfc3VyZmFjZShjYWlybywgY2UtPnN1cmZhY2UsIHJlY3QueCgpLCByZWN0Lnko
KSk7CisgICAgY2Fpcm9fc2V0X3NvdXJjZV9zdXJmYWNlKGNhaXJvLCBlbnRyeS0+c3VyZmFjZSwg
cmVjdC54KCksIHJlY3QueSgpKTsKICAgICBjYWlyb19wYWludF93aXRoX2FscGhhKGNhaXJvLCAx
LjApOwogICAgIGNhaXJvX3Jlc3RvcmUoY2Fpcm8pOwogCkBAIC0zNDUsNzcgKzM0NSw3NyBAQCBQ
YXNzUmVmUHRyPFJlbmRlclRoZW1lPiBSZW5kZXJUaGVtZTo6dGhlbWVGb3JQYWdlKFBhZ2UqIHBh
Z2UpCiAgICAgcmV0dXJuIGZhbGxiYWNrOwogfQogCi1zdGF0aWMgdm9pZCByZW5kZXJUaGVtZUVm
bENvbG9yQ2xhc3NTZWxlY3Rpb25BY3RpdmUodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIG8sIGNv
bnN0IGNoYXIqIHNpZ25hbCwgY29uc3QgY2hhciogc291cmNlKQorc3RhdGljIHZvaWQgcmVuZGVy
VGhlbWVFZmxDb2xvckNsYXNzU2VsZWN0aW9uQWN0aXZlKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0
KiBvYmplY3QsIGNvbnN0IGNoYXIqIHNpZ25hbCwgY29uc3QgY2hhciogc291cmNlKQogewogICAg
IFJlbmRlclRoZW1lRWZsKiB0aGF0ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0
YSk7CiAgICAgaW50IGZyLCBmZywgZmIsIGZhLCBiciwgYmcsIGJiLCBiYTsKIAotICAgIGlmICgh
ZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG8sIHNvdXJjZSwgJmZyLCAmZmcsICZmYiwgJmZh
LCAmYnIsICZiZywgJmJiLCAmYmEsIDAsIDAsIDAsIDApKQorICAgIGlmICghZWRqZV9vYmplY3Rf
Y29sb3JfY2xhc3NfZ2V0KG9iamVjdCwgc291cmNlLCAmZnIsICZmZywgJmZiLCAmZmEsICZiciwg
JmJnLCAmYmIsICZiYSwgMCwgMCwgMCwgMCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRoYXQt
PnNldEFjdGl2ZVNlbGVjdGlvbkNvbG9yKGZyLCBmZywgZmIsIGZhLCBiciwgYmcsIGJiLCBiYSk7
CiB9CiAKLXN0YXRpYyB2b2lkIHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVjdGlvbkluYWN0
aXZlKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzaWduYWwsIGNvbnN0
IGNoYXIqIHNvdXJjZSkKK3N0YXRpYyB2b2lkIHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlbGVj
dGlvbkluYWN0aXZlKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIq
IHNpZ25hbCwgY29uc3QgY2hhciogc291cmNlKQogewogICAgIFJlbmRlclRoZW1lRWZsKiB0aGF0
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwgKj4oZGF0YSk7CiAgICAgaW50IGZyLCBmZywg
ZmIsIGZhLCBiciwgYmcsIGJiLCBiYTsKIAotICAgIGlmICghZWRqZV9vYmplY3RfY29sb3JfY2xh
c3NfZ2V0KG8sIHNvdXJjZSwgJmZyLCAmZmcsICZmYiwgJmZhLCAmYnIsICZiZywgJmJiLCAmYmEs
IDAsIDAsIDAsIDApKQorICAgIGlmICghZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG9iamVj
dCwgc291cmNlLCAmZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgMCwgMCwg
MCwgMCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRoYXQtPnNldEluYWN0aXZlU2VsZWN0aW9u
Q29sb3IoZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhKTsKIH0KIAotc3RhdGljIHZvaWQg
cmVuZGVyVGhlbWVFZmxDb2xvckNsYXNzRm9jdXNSaW5nKHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0
KiBvLCBjb25zdCBjaGFyKiBzaWduYWwsIGNvbnN0IGNoYXIqIHNvdXJjZSkKK3N0YXRpYyB2b2lk
IHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc0ZvY3VzUmluZyh2b2lkKiBkYXRhLCBFdmFzX09iamVj
dCogb2JqZWN0LCBjb25zdCBjaGFyKiBzaWduYWwsIGNvbnN0IGNoYXIqIHNvdXJjZSkKIHsKICAg
ICBSZW5kZXJUaGVtZUVmbCogdGhhdCA9IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsICo+KGRh
dGEpOwogICAgIGludCBmciwgZmcsIGZiLCBmYTsKIAotICAgIGlmICghZWRqZV9vYmplY3RfY29s
b3JfY2xhc3NfZ2V0KG8sIHNvdXJjZSwgJmZyLCAmZmcsICZmYiwgJmZhLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwKSkKKyAgICBpZiAoIWVkamVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChvYmplY3Qs
IHNvdXJjZSwgJmZyLCAmZmcsICZmYiwgJmZhLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdGhhdC0+c2V0Rm9jdXNSaW5nQ29sb3IoZnIsIGZnLCBmYiwg
ZmEpOwogfQogCi1zdGF0aWMgdm9pZCByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NCdXR0b25UZXh0
KHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzaWduYWwsIGNvbnN0IGNo
YXIqIHNvdXJjZSkKK3N0YXRpYyB2b2lkIHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc0J1dHRvblRl
eHQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIG9iamVjdCwgY29uc3QgY2hhciogc2lnbmFsLCBj
b25zdCBjaGFyKiBzb3VyY2UpCiB7CiAgICAgUmVuZGVyVGhlbWVFZmwqIHRoYXQgPSBzdGF0aWNf
Y2FzdDxSZW5kZXJUaGVtZUVmbCAqPihkYXRhKTsKICAgICBpbnQgZnIsIGZnLCBmYiwgZmEsIGJy
LCBiZywgYmIsIGJhOwogCi0gICAgaWYgKCFlZGplX29iamVjdF9jb2xvcl9jbGFzc19nZXQobywg
c291cmNlLCAmZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgMCwgMCwgMCwg
MCkpCisgICAgaWYgKCFlZGplX29iamVjdF9jb2xvcl9jbGFzc19nZXQob2JqZWN0LCBzb3VyY2Us
ICZmciwgJmZnLCAmZmIsICZmYSwgJmJyLCAmYmcsICZiYiwgJmJhLCAwLCAwLCAwLCAwKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdGhhdC0+c2V0QnV0dG9uVGV4dENvbG9yKGZyLCBmZywgZmIs
IGZhLCBiciwgYmcsIGJiLCBiYSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlbmRlclRoZW1lRWZsQ29s
b3JDbGFzc0NvbWJvVGV4dCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCogbywgY29uc3QgY2hhciog
c2lnbmFsLCBjb25zdCBjaGFyKiBzb3VyY2UpCitzdGF0aWMgdm9pZCByZW5kZXJUaGVtZUVmbENv
bG9yQ2xhc3NDb21ib1RleHQodm9pZCogZGF0YSwgRXZhc19PYmplY3QqIG9iamVjdCwgY29uc3Qg
Y2hhciogc2lnbmFsLCBjb25zdCBjaGFyKiBzb3VyY2UpCiB7CiAgICAgUmVuZGVyVGhlbWVFZmwq
IHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCAqPihkYXRhKTsKICAgICBpbnQgZnIs
IGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhOwogCi0gICAgaWYgKCFlZGplX29iamVjdF9jb2xv
cl9jbGFzc19nZXQobywgc291cmNlLCAmZnIsICZmZywgJmZiLCAmZmEsICZiciwgJmJnLCAmYmIs
ICZiYSwgMCwgMCwgMCwgMCkpCisgICAgaWYgKCFlZGplX29iamVjdF9jb2xvcl9jbGFzc19nZXQo
b2JqZWN0LCBzb3VyY2UsICZmciwgJmZnLCAmZmIsICZmYSwgJmJyLCAmYmcsICZiYiwgJmJhLCAw
LCAwLCAwLCAwKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdGhhdC0+c2V0Q29tYm9UZXh0Q29s
b3IoZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJhKTsKIH0KIAotc3RhdGljIHZvaWQgcmVu
ZGVyVGhlbWVFZmxDb2xvckNsYXNzRW50cnlUZXh0KHZvaWQqIGRhdGEsIEV2YXNfT2JqZWN0KiBv
LCBjb25zdCBjaGFyKiBzaWduYWwsIGNvbnN0IGNoYXIqIHNvdXJjZSkKK3N0YXRpYyB2b2lkIHJl
bmRlclRoZW1lRWZsQ29sb3JDbGFzc0VudHJ5VGV4dCh2b2lkKiBkYXRhLCBFdmFzX09iamVjdCog
b2JqZWN0LCBjb25zdCBjaGFyKiBzaWduYWwsIGNvbnN0IGNoYXIqIHNvdXJjZSkKIHsKICAgICBS
ZW5kZXJUaGVtZUVmbCogdGhhdCA9IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsICo+KGRhdGEp
OwogICAgIGludCBmciwgZmcsIGZiLCBmYSwgYnIsIGJnLCBiYiwgYmE7CiAKLSAgICBpZiAoIWVk
amVfb2JqZWN0X2NvbG9yX2NsYXNzX2dldChvLCBzb3VyY2UsICZmciwgJmZnLCAmZmIsICZmYSwg
JmJyLCAmYmcsICZiYiwgJmJhLCAwLCAwLCAwLCAwKSkKKyAgICBpZiAoIWVkamVfb2JqZWN0X2Nv
bG9yX2NsYXNzX2dldChvYmplY3QsIHNvdXJjZSwgJmZyLCAmZmcsICZmYiwgJmZhLCAmYnIsICZi
ZywgJmJiLCAmYmEsIDAsIDAsIDAsIDApKQogICAgICAgICByZXR1cm47CiAKICAgICB0aGF0LT5z
ZXRFbnRyeVRleHRDb2xvcihmciwgZmcsIGZiLCBmYSwgYnIsIGJnLCBiYiwgYmEpOwogfQogCi1z
dGF0aWMgdm9pZCByZW5kZXJUaGVtZUVmbENvbG9yQ2xhc3NTZWFyY2hUZXh0KHZvaWQqIGRhdGEs
IEV2YXNfT2JqZWN0KiBvLCBjb25zdCBjaGFyKiBzaWduYWwsIGNvbnN0IGNoYXIqIHNvdXJjZSkK
K3N0YXRpYyB2b2lkIHJlbmRlclRoZW1lRWZsQ29sb3JDbGFzc1NlYXJjaFRleHQodm9pZCogZGF0
YSwgRXZhc19PYmplY3QqIG9iamVjdCwgY29uc3QgY2hhciogc2lnbmFsLCBjb25zdCBjaGFyKiBz
b3VyY2UpCiB7CiAgICAgUmVuZGVyVGhlbWVFZmwqIHRoYXQgPSBzdGF0aWNfY2FzdDxSZW5kZXJU
aGVtZUVmbCAqPihkYXRhKTsKICAgICBpbnQgZnIsIGZnLCBmYiwgZmEsIGJyLCBiZywgYmIsIGJh
OwotICAgIGlmICghZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG8sIHNvdXJjZSwgJmZyLCAm
ZmcsICZmYiwgJmZhLCAmYnIsICZiZywgJmJiLCAmYmEsIDAsIDAsIDAsIDApKQorICAgIGlmICgh
ZWRqZV9vYmplY3RfY29sb3JfY2xhc3NfZ2V0KG9iamVjdCwgc291cmNlLCAmZnIsICZmZywgJmZi
LCAmZmEsICZiciwgJmJnLCAmYmIsICZiYSwgMCwgMCwgMCwgMCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHRoYXQtPnNldFNlYXJjaFRleHRDb2xvcihmciwgZmcsIGZiLCBmYSwgYnIsIGJnLCBi
YiwgYmEpOwpAQCAtNTIyLDIyICs1MjIsMjIgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YXBwbHlQ
YXJ0RGVzY3JpcHRpb25GYWxsYmFjayhzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyogZGVzYykKICAgICBk
ZXNjLT5wYWRkaW5nID0gTGVuZ3RoQm94KDAsIDAsIDAsIDApOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlvbihFdmFzX09iamVjdCogbywgc3RydWN0IFRoZW1l
UGFydERlc2MqIGRlc2MpCit2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNjcmlwdGlv
bihFdmFzX09iamVjdCogb2JqZWN0LCBzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyogZGVzYykKIHsKICAg
ICBFdmFzX0Nvb3JkIG1pbncsIG1pbmgsIG1heHcsIG1heGg7CiAKLSAgICBlZGplX29iamVjdF9z
aXplX21pbl9nZXQobywgJm1pbncsICZtaW5oKTsKKyAgICBlZGplX29iamVjdF9zaXplX21pbl9n
ZXQob2JqZWN0LCAmbWludywgJm1pbmgpOwogICAgIGlmICghbWludyAmJiAhbWluaCkKLSAgICAg
ICAgZWRqZV9vYmplY3Rfc2l6ZV9taW5fY2FsYyhvLCAmbWludywgJm1pbmgpOworICAgICAgICBl
ZGplX29iamVjdF9zaXplX21pbl9jYWxjKG9iamVjdCwgJm1pbncsICZtaW5oKTsKIAogICAgIGRl
c2MtPm1pbi5zZXRXaWR0aChMZW5ndGgobWludywgRml4ZWQpKTsKICAgICBkZXNjLT5taW4uc2V0
SGVpZ2h0KExlbmd0aChtaW5oLCBGaXhlZCkpOwogCi0gICAgZWRqZV9vYmplY3Rfc2l6ZV9tYXhf
Z2V0KG8sICZtYXh3LCAmbWF4aCk7CisgICAgZWRqZV9vYmplY3Rfc2l6ZV9tYXhfZ2V0KG9iamVj
dCwgJm1heHcsICZtYXhoKTsKICAgICBkZXNjLT5tYXguc2V0V2lkdGgoTGVuZ3RoKG1heHcsIEZp
eGVkKSk7CiAgICAgZGVzYy0+bWF4LnNldEhlaWdodChMZW5ndGgobWF4aCwgRml4ZWQpKTsKIAot
ICAgIGlmICghZWRqZV9vYmplY3RfcGFydF9leGlzdHMobywgInRleHRfY29uZmluZW1lbnQiKSkK
KyAgICBpZiAoIWVkamVfb2JqZWN0X3BhcnRfZXhpc3RzKG9iamVjdCwgInRleHRfY29uZmluZW1l
bnQiKSkKICAgICAgICAgZGVzYy0+cGFkZGluZyA9IExlbmd0aEJveCgwLCAwLCAwLCAwKTsKICAg
ICBlbHNlIHsKICAgICAgICAgRXZhc19Db29yZCBweCwgcHksIHB3LCBwaDsKQEAgLTU1NywxMSAr
NTU3LDExIEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9uKEV2YXNf
T2JqZWN0KiBvLCBzdHJ1Y3QgVGhlbWVQYXJ0RGVzYyoKICAgICAgICAgaWYgKG1heGggPiAwICYm
IG9oID4gbWF4aCkKICAgICAgICAgICAgIG9oID0gbWF4aDsKIAotICAgICAgICBldmFzX29iamVj
dF9tb3ZlKG8sIG94LCBveSk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShvLCBvdywgb2gp
OwotICAgICAgICBlZGplX29iamVjdF9jYWxjX2ZvcmNlKG8pOwotICAgICAgICBlZGplX29iamVj
dF9tZXNzYWdlX3NpZ25hbF9wcm9jZXNzKG8pOwotICAgICAgICBlZGplX29iamVjdF9wYXJ0X2dl
b21ldHJ5X2dldChvLCAidGV4dF9jb25maW5lbWVudCIsICZweCwgJnB5LCAmcHcsICZwaCk7Cisg
ICAgICAgIGV2YXNfb2JqZWN0X21vdmUob2JqZWN0LCBveCwgb3kpOworICAgICAgICBldmFzX29i
amVjdF9yZXNpemUob2JqZWN0LCBvdywgb2gpOworICAgICAgICBlZGplX29iamVjdF9jYWxjX2Zv
cmNlKG9iamVjdCk7CisgICAgICAgIGVkamVfb2JqZWN0X21lc3NhZ2Vfc2lnbmFsX3Byb2Nlc3Mo
b2JqZWN0KTsKKyAgICAgICAgZWRqZV9vYmplY3RfcGFydF9nZW9tZXRyeV9nZXQob2JqZWN0LCAi
dGV4dF9jb25maW5lbWVudCIsICZweCwgJnB5LCAmcHcsICZwaCk7CiAKICAgICAgICAgdCA9IHB5
IC0gb3k7CiAgICAgICAgIGIgPSAob2ggKyBveSkgLSAocGggKyBweSk7CkBAIC02MDIsNyArNjAy
LDcgQEAgY29uc3QgY2hhciogUmVuZGVyVGhlbWVFZmw6OmVkamVHcm91cEZyb21Gb3JtVHlwZShG
b3JtVHlwZSB0eXBlKSBjb25zdAogCiB2b2lkIFJlbmRlclRoZW1lRWZsOjphcHBseVBhcnREZXNj
cmlwdGlvbnMoKQogewotICAgIEV2YXNfT2JqZWN0KiBvOworICAgIEV2YXNfT2JqZWN0KiBvYmpl
Y3Q7CiAgICAgdW5zaWduZWQgaW50IGk7CiAgICAgY29uc3QgY2hhciogZmlsZTsKIApAQCAtNjEy
LDggKzYxMiw4IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFydERlc2NyaXB0aW9ucygp
CiAgICAgZWRqZV9vYmplY3RfZmlsZV9nZXQobV9lZGplLCAmZmlsZSwgMCk7CiAgICAgQVNTRVJU
KGZpbGUpOwogCi0gICAgbyA9IGVkamVfb2JqZWN0X2FkZChlY29yZV9ldmFzX2dldChtX2NhbnZh
cykpOwotICAgIGlmICghbykgeworICAgIG9iamVjdCA9IGVkamVfb2JqZWN0X2FkZChlY29yZV9l
dmFzX2dldChtX2NhbnZhcykpOworICAgIGlmICghb2JqZWN0KSB7CiAgICAgICAgIEVJTkFfTE9H
X0VSUigiQ291bGQgbm90IGNyZWF0ZSBFZGplIG9iamVjdC4iKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTYyMiwxNyArNjIyLDE3IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFwcGx5UGFy
dERlc2NyaXB0aW9ucygpCiAgICAgICAgIEZvcm1UeXBlIHR5cGUgPSBzdGF0aWNfY2FzdDxGb3Jt
VHlwZT4oaSk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGdyb3VwID0gZWRqZUdyb3VwRnJvbUZvcm1U
eXBlKHR5cGUpOwogICAgICAgICBtX3BhcnREZXNjc1tpXS50eXBlID0gdHlwZTsKLSAgICAgICAg
aWYgKCFlZGplX29iamVjdF9maWxlX3NldChvLCBmaWxlLCBncm91cCkpIHsKLSAgICAgICAgICAg
IEVkamVfTG9hZF9FcnJvciBlcnIgPSBlZGplX29iamVjdF9sb2FkX2Vycm9yX2dldChvKTsKKyAg
ICAgICAgaWYgKCFlZGplX29iamVjdF9maWxlX3NldChvYmplY3QsIGZpbGUsIGdyb3VwKSkgewor
ICAgICAgICAgICAgRWRqZV9Mb2FkX0Vycm9yIGVyciA9IGVkamVfb2JqZWN0X2xvYWRfZXJyb3Jf
Z2V0KG9iamVjdCk7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiBlcnJtc2cgPSBlZGplX2xvYWRf
ZXJyb3Jfc3RyKGVycik7CiAgICAgICAgICAgICBFSU5BX0xPR19FUlIoIkNvdWxkIG5vdCBzZXQg
dGhlbWUgZ3JvdXAgJyVzJyBvZiBmaWxlICclcyc6ICVzIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICBncm91cCwgZmlsZSwgZXJybXNnKTsKIAogICAgICAgICAgICAgYXBwbHlQYXJ0RGVzY3Jp
cHRpb25GYWxsYmFjayhtX3BhcnREZXNjcyArIGkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIGFwcGx5UGFydERlc2NyaXB0aW9uKG8sIG1fcGFydERlc2NzICsgaSk7CisgICAgICAgICAg
ICBhcHBseVBhcnREZXNjcmlwdGlvbihvYmplY3QsIG1fcGFydERlc2NzICsgaSk7CiAgICAgfQot
ICAgIGV2YXNfb2JqZWN0X2RlbChvKTsKKyAgICBldmFzX29iamVjdF9kZWwob2JqZWN0KTsKIH0K
IAogdm9pZCBSZW5kZXJUaGVtZUVmbDo6dGhlbWVDaGFuZ2VkKCkKQEAgLTc2NywzNCArNzY3LDM0
IEBAIGJvb2wgUmVuZGVyVGhlbWVFZmw6OnN1cHBvcnRzRm9jdXNSaW5nKGNvbnN0IFJlbmRlclN0
eWxlKiBzdHlsZSkgY29uc3QKICAgICByZXR1cm4gc3VwcG9ydHNGb2N1cyhzdHlsZS0+YXBwZWFy
YW5jZSgpKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6Y29udHJvbFN1cHBvcnRzVGludHMo
Y29uc3QgUmVuZGVyT2JqZWN0KiBvKSBjb25zdAorYm9vbCBSZW5kZXJUaGVtZUVmbDo6Y29udHJv
bFN1cHBvcnRzVGludHMoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmplY3QpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGlzRW5hYmxlZChvKTsKKyAgICByZXR1cm4gaXNFbmFibGVkKG9iamVjdCk7CiB9CiAK
LWludCBSZW5kZXJUaGVtZUVmbDo6YmFzZWxpbmVQb3NpdGlvbihjb25zdCBSZW5kZXJPYmplY3Qq
IG8pIGNvbnN0CitpbnQgUmVuZGVyVGhlbWVFZmw6OmJhc2VsaW5lUG9zaXRpb24oY29uc3QgUmVu
ZGVyT2JqZWN0KiBvYmplY3QpIGNvbnN0CiB7Ci0gICAgaWYgKCFvLT5pc0JveCgpKQorICAgIGlm
ICghb2JqZWN0LT5pc0JveCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmIChvLT5zdHls
ZSgpLT5hcHBlYXJhbmNlKCkgPT0gQ2hlY2tib3hQYXJ0Ci0gICAgfHwgIG8tPnN0eWxlKCktPmFw
cGVhcmFuY2UoKSA9PSBSYWRpb1BhcnQpCi0gICAgICAgIHJldHVybiB0b1JlbmRlckJveChvKS0+
bWFyZ2luVG9wKCkgKyB0b1JlbmRlckJveChvKS0+aGVpZ2h0KCkgLSAzOworICAgIGlmIChvYmpl
Y3QtPnN0eWxlKCktPmFwcGVhcmFuY2UoKSA9PSBDaGVja2JveFBhcnQKKyAgICB8fCAgb2JqZWN0
LT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkgPT0gUmFkaW9QYXJ0KQorICAgICAgICByZXR1cm4gdG9S
ZW5kZXJCb3gob2JqZWN0KS0+bWFyZ2luVG9wKCkgKyB0b1JlbmRlckJveChvYmplY3QpLT5oZWln
aHQoKSAtIDM7CiAKLSAgICByZXR1cm4gUmVuZGVyVGhlbWU6OmJhc2VsaW5lUG9zaXRpb24obyk7
CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpiYXNlbGluZVBvc2l0aW9uKG9iamVjdCk7CiB9CiAK
LWJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1l
RWZsOjpwYWludFNsaWRlclRyYWNrKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludElu
Zm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKG8tPnN0eWxlKCktPmFw
cGVhcmFuY2UoKSA9PSBTbGlkZXJIb3Jpem9udGFsUGFydCkKLSAgICAgICAgcmV0dXJuIHBhaW50
VGhlbWVQYXJ0KG8sIFNsaWRlckhvcml6b250YWwsIGksIHJlY3QpOwotICAgIHJldHVybiBwYWlu
dFRoZW1lUGFydChvLCBTbGlkZXJWZXJ0aWNhbCwgaSwgcmVjdCk7CisgICAgaWYgKG9iamVjdC0+
c3R5bGUoKS0+YXBwZWFyYW5jZSgpID09IFNsaWRlckhvcml6b250YWxQYXJ0KQorICAgICAgICBy
ZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBTbGlkZXJIb3Jpem9udGFsLCBpbmZvLCByZWN0
KTsKKyAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBTbGlkZXJWZXJ0aWNhbCwgaW5m
bywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRlclRyYWNrU3R5
bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNsaWRlclRyYWNrU3R5bGUo
Q1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCog
ZWxlbWVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGFnZSAmJiBlICYmIGUtPmRvY3VtZW50KCkt
PnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGUtPmRvY3Vt
ZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNsaWRlclRyYWNrU3R5bGUoc2VsZWN0b3Is
IHN0eWxlLCBlKTsKKyAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKSkgeworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVs
ZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNsaWRlclRyYWNrU3R5
bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtODA4LDIwICs4MDgsMjAgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2xpZGVyVHJh
Y2tTdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3QKICAgICAgICAgc3R5
bGUtPnNldEhlaWdodChkZXNjLT5taW4uaGVpZ2h0KCkpOwogfQogCi12b2lkIFJlbmRlclRoZW1l
RWZsOjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBS
ZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZs
OjphZGp1c3RTbGlkZXJUaHVtYlN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgYWRqdXN0U2xp
ZGVyVHJhY2tTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgIGFkanVzdFNsaWRlclRyYWNr
U3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVm
bDo6cGFpbnRTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2xpZGVyVGh1
bWIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gcGFpbnRTbGlkZXJUcmFjayhvLCBpLCByZWN0KTsK
KyAgICByZXR1cm4gcGFpbnRTbGlkZXJUcmFjayhvYmplY3QsIGluZm8sIHJlY3QpOwogfQogCi12
b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKENTU1N0eWxlU2VsZWN0b3Iq
IHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2b2lkIFJl
bmRlclRoZW1lRWZsOjphZGp1c3RDaGVja2JveFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVj
dG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAg
aWYgKCFtX3BhZ2UgJiYgZSAmJiBlLT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlLT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkp
LT5hZGp1c3RDaGVja2JveFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgaWYgKCFtX3Bh
Z2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkt
PnRoZW1lKCkpLT5hZGp1c3RDaGVja2JveFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFpbnRzKHN0eWxl
LCBDaGVja0JveCk7CkBAIC04MzQsMTUgKzgzNCwxNSBAQCB2b2lkIFJlbmRlclRoZW1lRWZsOjph
ZGp1c3RDaGVja2JveFN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHls
ZQogICAgICAgICBzdHlsZS0+c2V0SGVpZ2h0KGRlc2MtPm1pbi5oZWlnaHQoKSk7CiB9CiAKLWJv
b2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50Q2hlY2tib3goUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQ
YWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpw
YWludENoZWNrYm94KFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG8sIENo
ZWNrQm94LCBpLCByZWN0KTsKKyAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBDaGVj
a0JveCwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFJhZGlv
U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxl
bWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFJhZGlvU3R5bGUoQ1NT
U3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxl
bWVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGFnZSAmJiBlICYmIGUtPmRvY3VtZW50KCktPnBh
Z2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGUtPmRvY3VtZW50
KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFJhZGlvU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBl
KTsKKyAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBh
Z2UoKSkgeworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRv
Y3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFJhZGlvU3R5bGUoc2VsZWN0b3IsIHN0
eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXplQ29u
c3RyYWludHMoc3R5bGUsIFJhZGlvQnV0dG9uKTsKQEAgLTg1NSwxNSArODU1LDE1IEBAIHZvaWQg
UmVuZGVyVGhlbWVFZmw6OmFkanVzdFJhZGlvU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzCiAgICAgICAgIHN0eWxlLT5zZXRIZWlnaHQoZGVzYy0+bWluLmhl
aWdodCgpKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRSYWRpbyhSZW5kZXJPYmpl
Y3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50UmFkaW8oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50
SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKLSAgICByZXR1cm4gcGFpbnRUaGVt
ZVBhcnQobywgUmFkaW9CdXR0b24sIGksIHJlY3QpOworICAgIHJldHVybiBwYWludFRoZW1lUGFy
dChvYmplY3QsIFJhZGlvQnV0dG9uLCBpbmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6YWRqdXN0QnV0dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFk
anVzdEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhZ2UgJiYgZSAm
JiBlLT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhl
bWVFZmwqPihlLT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RCdXR0b25TdHls
ZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgIGlmICghbV9wYWdlICYmIGVsZW1lbnQgJiYgZWxl
bWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7CisgICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRo
ZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0QnV0
dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtODc4LDE1ICs4NzgsMTUgQEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0QnV0
dG9uU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKgogICAgIH0K
IH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRCdXR0b24oUmVuZGVyT2JqZWN0KiBvLCBj
b25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1l
RWZsOjpwYWludEJ1dHRvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBwYWludFRoZW1lUGFydChv
LCBCdXR0b24sIGksIHJlY3QpOworICAgIHJldHVybiBwYWludFRoZW1lUGFydChvYmplY3QsIEJ1
dHRvbiwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdE1lbnVM
aXN0U3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwg
RWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdE1lbnVMaXN0U3R5
bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGFnZSAmJiBlICYmIGUtPmRvY3VtZW50
KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGUtPmRv
Y3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdE1lbnVMaXN0U3R5bGUoc2VsZWN0b3Is
IHN0eWxlLCBlKTsKKyAgICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPnBhZ2UoKSkgeworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVs
ZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdE1lbnVMaXN0U3R5bGUo
c2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBh
ZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIENvbWJvQm94KTsKQEAgLTg5NiwxNSArODk2LDE1
IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdE1lbnVMaXN0U3R5bGUoQ1NTU3R5bGVTZWxl
Y3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlCiAgICAgc3R5bGUtPnNldEJhY2tncm91bmRDb2xv
cihtX2NvbWJvVGV4dEJhY2tncm91bmRDb2xvcik7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6
OnBhaW50TWVudUxpc3QoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0
IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lbnVMaXN0KFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG8sIENvbWJvQm94LCBpLCByZWN0KTsK
KyAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBDb21ib0JveCwgaW5mbywgcmVjdCk7
CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFRleHRGaWVsZFN0eWxlKENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0
Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RUZXh0RmllbGRTdHlsZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlbGVtZW50KSBjb25z
dAogewotICAgIGlmICghbV9wYWdlICYmIGUgJiYgZS0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0g
ICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZsKj4oZS0+ZG9jdW1lbnQoKS0+cGFnZSgp
LT50aGVtZSgpKS0+YWRqdXN0VGV4dEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAg
ICBpZiAoIW1fcGFnZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkg
eworICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50
KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFRleHRGaWVsZFN0eWxlKHNlbGVjdG9yLCBzdHls
ZSwgZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0
cmFpbnRzKHN0eWxlLCBUZXh0RmllbGQpOwpAQCAtOTE0LDI1ICs5MTQsMjUgQEAgdm9pZCBSZW5k
ZXJUaGVtZUVmbDo6YWRqdXN0VGV4dEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWwKICAgICBzdHlsZS0+c2V0QmFja2dyb3VuZENvbG9yKG1fZW50cnlUZXh0
QmFja2dyb3VuZENvbG9yKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRUZXh0Rmll
bGQoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJl
Y3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRleHRGaWVsZChSZW5kZXJPYmplY3QqIG9i
amVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAg
IHJldHVybiBwYWludFRoZW1lUGFydChvLCBUZXh0RmllbGQsIGksIHJlY3QpOworICAgIHJldHVy
biBwYWludFRoZW1lUGFydChvYmplY3QsIFRleHRGaWVsZCwgaW5mbywgcmVjdCk7CiB9CiAKLXZv
aWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciog
c2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmFkanVzdFRleHRBcmVhU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0
b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBh
ZGp1c3RUZXh0RmllbGRTdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgIGFkanVzdFRleHRG
aWVsZFN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZWxlbWVudCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhl
bWVFZmw6OnBhaW50VGV4dEFyZWEoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGks
IGNvbnN0IEludFJlY3QmIHIpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFRleHRBcmVhKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50VGV4dEZpZWxkKG8sIGksIHIpOworICAgIHJldHVy
biBwYWludFRleHRGaWVsZChvYmplY3QsIGluZm8sIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclRo
ZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZERlY29yYXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9y
KiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KiBlKSBjb25zdAordm9pZCBS
ZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGREZWNvcmF0aW9uU3R5bGUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkg
Y29uc3QKIHsKLSAgICBpZiAoIW1fcGFnZSAmJiBlICYmIGUtPmRvY3VtZW50KCktPnBhZ2UoKSkg
ewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGUtPmRvY3VtZW50KCktPnBh
Z2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKHNlbGVjdG9y
LCBzdHlsZSwgZSk7CisgICAgaWYgKCFtX3BhZ2UgJiYgZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1
bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihl
bGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZERl
Y29yYXRpb25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGVsZW1lbnQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGFkanVzdFNpemVDb25zdHJhaW50cyhzdHlsZSwgU2VhcmNoRmllbGREZWNv
cmF0aW9uKTsKQEAgLTk0MCwxNSArOTQwLDE1IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVz
dFNlYXJjaEZpZWxkRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yCiAg
ICAgc3R5bGUtPnNldFdoaXRlU3BhY2UoUFJFKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6
cGFpbnRTZWFyY2hGaWVsZERlY29yYXRpb24oUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludElu
Zm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNl
YXJjaEZpZWxkRGVjb3JhdGlvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZv
JiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBwYWludFRoZW1lUGFy
dChvLCBTZWFyY2hGaWVsZERlY29yYXRpb24sIGksIHJlY3QpOworICAgIHJldHVybiBwYWludFRo
ZW1lUGFydChvYmplY3QsIFNlYXJjaEZpZWxkRGVjb3JhdGlvbiwgaW5mbywgcmVjdCk7CiB9CiAK
LXZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQq
IGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNC
dXR0b25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzZWxlY3RvciwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAogewotICAgIGlmICghbV9wYWdlICYmIGUgJiYgZS0+
ZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFJlbmRlclRoZW1lRWZs
Kj4oZS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+YWRqdXN0U2VhcmNoRmllbGRSZXN1
bHRzQnV0dG9uU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICBpZiAoIW1fcGFnZSAmJiBl
bGVtZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgeworICAgICAgICBzdGF0aWNf
Y2FzdDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUo
KSktPmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwg
ZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFp
bnRzKHN0eWxlLCBTZWFyY2hGaWVsZFJlc3VsdHNCdXR0b24pOwpAQCAtOTU2LDE1ICs5NTYsMTUg
QEAgdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWMKICAgICBzdHlsZS0+c2V0V2hpdGVTcGFjZShQUkUp
OwogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkUmVzdWx0c0J1dHRv
bihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IFBhaW50SW5mbyYgaSwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRSZXN1bHRzQnV0dG9uKFJl
bmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG8sIFNlYXJjaEZpZWxkUmVzdWx0
c0J1dHRvbiwgaSwgcmVjdCk7CisgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgU2Vh
cmNoRmllbGRSZXN1bHRzQnV0dG9uLCBpbmZvLCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJUaGVt
ZUVmbDo6YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKENTU1N0eWxlU2Vs
ZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1lbnQqIGUpIGNvbnN0Cit2
b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uU3R5
bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVu
dCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGFnZSAmJiBlICYmIGUtPmRvY3VtZW50
KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUVmbCo+KGUtPmRv
Y3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25TdHlsZShzZWxlY3Rvciwgc3R5bGUsIGUpOworICAgIGlmICghbV9wYWdlICYmIGVsZW1l
bnQgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpKSB7CisgICAgICAgIHN0YXRpY19jYXN0
PFJlbmRlclRoZW1lRWZsKj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+cGFnZSgpLT50aGVtZSgpKS0+
YWRqdXN0U2VhcmNoRmllbGRSZXN1bHRzRGVjb3JhdGlvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwg
ZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFp
bnRzKHN0eWxlLCBTZWFyY2hGaWVsZFJlc3VsdHNEZWNvcmF0aW9uKTsKQEAgLTk3MiwxNSArOTcy
LDE1IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVzdFNlYXJjaEZpZWxkUmVzdWx0c0RlY29y
YXRpb25TdHlsZShDU1NTdHlsZVNlbGVjdG9yKiBzCiAgICAgc3R5bGUtPnNldFdoaXRlU3BhY2Uo
UFJFKTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZFJlc3VsdHNE
ZWNvcmF0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG8sIFNlYXJj
aEZpZWxkUmVzdWx0c0RlY29yYXRpb24sIGksIHJlY3QpOworICAgIHJldHVybiBwYWludFRoZW1l
UGFydChvYmplY3QsIFNlYXJjaEZpZWxkUmVzdWx0c0RlY29yYXRpb24sIGluZm8sIHJlY3QpOwog
fQogCi12b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0
eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5bGUsIEVsZW1l
bnQqIGUpIGNvbnN0Cit2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZENhbmNl
bEJ1dHRvblN0eWxlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX3BhZ2UgJiYgZSAmJiBl
LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVF
ZmwqPihlLT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1lKCkpLT5hZGp1c3RTZWFyY2hGaWVsZENh
bmNlbEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwgZSk7CisgICAgaWYgKCFtX3BhZ2UgJiYg
ZWxlbWVudCAmJiBlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCkpIHsKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVFZmwqPihlbGVtZW50LT5kb2N1bWVudCgpLT5wYWdlKCktPnRoZW1l
KCkpLT5hZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxlKHNlbGVjdG9yLCBzdHlsZSwg
ZWxlbWVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYWRqdXN0U2l6ZUNvbnN0cmFp
bnRzKHN0eWxlLCBTZWFyY2hGaWVsZENhbmNlbEJ1dHRvbik7CkBAIC05ODgsMTUgKzk4OCwxNSBA
QCB2b2lkIFJlbmRlclRoZW1lRWZsOjphZGp1c3RTZWFyY2hGaWVsZENhbmNlbEJ1dHRvblN0eWxl
KENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdAogICAgIHN0eWxlLT5zZXRXaGl0ZVNwYWNlKFBSRSk7
CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50U2VhcmNoRmllbGRDYW5jZWxCdXR0b24o
UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIGksIGNvbnN0IEludFJlY3QmIHJlY3Qp
Citib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkQ2FuY2VsQnV0dG9uKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7Ci0gICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG8sIFNlYXJjaEZpZWxkQ2FuY2VsQnV0
dG9uLCBpLCByZWN0KTsKKyAgICByZXR1cm4gcGFpbnRUaGVtZVBhcnQob2JqZWN0LCBTZWFyY2hG
aWVsZENhbmNlbEJ1dHRvbiwgaW5mbywgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyVGhlbWVFZmw6
OmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRWxlbWVudCogZSkgY29uc3QKK3ZvaWQgUmVuZGVyVGhlbWVFZmw6OmFk
anVzdFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1fcGFnZSAm
JiBlICYmIGUtPmRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxSZW5k
ZXJUaGVtZUVmbCo+KGUtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSktPmFkanVzdFNlYXJj
aEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlKTsKKyAgICBpZiAoIW1fcGFnZSAmJiBlbGVt
ZW50ICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKSkgeworICAgICAgICBzdGF0aWNfY2Fz
dDxSZW5kZXJUaGVtZUVmbCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPnBhZ2UoKS0+dGhlbWUoKSkt
PmFkanVzdFNlYXJjaEZpZWxkU3R5bGUoc2VsZWN0b3IsIHN0eWxlLCBlbGVtZW50KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICBhZGp1c3RTaXplQ29uc3RyYWludHMoc3R5bGUsIFNlYXJj
aEZpZWxkKTsKQEAgLTEwMDYsOSArMTAwNiw5IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OmFkanVz
dFNlYXJjaEZpZWxkU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IsIFJlbmRlclN0CiAg
ICAgc3R5bGUtPnNldEJhY2tncm91bmRDb2xvcihtX3NlYXJjaFRleHRCYWNrZ3JvdW5kQ29sb3Ip
OwogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludFNlYXJjaEZpZWxkKFJlbmRlck9iamVj
dCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5k
ZXJUaGVtZUVmbDo6cGFpbnRTZWFyY2hGaWVsZChSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3Qg
UGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIHJldHVybiBwYWlu
dFRoZW1lUGFydChvLCBTZWFyY2hGaWVsZCwgaSwgcmVjdCk7CisgICAgcmV0dXJuIHBhaW50VGhl
bWVQYXJ0KG9iamVjdCwgU2VhcmNoRmllbGQsIGluZm8sIHJlY3QpOwogfQogCiB2b2lkIFJlbmRl
clRoZW1lRWZsOjpzZXREZWZhdWx0Rm9udFNpemUoaW50IHNpemUpCkBAIC0xMDMyLDE0ICsxMDMy
LDE0IEBAIHZvaWQgUmVuZGVyVGhlbWVFZmw6OnN5c3RlbUZvbnQoaW50IHByb3BJZCwgRm9udERl
c2NyaXB0aW9uJiBmb250RGVzY3JpcHRpb24pIGNvCiB9CiAKICNpZiBFTkFCTEUoUFJPR1JFU1Nf
VEFHKQotdm9pZCBSZW5kZXJUaGVtZUVmbDo6YWRqdXN0UHJvZ3Jlc3NCYXJTdHlsZShDU1NTdHls
ZVNlbGVjdG9yKiwgUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50KikgY29uc3QKK3ZvaWQgUmVu
ZGVyVGhlbWVFZmw6OmFkanVzdFByb2dyZXNzQmFyU3R5bGUoQ1NTU3R5bGVTZWxlY3Rvciogc2Vs
ZWN0b3IsIFJlbmRlclN0eWxlKiBzdHlsZSwgRWxlbWVudCogZWxlbWVudCkgY29uc3QKIHsKICAg
ICBzdHlsZS0+c2V0Qm94U2hhZG93KDApOwogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWlu
dFByb2dyZXNzQmFyKFJlbmRlck9iamVjdCogbywgY29uc3QgUGFpbnRJbmZvJiBpLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRQcm9ncmVzc0JhcihSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewotICAgIHJldHVybiBwYWludFRoZW1lUGFydChvLCBQcm9ncmVzc0JhciwgaSwgcmVj
dCk7CisgICAgcmV0dXJuIHBhaW50VGhlbWVQYXJ0KG9iamVjdCwgUHJvZ3Jlc3NCYXIsIGluZm8s
IHJlY3QpOwogfQogI2VuZGlmCiAKQEAgLTEwNTYsNjcgKzEwNTYsNjcgQEAgU3RyaW5nIFJlbmRl
clRoZW1lRWZsOjpmb3JtYXRNZWRpYUNvbnRyb2xzQ3VycmVudFRpbWUoZmxvYXQgY3VycmVudFRp
bWUsIGZsb2F0IGQKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVF
Zmw6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wg
UmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFGdWxsc2NyZWVuQnV0dG9uKFJlbmRlck9iamVjdCog
b2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVy
VGhlbWVFZmw6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wg
UmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFNdXRlQnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0
LCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVF
Zmw6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25z
dCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVy
VGhlbWVFZmw6OnBhaW50TWVkaWFQbGF5QnV0dG9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25z
dCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6OnBh
aW50TWVkaWFTZWVrQmFja0J1dHRvbihSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3Qg
UGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRo
ZW1lRWZsOjpwYWludE1lZGlhU2Vla0JhY2tCdXR0b24oUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNv
bnN0IFBhaW50SW5mbyYgaW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6
cGFpbnRNZWRpYVNlZWtGb3J3YXJkQnV0dG9uKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVu
ZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTZWVrRm9yd2FyZEJ1dHRvbihSZW5kZXJPYmplY3QqIG9i
amVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRo
ZW1lRWZsOjpwYWludE1lZGlhU2xpZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6
OnBhaW50TWVkaWFTbGlkZXJUcmFjayhSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJ
bmZvJiBpbmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlh
U2xpZGVyVGh1bWIoUmVuZGVyT2JqZWN0KiBvLCBjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgSW50UmVjdCYgcikKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFTbGlkZXJU
aHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBpbmZvLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xpZGVyQ29udGFp
bmVyKFJlbmRlck9iamVjdCosIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlckNv
bnRhaW5lcihSZW5kZXJPYmplY3QqLCBjb25zdCBQYWludEluZm8mIGluZm8sIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLWJvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFWb2x1bWVTbGlkZXJUcmFjayhSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IEludFJlY3QmIHJlY3QpCitib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhVm9sdW1lU2xp
ZGVyVHJhY2soUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgaW5mbywgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRpYVZvbHVtZVNsaWRlclRo
dW1iKFJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBQYWludEluZm8mIHBhaW50SW5m
bywgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgUmVuZGVyVGhlbWVFZmw6OnBhaW50TWVkaWFW
b2x1bWVTbGlkZXJUaHVtYihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUGFpbnRJbmZvJiBp
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlclRoZW1lRWZsOjpwYWludE1lZGlhQ3VycmVu
dFRpbWUoUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBSZW5kZXJUaGVtZUVmbDo6cGFpbnRNZWRp
YUN1cnJlbnRUaW1lKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBQYWludEluZm8mIGluZm8s
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1
cm4gZmFsc2U7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>