<?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>98431</bug_id>
          
          <creation_ts>2012-10-04 11:21:31 -0700</creation_ts>
          <short_desc>JSC should have a way to gather and log Heap memory use and pause times</short_desc>
          <delta_ts>2012-10-05 10:35:46 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734860</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-10-04 11:21:31 -0700</bug_when>
    <thetext>In order to improve our infrastructure for benchmark-driven development, we should have a centralized method of gathering and logging various statistics about the state of the JS heap. This would allow us to create and to use other tools to analyze the output of the VM after running various workloads.

The first two statistics that might be interesting is memory use by JSC and GC pause times. We can control whether this recording happens through the use of the Options class, allowing us to either use environment variables or command line flags.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734886</commentid>
    <comment_count>1</comment_count>
      <attachid>167148</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-10-04 11:37:17 -0700</bug_when>
    <thetext>Created attachment 167148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734888</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 11:40:44 -0700</bug_when>
    <thetext>Attachment 167148 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1
Source/JavaScriptCore/runtime/Options.h:178:  size_tVal is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734920</commentid>
    <comment_count>3</comment_count>
      <attachid>167155</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-10-04 12:11:52 -0700</bug_when>
    <thetext>Created attachment 167155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734922</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-04 12:13:51 -0700</bug_when>
    <thetext>Attachment 167155 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;S...&quot; exit_code: 1
Source/JavaScriptCore/runtime/Options.h:178:  size_tVal is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming/underscores] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734938</commentid>
    <comment_count>5</comment_count>
      <attachid>167155</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-04 12:55:03 -0700</bug_when>
    <thetext>Comment on attachment 167155
Patch

Attachment 167155 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14180136</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734940</commentid>
    <comment_count>6</comment_count>
      <attachid>167155</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-04 12:57:45 -0700</bug_when>
    <thetext>Comment on attachment 167155
Patch

Attachment 167155 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14152623</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734956</commentid>
    <comment_count>7</comment_count>
      <attachid>167155</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 13:20:24 -0700</bug_when>
    <thetext>Comment on attachment 167155
Patch

Attachment 167155 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14182088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734969</commentid>
    <comment_count>8</comment_count>
      <attachid>167155</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 13:30:00 -0700</bug_when>
    <thetext>Comment on attachment 167155
Patch

Attachment 167155 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14173275</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734973</commentid>
    <comment_count>9</comment_count>
      <attachid>167155</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-04 13:38:22 -0700</bug_when>
    <thetext>Comment on attachment 167155
Patch

Attachment 167155 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14183075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734984</commentid>
    <comment_count>10</comment_count>
      <attachid>167169</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-10-04 13:49:26 -0700</bug_when>
    <thetext>Created attachment 167169
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735031</commentid>
    <comment_count>11</comment_count>
      <attachid>167169</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 14:42:14 -0700</bug_when>
    <thetext>Comment on attachment 167169
Patch

Attachment 167169 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14171396</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735040</commentid>
    <comment_count>12</comment_count>
      <attachid>167169</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 14:57:04 -0700</bug_when>
    <thetext>Comment on attachment 167169
Patch

Attachment 167169 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14183108</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735055</commentid>
    <comment_count>13</comment_count>
      <attachid>167184</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-10-04 15:14:42 -0700</bug_when>
    <thetext>Created attachment 167184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735088</commentid>
    <comment_count>14</comment_count>
      <attachid>167184</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 15:52:15 -0700</bug_when>
    <thetext>Comment on attachment 167184
Patch

Attachment 167184 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14181126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735116</commentid>
    <comment_count>15</comment_count>
      <attachid>167202</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-10-04 16:33:31 -0700</bug_when>
    <thetext>Created attachment 167202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735217</commentid>
    <comment_count>16</comment_count>
      <attachid>167202</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-04 18:48:04 -0700</bug_when>
    <thetext>Comment on attachment 167202
Patch

Attachment 167202 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14178280</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735222</commentid>
    <comment_count>17</comment_count>
      <attachid>167221</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-10-04 18:55:44 -0700</bug_when>
    <thetext>Created attachment 167221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735304</commentid>
    <comment_count>18</comment_count>
      <attachid>167221</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-10-04 21:24:47 -0700</bug_when>
    <thetext>Comment on attachment 167221
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735744</commentid>
    <comment_count>19</comment_count>
      <attachid>167221</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 10:35:42 -0700</bug_when>
    <thetext>Comment on attachment 167221
Patch

Clearing flags on attachment: 167221

Committed r130520: &lt;http://trac.webkit.org/changeset/130520&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735745</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-05 10:35:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167148</attachid>
            <date>2012-10-04 11:37:17 -0700</date>
            <delta_ts>2012-10-04 12:11:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98431-20121004113628.patch</filename>
            <type>text/plain</type>
            <size>29003</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwNDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBhbmQgbG9nIEhlYXAgbWVt
b3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW1wcm92ZSBvdXIgaW5mcmFzdHJ1Y3R1cmUgZm9y
IGJlbmNobWFyay1kcml2ZW4gZGV2ZWxvcG1lbnQsIHdlIHNob3VsZCAKKyAgICAgICAgaGF2ZSBh
IGNlbnRyYWxpemVkIG1ldGhvZCBvZiBnYXRoZXJpbmcgYW5kIGxvZ2dpbmcgdmFyaW91cyBzdGF0
aXN0aWNzIGFib3V0IHRoZSBzdGF0ZSAKKyAgICAgICAgb2YgdGhlIEpTIGhlYXAuIFRoaXMgd291
bGQgYWxsb3cgdXMgdG8gY3JlYXRlIGFuZCB0byB1c2Ugb3RoZXIgdG9vbHMgdG8gYW5hbHl6ZSB0
aGUgCisgICAgICAgIG91dHB1dCBvZiB0aGUgVk0gYWZ0ZXIgcnVubmluZyB2YXJpb3VzIHdvcmts
b2Fkcy4KKworICAgICAgICBUaGUgZmlyc3QgdHdvIHN0YXRpc3RpY3MgdGhhdCBtaWdodCBiZSBp
bnRlcmVzdGluZyBpcyBtZW1vcnkgdXNlIGJ5IEpTQyBhbmQgR0MgcGF1c2UgCisgICAgICAgIHRp
bWVzLiBXZSBjYW4gY29udHJvbCB3aGV0aGVyIHRoaXMgcmVjb3JkaW5nIGhhcHBlbnMgdGhyb3Vn
aCB0aGUgdXNlIG9mIHRoZSBPcHRpb25zIAorICAgICAgICBjbGFzcywgYWxsb3dpbmcgdXMgdG8g
ZWl0aGVyIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgY29tbWFuZCBsaW5lIGZsYWdzLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KTogSWYg
d2UgZmluaXNoIGEgY29sbGVjdGlvbiBhbmQgYXJlIHN0aWxsIG92ZXIgb3VyIHNldCBHQyBoZWFw
IHNpemUsIAorICAgICAgICB3ZSBlbmQgdGhlIHByb2dyYW0gaW1tZWRpYXRlbHkgYW5kIHJlcG9y
dCBhbiBlcnJvci4gQWxzbyBhZGRlZCByZWNvcmRpbmcgb2YgcGF1c2UgdGltZXMuCisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2hv
dWxkQ29sbGVjdCk6IFdoZW4gd2Ugc2V0IGEgc3BlY2lmaWMgR0MgaGVhcCBzaXplIHRocm91Z2gg
T3B0aW9ucywgd2UgCisgICAgICAgIGlnbm9yZSBhbGwgb3RoZXIgaGV1cmlzdGljcyBvbiB3aGVu
IHdlIHNob3VsZCBjb2xsZWN0IGFuZCBpbnN0ZWFkIG9ubHkgYXNrIGlmIHdlJ3JlIAorICAgICAg
ICBncmVhdGVyIHRoYW4gdGhlIGFtb3VudCBzcGVjaWZpZWQgaW4gdGhlIE9wdGlvbiB2YWx1ZS4g
VGhpcyBhbGxvd3MgdXMgdG8gdmlldyB0aW1lL21lbW9yeSAKKyAgICAgICAgdHJhZGVvZmZzIG1v
cmUgY2xlYXJseS4KKyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZSk6CisgICAg
ICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpsb2dTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6
SGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSk6CisgICAgICAgIChKU0M6OkhlYXBTdGF0
aXN0aWNzOjpyZXBvcnRTdWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcFN0YXRpc3RpY3M6OnBh
cnNlTWVtb3J5QW1vdW50KToKKyAgICAgICAgKFN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAg
KEpTQzo6U3RvcmFnZVN0YXRpc3RpY3M6OlN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKEpT
Qzo6U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpTdG9yYWdl
U3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCk6CisgICAgICAgIChK
U0M6OlN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OlN0b3Jh
Z2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSk6CisgICAgICAgIChKU0M6OlN0b3JhZ2VTdGF0aXN0
aWNzOjpzdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6c2hv
d09iamVjdFN0YXRpc3RpY3MpOiBNb3ZlZCB0aGUgb2xkIHNob3dIZWFwU3RhdGlzdGljcyAocmVu
YW1lZCB0byBzaG93T2JqZWN0U3RhdGlzdGljcykgCisgICAgICAgIHRvIHRyeSB0byBzdGFydCBj
b2xsZWN0aW5nIG91ciB2YXJpb3VzIG1lbW9yeSBzdGF0aXN0aWNzIGdhdGhlcmluZy9yZXBvcnRp
bmcgbWVjaGFuaXNtcyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgCisgICAgICAgIGNvZGViYXNl
IGludG8gb25lIHBsYWNlLgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcFN0YXRpc3RpY3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6IFdlIG5l
ZWQgdG8gaW5pdGlhbGl6ZSBvdXIgZGF0YSBzdHJ1Y3R1cmVzIGZvciByZWNvcmRpbmcgCisgICAg
ICAgIHN0YXRpc3RpY3MgaWYgbmVjZXNzYXJ5LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6IEFkZCBuZXcgT3B0aW9ucyBmb3IgdGhlIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGlzdGljcyB3
ZSdsbCBiZSBnYXRoZXJpbmcuCisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOiBJbml0aWFsaXplIHRoZSB2YXJp
b3VzIG5ldyBvcHRpb25zIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgIChKU0MpOgorCiAyMDEyLTEwLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgbWlzc2luZyBMTEludCBkZXBlbmRlbmNpZXMg
dG8gdGhlIGJ1aWxkIHN5c3RlbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHJldmlzaW9uIDEz
MDQwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIkNvcGll
ZFNwYWNlSW5saW5lTWV0aG9kcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKKyNp
bmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIkluaXRpYWxpemVUaHJlYWRpbmcu
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKQEAgLTUy
OCw2ICs1MjksOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiAgICAgVFJZCiAg
ICAgICAgIHJlcyA9IGpzY21haW4oYXJnYywgYXJndik7CiAgICAgRVhDRVBUKHJlcyA9IDMpCisg
ICAgaWYgKE9wdGlvbnM6OmxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkpCisgICAgICAgIEhlYXBT
dGF0aXN0aWNzOjpyZXBvcnRTdWNjZXNzKCk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC03MTAsNiArNzEwLDggQEAKIAkJQzIyNTQ5NDMxNUY3REJBQTAwNjVF
ODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAg
Ki87IH07CiAJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQw
MkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyog
Q29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLzsgfTsK
KwkJQzI0RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUwMTYxQ0Q2OTUw
MDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi87IH07CisJCUMyNEQzMUUzMTYxQ0Q2OTUw
MDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0
aWNzLmggKi87IH07CiAJCUMyNUY4QkNEMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3
ZWVwZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi87IH07
CiAJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyog
SlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0xNDg2LDYgKzE0ODgsOCBAQAogCQlDMjExMjJFMDE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0
YWNrSW5saW5lTWV0aG9kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJr
U3RhY2tJbmxpbmVNZXRob2RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMjU0
OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTbG90VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFw
U3RhdGlzdGljcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFw
U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNEQzMUUxMTYx
Q0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAv
KiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5jcmVtZW50YWxTd2VlcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQTdG
Njg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTgxNSw2ICsxODE5LDggQEAKIAkJMTQyRTMxMkExMzRGRjBB
NjAwQUZBREI1IC8qIGhlYXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAg
Ki8sCisJCQkJQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi8s
CiAJCQkJQzIyNTQ5NDIxNUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLywKIAkJ
CQlDMjExMjJERTE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmNwcCAqLywK
IAkJCQlDMjExMjJERjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggKi8s
CkBAIC0yOTYxLDYgKzI5NjcsNyBAQAogCQkJCTBGMENENEMyMTVGMUE2MDcwMDMyRjFDMCAvKiBQ
dXREaXJlY3RJbmRleE1vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2MjU1M0QyMTYxMzZFMUEw
MDlGMTdEMCAvKiBKU1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTNDMUZC
MDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyNEQzMUUz
MTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0z
NTY2LDYgKzM1NzMsNyBAQAogCQkJCUMyMjU0OTQzMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90Vmlz
aXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjI1NTNEMTE2MTM2REE5MDA5RjE3RDAgLyog
SlNQcm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjU1NDFCMTE2MTNDMUZCMDBDRTNFMjUg
LyogU3BlY2lhbFBvaW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzI0RDMxRTIxNjFDRDY5
NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiQ29uc2VydmF0aXZlUm9vdHMuaCIKICNpbmNsdWRlICJHQ0FjdGl2aXR5
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJIZWFwUm9vdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJIZWFw
U3RhdGlzdGljcy5oIgogI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCkBAIC0yMzUsNzQgKzIz
Niw2IEBAIGlubGluZSBQYXNzT3duUHRyPFR5cGVDb3VudFNldD4gUmVjb3JkVHkKICAgICByZXR1
cm4gbV90eXBlQ291bnRTZXQucmVsZWFzZSgpOwogfQogCi1jbGFzcyBTdG9yYWdlU3RhdGlzdGlj
cyA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotcHVibGljOgotICAgIFN0b3Jh
Z2VTdGF0aXN0aWNzKCk7Ci0KLSAgICB2b2lkIG9wZXJhdG9yKCkoSlNDZWxsKik7Ci0KLSAgICBz
aXplX3Qgb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpOwotICAgIHNpemVfdCBvYmpl
Y3RDb3VudCgpOwotCi0gICAgc2l6ZV90IHN0b3JhZ2VTaXplKCk7Ci0gICAgc2l6ZV90IHN0b3Jh
Z2VDYXBhY2l0eSgpOwotCi1wcml2YXRlOgotICAgIHNpemVfdCBtX29iamVjdFdpdGhPdXRPZkxp
bmVTdG9yYWdlQ291bnQ7Ci0gICAgc2l6ZV90IG1fb2JqZWN0Q291bnQ7Ci0gICAgc2l6ZV90IG1f
c3RvcmFnZVNpemU7Ci0gICAgc2l6ZV90IG1fc3RvcmFnZUNhcGFjaXR5OwotfTsKLQotaW5saW5l
IFN0b3JhZ2VTdGF0aXN0aWNzOjpTdG9yYWdlU3RhdGlzdGljcygpCi0gICAgOiBtX29iamVjdFdp
dGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoMCkKLSAgICAsIG1fb2JqZWN0Q291bnQoMCkKLSAgICAs
IG1fc3RvcmFnZVNpemUoMCkKLSAgICAsIG1fc3RvcmFnZUNhcGFjaXR5KDApCi17Ci19Ci0KLWlu
bGluZSB2b2lkIFN0b3JhZ2VTdGF0aXN0aWNzOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKLXsK
LSAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKLSAgICBpZiAoaGFzSW5kZXhl
ZFByb3BlcnRpZXMob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgKyttX29iamVjdENvdW50OwotICAg
IGlmICghb2JqZWN0LT5oYXNJbmxpbmVTdG9yYWdlKCkpCi0gICAgICAgICsrbV9vYmplY3RXaXRo
T3V0T2ZMaW5lU3RvcmFnZUNvdW50OwotICAgIG1fc3RvcmFnZVNpemUgKz0gb2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4pOwotICAgIG1fc3RvcmFnZUNhcGFjaXR5ICs9IG9iamVjdC0+c3RydWN0dXJlKCktPnRv
dGFsU3RvcmFnZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPik7
IAotfQotCi1pbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RXaXRoT3V0T2ZM
aW5lU3RvcmFnZUNvdW50KCkKLXsKLSAgICByZXR1cm4gbV9vYmplY3RXaXRoT3V0T2ZMaW5lU3Rv
cmFnZUNvdW50OwotfQotCi1pbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RD
b3VudCgpCi17Ci0gICAgcmV0dXJuIG1fb2JqZWN0Q291bnQ7Ci19Ci0KLQotaW5saW5lIHNpemVf
dCBTdG9yYWdlU3RhdGlzdGljczo6c3RvcmFnZVNpemUoKQotewotICAgIHJldHVybiBtX3N0b3Jh
Z2VTaXplOwotfQotCi0KLWlubGluZSBzaXplX3QgU3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VD
YXBhY2l0eSgpCi17Ci0gICAgcmV0dXJuIG1fc3RvcmFnZUNhcGFjaXR5OwotfQotCiB9IC8vIGFu
b255bW91cyBuYW1lc3BhY2UKIAogSGVhcDo6SGVhcChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IEhlYXBUeXBlIGhlYXBUeXBlKQpAQCAtODMxLDYgKzc2NCw5IEBAIHZvaWQgSGVhcDo6Y29sbGVj
dChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICB9CiAgICAgCiAgICAgc2l6ZV90IGN1cnJlbnRI
ZWFwU2l6ZSA9IHNpemUoKTsKKyAgICBpZiAoT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpICYmIGN1
cnJlbnRIZWFwU2l6ZSA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKKyAgICAgICAgSGVhcFN0
YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSgpOworCiAgICAgaWYgKGZ1bGxHQykgewogICAgICAg
ICBtX3NpemVBZnRlckxhc3RDb2xsZWN0ID0gY3VycmVudEhlYXBTaXplOwogCkBAIC04NDQsNiAr
NzgwLDggQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgIGRv
dWJsZSBsYXN0R0NFbmRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpOwogICAgIG1fbGFzdEdDTGVu
Z3RoID0gbGFzdEdDRW5kVGltZSAtIGxhc3RHQ1N0YXJ0VGltZTsKIAorICAgIGlmIChPcHRpb25z
OjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkKKyAgICAgICAgSGVhcFN0YXRpc3RpY3M6OnJlY29yZEdD
UGF1c2VUaW1lKGxhc3RHQ1N0YXJ0VGltZSwgbGFzdEdDRW5kVGltZSk7CiAgICAgaWYgKG1fb3Bl
cmF0aW9uSW5Qcm9ncmVzcyAhPSBDb2xsZWN0aW9uKQogICAgICAgICBDUkFTSCgpOwogICAgIG1f
b3BlcmF0aW9uSW5Qcm9ncmVzcyA9IE5vT3BlcmF0aW9uOwpAQCAtODU1LDMxICs3OTMsOCBAQCB2
b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgaWYgKE9wdGlvbnM6
Om9iamVjdHNBcmVJbW1vcnRhbCgpKQogICAgICAgICBtYXJrRGVhZE9iamVjdHMoKTsKIAotICAg
IGlmIChPcHRpb25zOjpzaG93SGVhcFN0YXRpc3RpY3MoKSkKLSAgICAgICAgc2hvd1N0YXRpc3Rp
Y3MoKTsKLX0KLQotdm9pZCBIZWFwOjpzaG93U3RhdGlzdGljcygpCi17Ci0gICAgZGF0YUxvZygi
XG49PT0gSGVhcCBTdGF0aXN0aWNzOiA9PT1cbiIpOwotICAgIGRhdGFMb2coInNpemU6ICVsZGtC
XG4iLCBzdGF0aWNfY2FzdDxsb25nPihtX3NpemVBZnRlckxhc3RDb2xsZWN0IC8gS0IpKTsKLSAg
ICBkYXRhTG9nKCJjYXBhY2l0eTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+KGNhcGFjaXR5
KCkgLyBLQikpOwotICAgIGRhdGFMb2coInBhdXNlIHRpbWU6ICVsZm1zXG5cbiIsIG1fbGFzdEdD
TGVuZ3RoKTsKLQotICAgIFN0b3JhZ2VTdGF0aXN0aWNzIHN0b3JhZ2VTdGF0aXN0aWNzOwotICAg
IG1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKHN0b3JhZ2VTdGF0aXN0aWNzKTsKLSAgICBk
YXRhTG9nKCJ3YXN0ZWQgLnByb3BlcnR5IHN0b3JhZ2U6ICVsZGtCICglbGQlJSlcbiIsCi0gICAg
ICAgIHN0YXRpY19jYXN0PGxvbmc+KAotICAgICAgICAgICAgKHN0b3JhZ2VTdGF0aXN0aWNzLnN0
b3JhZ2VDYXBhY2l0eSgpIC0gc3RvcmFnZVN0YXRpc3RpY3Muc3RvcmFnZVNpemUoKSkgLyBLQiks
Ci0gICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAotICAgICAgICAgICAgKHN0b3JhZ2VTdGF0aXN0
aWNzLnN0b3JhZ2VDYXBhY2l0eSgpIC0gc3RvcmFnZVN0YXRpc3RpY3Muc3RvcmFnZVNpemUoKSkg
KiAxMDAKLSAgICAgICAgICAgICAgICAvIHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VDYXBhY2l0
eSgpKSk7Ci0gICAgZGF0YUxvZygib2JqZWN0cyB3aXRoIG91dC1vZi1saW5lIC5wcm9wZXJ0eSBz
dG9yYWdlOiAlbGQgKCVsZCUlKVxuIiwKLSAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCi0gICAg
ICAgICAgICBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50
KCkpLAotICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKLSAgICAgICAgICAgIHN0b3JhZ2VTdGF0
aXN0aWNzLm9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKSAqIDEwMAotICAgICAgICAg
ICAgICAgIC8gc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0Q291bnQoKSkpOworICAgIGlmIChPcHRp
b25zOjpzaG93T2JqZWN0U3RhdGlzdGljcygpKQorICAgICAgICBIZWFwU3RhdGlzdGljczo6c2hv
d09iamVjdFN0YXRpc3RpY3ModGhpcyk7CiB9CiAKIHZvaWQgSGVhcDo6bWFya0RlYWRPYmplY3Rz
KCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEzMDQwNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVkZSAiTWFya2VkQmxv
Y2tTZXQuaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIK
ICNpbmNsdWRlICJTbG90VmlzaXRvci5oIgogI2luY2x1ZGUgIldlYWtIYW5kbGVPd25lci5oIgog
I2luY2x1ZGUgIldyaXRlQmFycmllclN1cHBvcnQuaCIKQEAgLTE4Miw2ICsxODMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBm
cmllbmQgY2xhc3MgQ29waWVkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRv
cjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEhlYXBTdGF0aXN0aWNzOwogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsKICAgICAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgc2l6
ZV90KTsKIApAQCAtMjU4LDYgKzI2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgaW5saW5l
IGJvb2wgSGVhcDo6c2hvdWxkQ29sbGVjdCgpCiAgICAgeworICAgICAgICBpZiAoT3B0aW9uczo6
Z2NNYXhIZWFwU2l6ZSgpKQorICAgICAgICAgICAgcmV0dXJuIG1fYnl0ZXNBbGxvY2F0ZWQgPiBP
cHRpb25zOjpnY01heEhlYXBTaXplKCkgJiYgbV9pc1NhZmVUb0NvbGxlY3QgJiYgbV9vcGVyYXRp
b25JblByb2dyZXNzID09IE5vT3BlcmF0aW9uOwogI2lmIEVOQUJMRShHR0MpCiAgICAgICAgIHJl
dHVybiBtX29iamVjdFNwYWNlLm51cnNlcnlXYXRlck1hcmsoKSA+PSBtX21pbkJ5dGVzUGVyQ3lj
bGUgJiYgbV9pc1NhZmVUb0NvbGxlY3QgJiYgbV9vcGVyYXRpb25JblByb2dyZXNzID09IE5vT3Bl
cmF0aW9uOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0
aXN0aWNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwU3RhdGlzdGljcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjI0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhlYXBTdGF0aXN0aWNzLmgi
CisKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJP
cHRpb25zLmgiCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+
CisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4K
KyNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2RvdWJsZSBIZWFw
U3RhdGlzdGljczo6c19zdGFydFRpbWUgPSAwLjA7Citkb3VibGUgSGVhcFN0YXRpc3RpY3M6OnNf
ZW5kVGltZSA9IDAuMDsKK0RlcXVlPGRvdWJsZT4qIEhlYXBTdGF0aXN0aWNzOjpzX3BhdXNlVGlt
ZVN0YXJ0cyA9IDA7CitEZXF1ZTxkb3VibGU+KiBIZWFwU3RhdGlzdGljczo6c19wYXVzZVRpbWVF
bmRzID0gMDsKKwordm9pZCBIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6ZSgpCit7CisgICAgQVNT
RVJUKE9wdGlvbnM6OnJlY29yZEdDUGF1c2VUaW1lcygpKTsKKyAgICBzX3N0YXJ0VGltZSA9IFdU
Rjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgc19wYXVzZVRpbWVTdGFydHMg
PSBuZXcgRGVxdWU8ZG91YmxlPigpOworICAgIHNfcGF1c2VUaW1lRW5kcyA9IG5ldyBEZXF1ZTxk
b3VibGU+KCk7Cit9CisKK3ZvaWQgSGVhcFN0YXRpc3RpY3M6OnJlY29yZEdDUGF1c2VUaW1lKGRv
dWJsZSBzdGFydCwgZG91YmxlIGVuZCkKK3sKKyAgICBBU1NFUlQoT3B0aW9uczo6cmVjb3JkR0NQ
YXVzZVRpbWVzKCkpOworICAgIEFTU0VSVChzX3BhdXNlVGltZVN0YXJ0cyk7CisgICAgQVNTRVJU
KHNfcGF1c2VUaW1lRW5kcyk7CisgICAgc19wYXVzZVRpbWVTdGFydHMtPmFwcGVuZChzdGFydCk7
CisgICAgc19wYXVzZVRpbWVFbmRzLT5hcHBlbmQoZW5kKTsKK30KKwordm9pZCBIZWFwU3RhdGlz
dGljczo6bG9nU3RhdGlzdGljcygpCit7CisgICAgc3RydWN0IHJ1c2FnZSB1c2FnZTsKKyAgICBn
ZXRydXNhZ2UoUlVTQUdFX1NFTEYsICZ1c2FnZSk7CisjaWYgVVNFKENGKSB8fCBPUyhVTklYKQor
ICAgIGNoYXIqIHZtTmFtZSA9IGdldGVudigiSlNWTU5hbWUiKTsKKyAgICBjaGFyKiBzdWl0ZU5h
bWUgPSBnZXRlbnYoIkpTU3VpdGVOYW1lIik7CisgICAgY2hhciogYmVuY2htYXJrTmFtZSA9IGdl
dGVudigiSlNCZW5jaG1hcmtOYW1lIik7CisjZWxzZQorI2Vycm9yICJUaGUgSGVhcFN0YXRpc3Rp
Y3MgbW9kdWxlIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCisjZW5kaWYKKyAg
ICBpZiAoIXZtTmFtZSB8fCAhc3VpdGVOYW1lIHx8ICFiZW5jaG1hcmtOYW1lKQorICAgICAgICBk
YXRhTG9nKCJIZWFwU3RhdGlzdGljczoge1wibWF4X3Jzc1wiOiAlbGQiLCB1c2FnZS5ydV9tYXhy
c3MpOworICAgIGVsc2UKKyAgICAgICAgZGF0YUxvZygiSGVhcFN0YXRpc3RpY3M6IHtcIm1heF9y
c3NcIjogJWxkLCBcInZtX25hbWVcIjogXCIlc1wiLCBcInN1aXRlX25hbWVcIjogXCIlc1wiLCBc
ImJlbmNobWFya19uYW1lXCI6IFwiJXNcIiIsIAorICAgICAgICAgICAgdXNhZ2UucnVfbWF4cnNz
LCB2bU5hbWUsIHN1aXRlTmFtZSwgYmVuY2htYXJrTmFtZSk7IAorCisgICAgaWYgKE9wdGlvbnM6
OnJlY29yZEdDUGF1c2VUaW1lcygpKSB7CisgICAgICAgIGRhdGFMb2coIiwgXCJwYXVzZV90aW1l
c1wiOiBbIik7CisgICAgICAgIERlcXVlPGRvdWJsZT46Oml0ZXJhdG9yIHN0YXJ0SXQgPSBzX3Bh
dXNlVGltZVN0YXJ0cy0+YmVnaW4oKTsKKyAgICAgICAgRGVxdWU8ZG91YmxlPjo6aXRlcmF0b3Ig
ZW5kSXQgPSBzX3BhdXNlVGltZUVuZHMtPmJlZ2luKCk7CisgICAgICAgIGlmIChzdGFydEl0ICE9
IHNfcGF1c2VUaW1lU3RhcnRzLT5lbmQoKSAmJiBlbmRJdCAhPSBzX3BhdXNlVGltZUVuZHMtPmVu
ZCgpKSB7CisgICAgICAgICAgICBkYXRhTG9nKCJbJWYsICVmXSIsICpzdGFydEl0LCAqZW5kSXQp
OworICAgICAgICAgICAgKytzdGFydEl0OworICAgICAgICAgICAgKytlbmRJdDsKKyAgICAgICAg
fQorICAgICAgICB3aGlsZSAoc3RhcnRJdCAhPSBzX3BhdXNlVGltZVN0YXJ0cy0+ZW5kKCkgJiYg
ZW5kSXQgIT0gc19wYXVzZVRpbWVFbmRzLT5lbmQoKSkgeworICAgICAgICAgICAgZGF0YUxvZygi
LCBbJWYsICVmXSIsICpzdGFydEl0LCAqZW5kSXQpOworICAgICAgICAgICAgKytzdGFydEl0Owor
ICAgICAgICAgICAgKytlbmRJdDsKKyAgICAgICAgfQorICAgICAgICBkYXRhTG9nKCJdLCBcInN0
YXJ0X3RpbWVcIjogJWYsIFwiZW5kX3RpbWVcIjogJWYiLCBzX3N0YXJ0VGltZSwgc19lbmRUaW1l
KTsKKyAgICB9CisgICAgZGF0YUxvZygifVxuIik7Cit9CisKK3ZvaWQgSGVhcFN0YXRpc3RpY3M6
OmV4aXRXaXRoRmFpbHVyZSgpCit7CisgICAgQVNTRVJUKE9wdGlvbnM6OmxvZ0hlYXBTdGF0aXN0
aWNzQXRFeGl0KCkpOworICAgIHNfZW5kVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7CisgICAgbG9nU3RhdGlzdGljcygpOworICAgIGV4aXQoLTEpOworfQorCit2b2lk
IEhlYXBTdGF0aXN0aWNzOjpyZXBvcnRTdWNjZXNzKCkKK3sKKyAgICBBU1NFUlQoT3B0aW9uczo6
bG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQoKSk7CisgICAgc19lbmRUaW1lID0gV1RGOjptb25vdG9u
aWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBsb2dTdGF0aXN0aWNzKCk7Cit9CisKK3NpemVf
dCBIZWFwU3RhdGlzdGljczo6cGFyc2VNZW1vcnlBbW91bnQoY2hhciogcykKK3sKKyAgICBzaXpl
X3QgbXVsdGlwbGllciA9IDE7CisgICAgY2hhciogYWZ0ZXJTOworICAgIHNpemVfdCB2YWx1ZSA9
IHN0cnRvbChzLCAmYWZ0ZXJTLCAxMCk7CisgICAgY2hhciBuZXh0ID0gYWZ0ZXJTWzBdOworICAg
IHN3aXRjaCAobmV4dCkgeworICAgIGNhc2UgJ0snOgorICAgICAgICBtdWx0aXBsaWVyID0gS0I7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ00nOgorICAgICAgICBtdWx0aXBsaWVyID0gTUI7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgJ0cnOgorICAgICAgICBtdWx0aXBsaWVyID0gR0I7
CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICByZXR1cm4gdmFsdWUgKiBtdWx0aXBsaWVyOworfQorCitjbGFzcyBTdG9yYWdlU3RhdGlzdGlj
cyA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgeworcHVibGljOgorICAgIFN0b3Jh
Z2VTdGF0aXN0aWNzKCk7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoSlNDZWxsKik7CisKKyAgICBz
aXplX3Qgb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpOworICAgIHNpemVfdCBvYmpl
Y3RDb3VudCgpOworCisgICAgc2l6ZV90IHN0b3JhZ2VTaXplKCk7CisgICAgc2l6ZV90IHN0b3Jh
Z2VDYXBhY2l0eSgpOworCitwcml2YXRlOgorICAgIHNpemVfdCBtX29iamVjdFdpdGhPdXRPZkxp
bmVTdG9yYWdlQ291bnQ7CisgICAgc2l6ZV90IG1fb2JqZWN0Q291bnQ7CisgICAgc2l6ZV90IG1f
c3RvcmFnZVNpemU7CisgICAgc2l6ZV90IG1fc3RvcmFnZUNhcGFjaXR5OworfTsKKworaW5saW5l
IFN0b3JhZ2VTdGF0aXN0aWNzOjpTdG9yYWdlU3RhdGlzdGljcygpCisgICAgOiBtX29iamVjdFdp
dGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoMCkKKyAgICAsIG1fb2JqZWN0Q291bnQoMCkKKyAgICAs
IG1fc3RvcmFnZVNpemUoMCkKKyAgICAsIG1fc3RvcmFnZUNhcGFjaXR5KDApCit7Cit9CisKK2lu
bGluZSB2b2lkIFN0b3JhZ2VTdGF0aXN0aWNzOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKK3sK
KyAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKKyAgICBpZiAoaGFzSW5kZXhl
ZFByb3BlcnRpZXMob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKyttX29iamVjdENvdW50OworICAg
IGlmICghb2JqZWN0LT5oYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICsrbV9vYmplY3RXaXRo
T3V0T2ZMaW5lU3RvcmFnZUNvdW50OworICAgIG1fc3RvcmFnZVNpemUgKz0gb2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+dG90YWxTdG9yYWdlU2l6ZSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4pOworICAgIG1fc3RvcmFnZUNhcGFjaXR5ICs9IG9iamVjdC0+c3RydWN0dXJlKCktPnRv
dGFsU3RvcmFnZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPik7
IAorfQorCitpbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RXaXRoT3V0T2ZM
aW5lU3RvcmFnZUNvdW50KCkKK3sKKyAgICByZXR1cm4gbV9vYmplY3RXaXRoT3V0T2ZMaW5lU3Rv
cmFnZUNvdW50OworfQorCitpbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RD
b3VudCgpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0Q291bnQ7Cit9CisKK2lubGluZSBzaXplX3Qg
U3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VTaXplKCkKK3sKKyAgICByZXR1cm4gbV9zdG9yYWdl
U2l6ZTsKK30KKworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6c3RvcmFnZUNhcGFj
aXR5KCkKK3sKKyAgICByZXR1cm4gbV9zdG9yYWdlQ2FwYWNpdHk7Cit9CisKK3ZvaWQgSGVhcFN0
YXRpc3RpY3M6OnNob3dPYmplY3RTdGF0aXN0aWNzKEhlYXAqIGhlYXApCit7CisgICAgZGF0YUxv
ZygiXG49PT0gSGVhcCBTdGF0aXN0aWNzOiA9PT1cbiIpOworICAgIGRhdGFMb2coInNpemU6ICVs
ZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihoZWFwLT5tX3NpemVBZnRlckxhc3RDb2xsZWN0IC8g
S0IpKTsKKyAgICBkYXRhTG9nKCJjYXBhY2l0eTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+
KGhlYXAtPmNhcGFjaXR5KCkgLyBLQikpOworICAgIGRhdGFMb2coInBhdXNlIHRpbWU6ICVsZm1z
XG5cbiIsIGhlYXAtPm1fbGFzdEdDTGVuZ3RoKTsKKworICAgIFN0b3JhZ2VTdGF0aXN0aWNzIHN0
b3JhZ2VTdGF0aXN0aWNzOworICAgIGhlYXAtPm1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxs
KHN0b3JhZ2VTdGF0aXN0aWNzKTsKKyAgICBkYXRhTG9nKCJ3YXN0ZWQgLnByb3BlcnR5IHN0b3Jh
Z2U6ICVsZGtCICglbGQlJSlcbiIsCisgICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAorICAgICAg
ICAgICAgKHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VDYXBhY2l0eSgpIC0gc3RvcmFnZVN0YXRp
c3RpY3Muc3RvcmFnZVNpemUoKSkgLyBLQiksCisgICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAor
ICAgICAgICAgICAgKHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VDYXBhY2l0eSgpIC0gc3RvcmFn
ZVN0YXRpc3RpY3Muc3RvcmFnZVNpemUoKSkgKiAxMDAKKyAgICAgICAgICAgICAgICAvIHN0b3Jh
Z2VTdGF0aXN0aWNzLnN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgZGF0YUxvZygib2JqZWN0cyB3
aXRoIG91dC1vZi1saW5lIC5wcm9wZXJ0eSBzdG9yYWdlOiAlbGQgKCVsZCUlKVxuIiwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8bG9uZz4oCisgICAgICAgICAgICBzdG9yYWdlU3RhdGlzdGljcy5vYmpl
Y3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KCkpLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25n
PigKKyAgICAgICAgICAgIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdFdpdGhPdXRPZkxpbmVTdG9y
YWdlQ291bnQoKSAqIDEwMAorICAgICAgICAgICAgICAgIC8gc3RvcmFnZVN0YXRpc3RpY3Mub2Jq
ZWN0Q291bnQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhlYXBTdGF0aXN0aWNzX2gKKyNkZWZp
bmUgSGVhcFN0YXRpc3RpY3NfaAorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBIZWFwOworCitjbGFzcyBIZWFwU3RhdGlzdGljcyB7CitwdWJsaWM6
CisgICAgTk9fUkVUVVJOIHN0YXRpYyB2b2lkIGV4aXRXaXRoRmFpbHVyZSgpOworICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHJlcG9ydFN1Y2Nlc3MoKTsKKworICAgIHN0YXRpYyB2
b2lkIGluaXRpYWxpemUoKTsKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRHQ1BhdXNlVGltZShkb3Vi
bGUgc3RhcnQsIGRvdWJsZSBlbmQpOworICAgIHN0YXRpYyBzaXplX3QgcGFyc2VNZW1vcnlBbW91
bnQoY2hhciopOworCisgICAgc3RhdGljIHZvaWQgc2hvd09iamVjdFN0YXRpc3RpY3MoSGVhcCop
OworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBLQiA9IDEwMjQ7CisgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBNQiA9IDEwMjQgKiBLQjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IEdCID0gMTAy
NCAqIE1COworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGxvZ1N0YXRpc3RpY3MoKTsKKyAg
ICBzdGF0aWMgRGVxdWU8ZG91YmxlPiogc19wYXVzZVRpbWVTdGFydHM7CisgICAgc3RhdGljIERl
cXVlPGRvdWJsZT4qIHNfcGF1c2VUaW1lRW5kczsKKyAgICBzdGF0aWMgZG91YmxlIHNfc3RhcnRU
aW1lOworICAgIHN0YXRpYyBkb3VibGUgc19lbmRUaW1lOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlh
bGl6ZVRocmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9y
LmgiCiAjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkhlYXBTdGF0aXN0aWNzLmgiCiAjaW5j
bHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0Rh
dGVNYXRoLmgiCkBAIC01Niw2ICs1Nyw4IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRp
bmdPbmNlKCkKICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBHbG9iYWxKU0xv
Y2s6OmluaXRpYWxpemUoKTsKICAgICBPcHRpb25zOjppbml0aWFsaXplKCk7CisgICAgaWYgKE9w
dGlvbnM6OnJlY29yZEdDUGF1c2VUaW1lcygpKQorICAgICAgICBIZWFwU3RhdGlzdGljczo6aW5p
dGlhbGl6ZSgpOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAgICBXcml0
ZUJhcnJpZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTMwNDA3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPcHRpb25zLmgi
CiAKKyNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNp
bmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTc1LDYgKzc2LDExIEBAIHN0
YXRpYyBib29sIHBhcnNlKGNvbnN0IGNoYXIqIHN0cmluZywgZG8KICAgICByZXR1cm4gc3NjYW5m
KHN0cmluZywgIiVsZiIsICZ2YWx1ZSkgPT0gMTsKIH0KIAorc3RhdGljIGJvb2wgcGFyc2UoY29u
c3QgY2hhciogc3RyaW5nLCBzaXplX3QmIHZhbHVlKQoreworICAgIHJldHVybiBzc2NhbmYoc3Ry
aW5nLCAiJWx1IiwgJnZhbHVlKSA9PSAxOworfQorCiAjaWYgRU5BQkxFKFJVTl9USU1FX0hFVVJJ
U1RJQ1MpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCBvdmVycmlkZU9wdGlvbldpdGhIZXVy
aXN0aWMoVCYgdmFyaWFibGUsIGNvbnN0IGNoYXIqIG5hbWUpCkBAIC0xMzAsNiArMTM2LDEwIEBA
IHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAjaWYgVVNFKENGKSB8fCBPUyhVTklYKQogICAg
IG9iamVjdHNBcmVJbW1vcnRhbCgpID0gISFnZXRlbnYoIkpTSW1tb3J0YWxab21iaWVFbmFibGVk
Iik7CiAgICAgdXNlWm9tYmllTW9kZSgpID0gISFnZXRlbnYoIkpTSW1tb3J0YWxab21iaWVFbmFi
bGVkIikgfHwgISFnZXRlbnYoIkpTWm9tYmllRW5hYmxlZCIpOworCisgICAgZ2NNYXhIZWFwU2l6
ZSgpID0gZ2V0ZW52KCJHQ01heEhlYXBTaXplIikgPyBIZWFwU3RhdGlzdGljczo6cGFyc2VNZW1v
cnlBbW91bnQoZ2V0ZW52KCJHQ01heEhlYXBTaXplIikpIDogMDsKKyAgICByZWNvcmRHQ1BhdXNl
VGltZXMoKSA9ICEhZ2V0ZW52KCJKU1JlY29yZEdDUGF1c2VUaW1lcyIpOworICAgIGxvZ0hlYXBT
dGF0aXN0aWNzQXRFeGl0KCkgPSBnY01heEhlYXBTaXplKCkgfHwgcmVjb3JkR0NQYXVzZVRpbWVz
KCk7CiAjZW5kaWYKIAogICAgIC8vIEFsbG93IGVudmlyb25tZW50IHZhcnMgdG8gb3ZlcnJpZGUg
b3B0aW9ucyBpZiBhcHBsaWNhYmxlLgpAQCAtMjI5LDYgKzIzOSw5IEBAIHZvaWQgT3B0aW9uczo6
ZHVtcE9wdGlvbihPcHRpb25JRCBpZCwgRkkKICAgICBjYXNlIGludDMyVHlwZToKICAgICAgICAg
ZnByaW50ZihzdHJlYW0sICIlZCIsIHNfb3B0aW9uc1tpZF0udS5pbnQzMlZhbCk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2Ugc2l6ZV90VHlwZToKKyAgICAgICAgZnByaW50ZihzdHJlYW0sICIl
bHUiLCBzX29wdGlvbnNbaWRdLnUuc2l6ZV90VmFsKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGZwcmludGYoc3RyZWFtLCAiJXMiLCBmb290ZXIpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOCAr
MTIyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIFwKICAgICB2KGJvb2wsIHVzZVpvbWJpZU1v
ZGUsIGZhbHNlKSBcCiAgICAgdihib29sLCBvYmplY3RzQXJlSW1tb3J0YWwsIGZhbHNlKSBcCi0g
ICAgdihib29sLCBzaG93SGVhcFN0YXRpc3RpY3MsIGZhbHNlKQotCisgICAgdihib29sLCBzaG93
T2JqZWN0U3RhdGlzdGljcywgZmFsc2UpIFwKKyAgICBcCisgICAgdihzaXplX3QsIGdjTWF4SGVh
cFNpemUsIDApIFwKKyAgICB2KGJvb2wsIHJlY29yZEdDUGF1c2VUaW1lcywgZmFsc2UpIFwKKyAg
ICB2KGJvb2wsIGxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0LCBmYWxzZSkgCiAKIGNsYXNzIE9wdGlv
bnMgewogcHVibGljOgpAQCAtMTYxLDcgKzE2NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2xU
eXBlLAogICAgICAgICB1bnNpZ25lZFR5cGUsCiAgICAgICAgIGRvdWJsZVR5cGUsCi0gICAgICAg
IGludDMyVHlwZQorICAgICAgICBpbnQzMlR5cGUsCisgICAgICAgIHNpemVfdFR5cGUKICAgICB9
OwogCiAgICAgLy8gRm9yIHN0b3JpbmcgZm9yIGFuIG9wdGlvbiB2YWx1ZToKQEAgLTE3MSw2ICsx
NzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgdW5zaWduZWQgdW5zaWduZWRWYWw7CiAgICAg
ICAgICAgICBkb3VibGUgZG91YmxlVmFsOwogICAgICAgICAgICAgaW50MzIgaW50MzJWYWw7Cisg
ICAgICAgICAgICBzaXplX3Qgc2l6ZV90VmFsOwogICAgICAgICB9IHU7CiAgICAgfTsKIApJbmRl
eDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTMwNDEwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMTAtMDQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KKworICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgYSB3YXkgdG8gZ2F0aGVyIGFuZCBsb2cgSGVh
cCBtZW1vcnkgdXNlIGFuZCBwYXVzZSB0aW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5t
bToKKyAgICAgICAgKG1haW4pOiBBZGRlZCBhIGNoZWNrIGFzIHRvIHdoZXRoZXIgd2Ugc2hvdWxk
IGR1bXAgb3VyIEpTQyBIZWFwIHN0YXRpc3RpY3Mgb24gZXhpdC4KKwogMjAxMi0xMC0wNCAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtF
RkxdW1dLMl0gQWRkIHNldHRpbmcgdG8gYWxsb3cgZmlsZSBhY2Nlc3MgZnJvbSBmaWxlOi8vIFVS
THMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHJl
dmlzaW9uIDEzMDQwNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQAogI2ltcG9ydCAiV29ya1F1ZXVl
SXRlbS5oIgogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8Q29yZUZvdW5kYXRp
b24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0hlYXBTdGF0aXN0
aWNzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZvdW5kYXRpb25FeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9ET01FbGVtZW50Lmg+CiAj
aW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgpAQCAtOTE3LDcgKzkxOSw5IEBAIGludCBt
YWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCiAgICAgW0R1bXBSZW5kZXJUcmVlQXBw
bGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOyAvLyBGb3JjZSBBcHBLaXQgdG8gaW5pdCBpdHNl
bGYKICAgICBkdW1wUmVuZGVyVHJlZShhcmdjLCBhcmd2KTsKICAgICBbV2ViQ29yZVN0YXRpc3Rp
Y3MgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0c107Ci0gICAgW1dlYkNvcmVTdGF0aXN0
aWNzIGVtcHR5Q2FjaGVdOyAvLyBPdGhlcndpc2UgU1ZHSW1hZ2VzIHRyaWdnZXIgZmFsc2UgcG9z
aXRpdmVzIGZvciBGcmFtZS9Ob2RlIGNvdW50cyAgICAKKyAgICBbV2ViQ29yZVN0YXRpc3RpY3Mg
ZW1wdHlDYWNoZV07IC8vIE90aGVyd2lzZSBTVkdJbWFnZXMgdHJpZ2dlciBmYWxzZSBwb3NpdGl2
ZXMgZm9yIEZyYW1lL05vZGUgY291bnRzCisgICAgaWYgKEpTQzo6T3B0aW9uczo6bG9nSGVhcFN0
YXRpc3RpY3NBdEV4aXQoKSkKKyAgICAgICAgSlNDOjpIZWFwU3RhdGlzdGljczo6cmVwb3J0U3Vj
Y2VzcygpOwogICAgIFtwb29sIHJlbGVhc2VdOwogICAgIHJldHVybiAwOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167155</attachid>
            <date>2012-10-04 12:11:52 -0700</date>
            <delta_ts>2012-10-04 13:49:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98431-20121004121103.patch</filename>
            <type>text/plain</type>
            <size>31341</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwNDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBhbmQgbG9nIEhlYXAgbWVt
b3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW1wcm92ZSBvdXIgaW5mcmFzdHJ1Y3R1cmUgZm9y
IGJlbmNobWFyay1kcml2ZW4gZGV2ZWxvcG1lbnQsIHdlIHNob3VsZCAKKyAgICAgICAgaGF2ZSBh
IGNlbnRyYWxpemVkIG1ldGhvZCBvZiBnYXRoZXJpbmcgYW5kIGxvZ2dpbmcgdmFyaW91cyBzdGF0
aXN0aWNzIGFib3V0IHRoZSBzdGF0ZSAKKyAgICAgICAgb2YgdGhlIEpTIGhlYXAuIFRoaXMgd291
bGQgYWxsb3cgdXMgdG8gY3JlYXRlIGFuZCB0byB1c2Ugb3RoZXIgdG9vbHMgdG8gYW5hbHl6ZSB0
aGUgCisgICAgICAgIG91dHB1dCBvZiB0aGUgVk0gYWZ0ZXIgcnVubmluZyB2YXJpb3VzIHdvcmts
b2Fkcy4KKworICAgICAgICBUaGUgZmlyc3QgdHdvIHN0YXRpc3RpY3MgdGhhdCBtaWdodCBiZSBp
bnRlcmVzdGluZyBpcyBtZW1vcnkgdXNlIGJ5IEpTQyBhbmQgR0MgcGF1c2UgCisgICAgICAgIHRp
bWVzLiBXZSBjYW4gY29udHJvbCB3aGV0aGVyIHRoaXMgcmVjb3JkaW5nIGhhcHBlbnMgdGhyb3Vn
aCB0aGUgdXNlIG9mIHRoZSBPcHRpb25zIAorICAgICAgICBjbGFzcywgYWxsb3dpbmcgdXMgdG8g
ZWl0aGVyIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgY29tbWFuZCBsaW5lIGZsYWdzLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KTogSWYg
d2UgZmluaXNoIGEgY29sbGVjdGlvbiBhbmQgYXJlIHN0aWxsIG92ZXIgb3VyIHNldCBHQyBoZWFw
IHNpemUsIAorICAgICAgICB3ZSBlbmQgdGhlIHByb2dyYW0gaW1tZWRpYXRlbHkgYW5kIHJlcG9y
dCBhbiBlcnJvci4gQWxzbyBhZGRlZCByZWNvcmRpbmcgb2YgcGF1c2UgdGltZXMuCisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2hv
dWxkQ29sbGVjdCk6IFdoZW4gd2Ugc2V0IGEgc3BlY2lmaWMgR0MgaGVhcCBzaXplIHRocm91Z2gg
T3B0aW9ucywgd2UgCisgICAgICAgIGlnbm9yZSBhbGwgb3RoZXIgaGV1cmlzdGljcyBvbiB3aGVu
IHdlIHNob3VsZCBjb2xsZWN0IGFuZCBpbnN0ZWFkIG9ubHkgYXNrIGlmIHdlJ3JlIAorICAgICAg
ICBncmVhdGVyIHRoYW4gdGhlIGFtb3VudCBzcGVjaWZpZWQgaW4gdGhlIE9wdGlvbiB2YWx1ZS4g
VGhpcyBhbGxvd3MgdXMgdG8gdmlldyB0aW1lL21lbW9yeSAKKyAgICAgICAgdHJhZGVvZmZzIG1v
cmUgY2xlYXJseS4KKyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZSk6CisgICAg
ICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpsb2dTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6
SGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSk6CisgICAgICAgIChKU0M6OkhlYXBTdGF0
aXN0aWNzOjpyZXBvcnRTdWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcFN0YXRpc3RpY3M6OnBh
cnNlTWVtb3J5QW1vdW50KToKKyAgICAgICAgKFN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAg
KEpTQzo6U3RvcmFnZVN0YXRpc3RpY3M6OlN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKEpT
Qzo6U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpTdG9yYWdl
U3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCk6CisgICAgICAgIChK
U0M6OlN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OlN0b3Jh
Z2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSk6CisgICAgICAgIChKU0M6OlN0b3JhZ2VTdGF0aXN0
aWNzOjpzdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6c2hv
d09iamVjdFN0YXRpc3RpY3MpOiBNb3ZlZCB0aGUgb2xkIHNob3dIZWFwU3RhdGlzdGljcyAocmVu
YW1lZCB0byBzaG93T2JqZWN0U3RhdGlzdGljcykgCisgICAgICAgIHRvIHRyeSB0byBzdGFydCBj
b2xsZWN0aW5nIG91ciB2YXJpb3VzIG1lbW9yeSBzdGF0aXN0aWNzIGdhdGhlcmluZy9yZXBvcnRp
bmcgbWVjaGFuaXNtcyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgCisgICAgICAgIGNvZGViYXNl
IGludG8gb25lIHBsYWNlLgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcFN0YXRpc3RpY3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6IFdlIG5l
ZWQgdG8gaW5pdGlhbGl6ZSBvdXIgZGF0YSBzdHJ1Y3R1cmVzIGZvciByZWNvcmRpbmcgCisgICAg
ICAgIHN0YXRpc3RpY3MgaWYgbmVjZXNzYXJ5LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6IEFkZCBuZXcgT3B0aW9ucyBmb3IgdGhlIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGlzdGljcyB3
ZSdsbCBiZSBnYXRoZXJpbmcuCisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOiBJbml0aWFsaXplIHRoZSB2YXJp
b3VzIG5ldyBvcHRpb25zIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgIChKU0MpOgorCiAyMDEyLTEwLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgbWlzc2luZyBMTEludCBkZXBlbmRlbmNpZXMg
dG8gdGhlIGJ1aWxkIHN5c3RlbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBoZWFwL0hhbmRsZVNldC5jcHAKICAgICBoZWFwL0hhbmRsZVN0YWNrLmNw
cAogICAgIGhlYXAvSGVhcC5jcHAKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAogICAgIGhl
YXAvSGVhcFRpbWVyLmNwcAogICAgIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAogICAgIGhl
YXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI4MCw2ICsyODAsOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwIFwKKyAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xpc3RhYmxlSGFuZGxlci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL0Jsb2NrQWxs
b2NhdG9yLmNwcCBcCiAgICAgaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwIFwKICAgICBoZWFw
L0hlYXAuY3BwIFwKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcCBcCiAgICAgaGVhcC9IZWFw
VGltZXIuY3BwIFwKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgXAogICAgIGhlYXAv
SklUU3R1YlJvdXRpbmVTZXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJD
b3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CisjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBA
IC01MjgsNiArNTI5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIFRS
WQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwogICAgIEVYQ0VQVChyZXMgPSAz
KQorICAgIGlmIChPcHRpb25zOjpsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCgpKQorICAgICAgICBI
ZWFwU3RhdGlzdGljczo6cmVwb3J0U3VjY2VzcygpOwogICAgIHJldHVybiByZXM7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjQ1Nyw2ICsyNDU3LDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxoZWFwXEhlYXBSb290VmlzaXRvci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAgICAgICAg
ICAgIDxGaWxlCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhlYXBT
dGF0aXN0aWNzLmNwcCIKKyAgICAgICAgICAgID4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhl
YXBTdGF0aXN0aWNzLmgiCisgICAgICAgICAgICA+CisgICAgICAgICAgICA8L0ZpbGU+CiAJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxMb2NhbC5oIgogCQkJCT4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNzEwLDYgKzcxMCw4IEBACiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3Bw
ICovOyB9OwogCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8q
IENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07
CisJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OworCQlDMjREMzFFMzE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlz
dGljcy5oICovOyB9OwogCQlDMjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxT
d2VlcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovOyB9
OwogCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQzE1NzU0
NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4IC8q
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkE3RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTQ4Niw2ICsxNDg4LDggQEAKIAkJQzIxMTIyRTAxNUREOUFCMzAwNzkwRTNBIC8qIE1hcmtT
dGFja0lubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFy
a1N0YWNrSW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjI1
NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2xvdFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVh
cFN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVh
cFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjREMzFFMTE2
MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEg
LyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluY3JlbWVudGFsU3dlZXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkE3
RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXN0cnVjdGlibGVPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTUsNiArMTgxOSw4IEBACiAJCTE0MkUzMTJBMTM0RkYw
QTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3Bw
ICovLAorCQkJCUMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICov
LAogCQkJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJ
CQkJQzIxMTIyREUxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi8s
CiAJCQkJQzIxMTIyREYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICov
LApAQCAtMjk2MSw2ICsyOTY3LDcgQEAKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyog
UHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjI1NTNEMjE2MTM2RTFB
MDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFG
QjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjREMzFF
MzE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MzU2Niw2ICszNTczLDcgQEAKIAkJCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZp
c2l0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYyNTUzRDExNjEzNkRBOTAwOUYxN0QwIC8q
IEpTUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NTQxQjExNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyNEQzMUUyMTYxQ0Q2
OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0
eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiSGVh
cFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgpAQCAtMjM1LDc0ICsy
MzYsNiBAQCBpbmxpbmUgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IFJlY29yZFR5CiAgICAgcmV0
dXJuIG1fdHlwZUNvdW50U2V0LnJlbGVhc2UoKTsKIH0KIAotY2xhc3MgU3RvcmFnZVN0YXRpc3Rp
Y3MgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLXB1YmxpYzoKLSAgICBTdG9y
YWdlU3RhdGlzdGljcygpOwotCi0gICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopOwotCi0gICAg
c2l6ZV90IG9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKTsKLSAgICBzaXplX3Qgb2Jq
ZWN0Q291bnQoKTsKLQotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSgpOwotICAgIHNpemVfdCBzdG9y
YWdlQ2FwYWNpdHkoKTsKLQotcHJpdmF0ZToKLSAgICBzaXplX3QgbV9vYmplY3RXaXRoT3V0T2ZM
aW5lU3RvcmFnZUNvdW50OwotICAgIHNpemVfdCBtX29iamVjdENvdW50OwotICAgIHNpemVfdCBt
X3N0b3JhZ2VTaXplOwotICAgIHNpemVfdCBtX3N0b3JhZ2VDYXBhY2l0eTsKLX07Ci0KLWlubGlu
ZSBTdG9yYWdlU3RhdGlzdGljczo6U3RvcmFnZVN0YXRpc3RpY3MoKQotICAgIDogbV9vYmplY3RX
aXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KDApCi0gICAgLCBtX29iamVjdENvdW50KDApCi0gICAg
LCBtX3N0b3JhZ2VTaXplKDApCi0gICAgLCBtX3N0b3JhZ2VDYXBhY2l0eSgwKQotewotfQotCi1p
bmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCi17
Ci0gICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBKU09i
amVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7Ci0gICAgaWYgKGhhc0luZGV4
ZWRQcm9wZXJ0aWVzKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVE
aWN0aW9uYXJ5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICsrbV9vYmplY3RDb3VudDsKLSAg
ICBpZiAoIW9iamVjdC0+aGFzSW5saW5lU3RvcmFnZSgpKQotICAgICAgICArK21fb2JqZWN0V2l0
aE91dE9mTGluZVN0b3JhZ2VDb3VudDsKLSAgICBtX3N0b3JhZ2VTaXplICs9IG9iamVjdC0+c3Ry
dWN0dXJlKCktPnRvdGFsU3RvcmFnZVNpemUoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KTsKLSAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3QtPnN0cnVjdHVyZSgpLT50
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4p
OyAKLX0KLQotaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9m
TGluZVN0b3JhZ2VDb3VudCgpCi17Ci0gICAgcmV0dXJuIG1fb2JqZWN0V2l0aE91dE9mTGluZVN0
b3JhZ2VDb3VudDsKLX0KLQotaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0
Q291bnQoKQotewotICAgIHJldHVybiBtX29iamVjdENvdW50OwotfQotCi0KLWlubGluZSBzaXpl
X3QgU3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VTaXplKCkKLXsKLSAgICByZXR1cm4gbV9zdG9y
YWdlU2l6ZTsKLX0KLQotCi1pbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpzdG9yYWdl
Q2FwYWNpdHkoKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VDYXBhY2l0eTsKLX0KLQogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBIZWFwVHlwZSBoZWFwVHlwZSkKQEAgLTgzMSw2ICs3NjQsOSBAQCB2b2lkIEhlYXA6OmNvbGxl
Y3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgfQogICAgIAogICAgIHNpemVfdCBjdXJyZW50
SGVhcFNpemUgPSBzaXplKCk7CisgICAgaWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBj
dXJyZW50SGVhcFNpemUgPiBPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCisgICAgICAgIEhlYXBT
dGF0aXN0aWNzOjpleGl0V2l0aEZhaWx1cmUoKTsKKwogICAgIGlmIChmdWxsR0MpIHsKICAgICAg
ICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCA9IGN1cnJlbnRIZWFwU2l6ZTsKIApAQCAtODQ0LDYg
Kzc4MCw4IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICBk
b3VibGUgbGFzdEdDRW5kVGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKICAgICBtX2xhc3RHQ0xl
bmd0aCA9IGxhc3RHQ0VuZFRpbWUgLSBsYXN0R0NTdGFydFRpbWU7CiAKKyAgICBpZiAoT3B0aW9u
czo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpCisgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRH
Q1BhdXNlVGltZShsYXN0R0NTdGFydFRpbWUsIGxhc3RHQ0VuZFRpbWUpOwogICAgIGlmIChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgIT0gQ29sbGVjdGlvbikKICAgICAgICAgQ1JBU0goKTsKICAgICBt
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKQEAgLTg1NSwzMSArNzkzLDggQEAg
dm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgIGlmIChPcHRpb25z
OjpvYmplY3RzQXJlSW1tb3J0YWwoKSkKICAgICAgICAgbWFya0RlYWRPYmplY3RzKCk7CiAKLSAg
ICBpZiAoT3B0aW9uczo6c2hvd0hlYXBTdGF0aXN0aWNzKCkpCi0gICAgICAgIHNob3dTdGF0aXN0
aWNzKCk7Ci19Ci0KLXZvaWQgSGVhcDo6c2hvd1N0YXRpc3RpY3MoKQotewotICAgIGRhdGFMb2co
IlxuPT09IEhlYXAgU3RhdGlzdGljczogPT09XG4iKTsKLSAgICBkYXRhTG9nKCJzaXplOiAlbGRr
QlxuIiwgc3RhdGljX2Nhc3Q8bG9uZz4obV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAvIEtCKSk7Ci0g
ICAgZGF0YUxvZygiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihjYXBhY2l0
eSgpIC8gS0IpKTsKLSAgICBkYXRhTG9nKCJwYXVzZSB0aW1lOiAlbGZtc1xuXG4iLCBtX2xhc3RH
Q0xlbmd0aCk7Ci0KLSAgICBTdG9yYWdlU3RhdGlzdGljcyBzdG9yYWdlU3RhdGlzdGljczsKLSAg
ICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbChzdG9yYWdlU3RhdGlzdGljcyk7Ci0gICAg
ZGF0YUxvZygid2FzdGVkIC5wcm9wZXJ0eSBzdG9yYWdlOiAlbGRrQiAoJWxkJSUpXG4iLAotICAg
ICAgICBzdGF0aWNfY2FzdDxsb25nPigKLSAgICAgICAgICAgIChzdG9yYWdlU3RhdGlzdGljcy5z
dG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VTaXplKCkpIC8gS0Ip
LAotICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKLSAgICAgICAgICAgIChzdG9yYWdlU3RhdGlz
dGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VTaXplKCkp
ICogMTAwCi0gICAgICAgICAgICAgICAgLyBzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNp
dHkoKSkpOwotICAgIGRhdGFMb2coIm9iamVjdHMgd2l0aCBvdXQtb2YtbGluZSAucHJvcGVydHkg
c3RvcmFnZTogJWxkICglbGQlJSlcbiIsCi0gICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAotICAg
ICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3Vu
dCgpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCi0gICAgICAgICAgICBzdG9yYWdlU3Rh
dGlzdGljcy5vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KCkgKiAxMDAKLSAgICAgICAg
ICAgICAgICAvIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdENvdW50KCkpKTsKKyAgICBpZiAoT3B0
aW9uczo6c2hvd09iamVjdFN0YXRpc3RpY3MoKSkKKyAgICAgICAgSGVhcFN0YXRpc3RpY3M6OnNo
b3dPYmplY3RTdGF0aXN0aWNzKHRoaXMpOwogfQogCiB2b2lkIEhlYXA6Om1hcmtEZWFkT2JqZWN0
cygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMzA0MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZEJs
b2NrU2V0LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgi
CiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIK
ICNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0LmgiCkBAIC0xODIsNiArMTgzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIENvcGllZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0
b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwU3RhdGlzdGljczsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJik7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNp
emVfdCk7CiAKQEAgLTI1OCw2ICsyNjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGlu
ZSBib29sIEhlYXA6OnNob3VsZENvbGxlY3QoKQogICAgIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6
OmdjTWF4SGVhcFNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkID4g
T3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpICYmIG1faXNTYWZlVG9Db2xsZWN0ICYmIG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbjsKICNpZiBFTkFCTEUoR0dDKQogICAgICAgICBy
ZXR1cm4gbV9vYmplY3RTcGFjZS5udXJzZXJ5V2F0ZXJNYXJrKCkgPj0gbV9taW5CeXRlc1BlckN5
Y2xlICYmIG1faXNTYWZlVG9Db2xsZWN0ICYmIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09w
ZXJhdGlvbjsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Rh
dGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5o
IgorCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
T3B0aW9ucy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5o
PgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitkb3VibGUgSGVh
cFN0YXRpc3RpY3M6OnNfc3RhcnRUaW1lID0gMC4wOworZG91YmxlIEhlYXBTdGF0aXN0aWNzOjpz
X2VuZFRpbWUgPSAwLjA7CitEZXF1ZTxkb3VibGU+KiBIZWFwU3RhdGlzdGljczo6c19wYXVzZVRp
bWVTdGFydHMgPSAwOworRGVxdWU8ZG91YmxlPiogSGVhcFN0YXRpc3RpY3M6OnNfcGF1c2VUaW1l
RW5kcyA9IDA7CisKK3ZvaWQgSGVhcFN0YXRpc3RpY3M6OmluaXRpYWxpemUoKQoreworICAgIEFT
U0VSVChPcHRpb25zOjpyZWNvcmRHQ1BhdXNlVGltZXMoKSk7CisgICAgc19zdGFydFRpbWUgPSBX
VEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIHNfcGF1c2VUaW1lU3RhcnRz
ID0gbmV3IERlcXVlPGRvdWJsZT4oKTsKKyAgICBzX3BhdXNlVGltZUVuZHMgPSBuZXcgRGVxdWU8
ZG91YmxlPigpOworfQorCit2b2lkIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShk
b3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCit7CisgICAgQVNTRVJUKE9wdGlvbnM6OnJlY29yZEdD
UGF1c2VUaW1lcygpKTsKKyAgICBBU1NFUlQoc19wYXVzZVRpbWVTdGFydHMpOworICAgIEFTU0VS
VChzX3BhdXNlVGltZUVuZHMpOworICAgIHNfcGF1c2VUaW1lU3RhcnRzLT5hcHBlbmQoc3RhcnQp
OworICAgIHNfcGF1c2VUaW1lRW5kcy0+YXBwZW5kKGVuZCk7Cit9CisKK3ZvaWQgSGVhcFN0YXRp
c3RpY3M6OmxvZ1N0YXRpc3RpY3MoKQoreworICAgIHN0cnVjdCBydXNhZ2UgdXNhZ2U7CisgICAg
Z2V0cnVzYWdlKFJVU0FHRV9TRUxGLCAmdXNhZ2UpOworI2lmIFVTRShDRikgfHwgT1MoVU5JWCkK
KyAgICBjaGFyKiB2bU5hbWUgPSBnZXRlbnYoIkpTVk1OYW1lIik7CisgICAgY2hhciogc3VpdGVO
YW1lID0gZ2V0ZW52KCJKU1N1aXRlTmFtZSIpOworICAgIGNoYXIqIGJlbmNobWFya05hbWUgPSBn
ZXRlbnYoIkpTQmVuY2htYXJrTmFtZSIpOworI2Vsc2UKKyNlcnJvciAiVGhlIEhlYXBTdGF0aXN0
aWNzIG1vZHVsZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmCisg
ICAgaWYgKCF2bU5hbWUgfHwgIXN1aXRlTmFtZSB8fCAhYmVuY2htYXJrTmFtZSkKKyAgICAgICAg
ZGF0YUxvZygiSGVhcFN0YXRpc3RpY3M6IHtcIm1heF9yc3NcIjogJWxkIiwgdXNhZ2UucnVfbWF4
cnNzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFMb2coIkhlYXBTdGF0aXN0aWNzOiB7XCJtYXhf
cnNzXCI6ICVsZCwgXCJ2bV9uYW1lXCI6IFwiJXNcIiwgXCJzdWl0ZV9uYW1lXCI6IFwiJXNcIiwg
XCJiZW5jaG1hcmtfbmFtZVwiOiBcIiVzXCIiLCAKKyAgICAgICAgICAgIHVzYWdlLnJ1X21heHJz
cywgdm1OYW1lLCBzdWl0ZU5hbWUsIGJlbmNobWFya05hbWUpOyAKKworICAgIGlmIChPcHRpb25z
OjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkgeworICAgICAgICBkYXRhTG9nKCIsIFwicGF1c2VfdGlt
ZXNcIjogWyIpOworICAgICAgICBEZXF1ZTxkb3VibGU+OjppdGVyYXRvciBzdGFydEl0ID0gc19w
YXVzZVRpbWVTdGFydHMtPmJlZ2luKCk7CisgICAgICAgIERlcXVlPGRvdWJsZT46Oml0ZXJhdG9y
IGVuZEl0ID0gc19wYXVzZVRpbWVFbmRzLT5iZWdpbigpOworICAgICAgICBpZiAoc3RhcnRJdCAh
PSBzX3BhdXNlVGltZVN0YXJ0cy0+ZW5kKCkgJiYgZW5kSXQgIT0gc19wYXVzZVRpbWVFbmRzLT5l
bmQoKSkgeworICAgICAgICAgICAgZGF0YUxvZygiWyVmLCAlZl0iLCAqc3RhcnRJdCwgKmVuZEl0
KTsKKyAgICAgICAgICAgICsrc3RhcnRJdDsKKyAgICAgICAgICAgICsrZW5kSXQ7CisgICAgICAg
IH0KKyAgICAgICAgd2hpbGUgKHN0YXJ0SXQgIT0gc19wYXVzZVRpbWVTdGFydHMtPmVuZCgpICYm
IGVuZEl0ICE9IHNfcGF1c2VUaW1lRW5kcy0+ZW5kKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2co
IiwgWyVmLCAlZl0iLCAqc3RhcnRJdCwgKmVuZEl0KTsKKyAgICAgICAgICAgICsrc3RhcnRJdDsK
KyAgICAgICAgICAgICsrZW5kSXQ7CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZygiXSwgXCJz
dGFydF90aW1lXCI6ICVmLCBcImVuZF90aW1lXCI6ICVmIiwgc19zdGFydFRpbWUsIHNfZW5kVGlt
ZSk7CisgICAgfQorICAgIGRhdGFMb2coIn1cbiIpOworfQorCit2b2lkIEhlYXBTdGF0aXN0aWNz
OjpleGl0V2l0aEZhaWx1cmUoKQoreworICAgIEFTU0VSVChPcHRpb25zOjpsb2dIZWFwU3RhdGlz
dGljc0F0RXhpdCgpKTsKKyAgICBzX2VuZFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOworICAgIGxvZ1N0YXRpc3RpY3MoKTsKKyAgICBleGl0KC0xKTsKK30KKwordm9p
ZCBIZWFwU3RhdGlzdGljczo6cmVwb3J0U3VjY2VzcygpCit7CisgICAgQVNTRVJUKE9wdGlvbnM6
OmxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkpOworICAgIHNfZW5kVGltZSA9IFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbG9nU3RhdGlzdGljcygpOworfQorCitzaXpl
X3QgSGVhcFN0YXRpc3RpY3M6OnBhcnNlTWVtb3J5QW1vdW50KGNoYXIqIHMpCit7CisgICAgc2l6
ZV90IG11bHRpcGxpZXIgPSAxOworICAgIGNoYXIqIGFmdGVyUzsKKyAgICBzaXplX3QgdmFsdWUg
PSBzdHJ0b2wocywgJmFmdGVyUywgMTApOworICAgIGNoYXIgbmV4dCA9IGFmdGVyU1swXTsKKyAg
ICBzd2l0Y2ggKG5leHQpIHsKKyAgICBjYXNlICdLJzoKKyAgICAgICAgbXVsdGlwbGllciA9IEtC
OworICAgICAgICBicmVhazsKKyAgICBjYXNlICdNJzoKKyAgICAgICAgbXVsdGlwbGllciA9IE1C
OworICAgICAgICBicmVhazsKKyAgICBjYXNlICdHJzoKKyAgICAgICAgbXVsdGlwbGllciA9IEdC
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIHZhbHVlICogbXVsdGlwbGllcjsKK30KKworY2xhc3MgU3RvcmFnZVN0YXRpc3Rp
Y3MgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBTdG9y
YWdlU3RhdGlzdGljcygpOworCisgICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopOworCisgICAg
c2l6ZV90IG9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKTsKKyAgICBzaXplX3Qgb2Jq
ZWN0Q291bnQoKTsKKworICAgIHNpemVfdCBzdG9yYWdlU2l6ZSgpOworICAgIHNpemVfdCBzdG9y
YWdlQ2FwYWNpdHkoKTsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9vYmplY3RXaXRoT3V0T2ZM
aW5lU3RvcmFnZUNvdW50OworICAgIHNpemVfdCBtX29iamVjdENvdW50OworICAgIHNpemVfdCBt
X3N0b3JhZ2VTaXplOworICAgIHNpemVfdCBtX3N0b3JhZ2VDYXBhY2l0eTsKK307CisKK2lubGlu
ZSBTdG9yYWdlU3RhdGlzdGljczo6U3RvcmFnZVN0YXRpc3RpY3MoKQorICAgIDogbV9vYmplY3RX
aXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KDApCisgICAgLCBtX29iamVjdENvdW50KDApCisgICAg
LCBtX3N0b3JhZ2VTaXplKDApCisgICAgLCBtX3N0b3JhZ2VDYXBhY2l0eSgwKQoreworfQorCitp
bmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCit7
CisgICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU09i
amVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgaWYgKGhhc0luZGV4
ZWRQcm9wZXJ0aWVzKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVE
aWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybjsKKworICAgICsrbV9vYmplY3RDb3VudDsKKyAg
ICBpZiAoIW9iamVjdC0+aGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICArK21fb2JqZWN0V2l0
aE91dE9mTGluZVN0b3JhZ2VDb3VudDsKKyAgICBtX3N0b3JhZ2VTaXplICs9IG9iamVjdC0+c3Ry
dWN0dXJlKCktPnRvdGFsU3RvcmFnZVNpemUoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KTsKKyAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3QtPnN0cnVjdHVyZSgpLT50
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4p
OyAKK30KKworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9m
TGluZVN0b3JhZ2VDb3VudCgpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0V2l0aE91dE9mTGluZVN0
b3JhZ2VDb3VudDsKK30KKworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0
Q291bnQoKQoreworICAgIHJldHVybiBtX29iamVjdENvdW50OworfQorCitpbmxpbmUgc2l6ZV90
IFN0b3JhZ2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSgpCit7CisgICAgcmV0dXJuIG1fc3RvcmFn
ZVNpemU7Cit9CisKK2lubGluZSBzaXplX3QgU3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VDYXBh
Y2l0eSgpCit7CisgICAgcmV0dXJuIG1fc3RvcmFnZUNhcGFjaXR5OworfQorCit2b2lkIEhlYXBT
dGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyhIZWFwKiBoZWFwKQoreworICAgIGRhdGFM
b2coIlxuPT09IEhlYXAgU3RhdGlzdGljczogPT09XG4iKTsKKyAgICBkYXRhTG9nKCJzaXplOiAl
bGRrQlxuIiwgc3RhdGljX2Nhc3Q8bG9uZz4oaGVhcC0+bV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAv
IEtCKSk7CisgICAgZGF0YUxvZygiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25n
PihoZWFwLT5jYXBhY2l0eSgpIC8gS0IpKTsKKyAgICBkYXRhTG9nKCJwYXVzZSB0aW1lOiAlbGZt
c1xuXG4iLCBoZWFwLT5tX2xhc3RHQ0xlbmd0aCk7CisKKyAgICBTdG9yYWdlU3RhdGlzdGljcyBz
dG9yYWdlU3RhdGlzdGljczsKKyAgICBoZWFwLT5tX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2Vs
bChzdG9yYWdlU3RhdGlzdGljcyk7CisgICAgZGF0YUxvZygid2FzdGVkIC5wcm9wZXJ0eSBzdG9y
YWdlOiAlbGRrQiAoJWxkJSUpXG4iLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKKyAgICAg
ICAgICAgIChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0
aXN0aWNzLnN0b3JhZ2VTaXplKCkpIC8gS0IpLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigK
KyAgICAgICAgICAgIChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3Jh
Z2VTdGF0aXN0aWNzLnN0b3JhZ2VTaXplKCkpICogMTAwCisgICAgICAgICAgICAgICAgLyBzdG9y
YWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSkpOworICAgIGRhdGFMb2coIm9iamVjdHMg
d2l0aCBvdXQtb2YtbGluZSAucHJvcGVydHkgc3RvcmFnZTogJWxkICglbGQlJSlcbiIsCisgICAg
ICAgIHN0YXRpY19jYXN0PGxvbmc+KAorICAgICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2Jq
ZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8bG9u
Zz4oCisgICAgICAgICAgICBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RXaXRoT3V0T2ZMaW5lU3Rv
cmFnZUNvdW50KCkgKiAxMDAKKyAgICAgICAgICAgICAgICAvIHN0b3JhZ2VTdGF0aXN0aWNzLm9i
amVjdENvdW50KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIZWFwU3RhdGlzdGljc19oCisjZGVm
aW5lIEhlYXBTdGF0aXN0aWNzX2gKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSGVhcDsKKworY2xhc3MgSGVhcFN0YXRpc3RpY3MgeworcHVibGlj
OgorICAgIE5PX1JFVFVSTiBzdGF0aWMgdm9pZCBleGl0V2l0aEZhaWx1cmUoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZXBvcnRTdWNjZXNzKCk7CisKKyAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKCk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkR0NQYXVzZVRpbWUoZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBzdGF0aWMgc2l6ZV90IHBhcnNlTWVtb3J5QW1v
dW50KGNoYXIqKTsKKworICAgIHN0YXRpYyB2b2lkIHNob3dPYmplY3RTdGF0aXN0aWNzKEhlYXAq
KTsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0OworICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgTUIgPSAxMDI0ICogS0I7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBHQiA9IDEw
MjQgKiBNQjsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBsb2dTdGF0aXN0aWNzKCk7Cisg
ICAgc3RhdGljIERlcXVlPGRvdWJsZT4qIHNfcGF1c2VUaW1lU3RhcnRzOworICAgIHN0YXRpYyBE
ZXF1ZTxkb3VibGU+KiBzX3BhdXNlVGltZUVuZHM7CisgICAgc3RhdGljIGRvdWJsZSBzX3N0YXJ0
VGltZTsKKyAgICBzdGF0aWMgZG91YmxlIHNfZW5kVGltZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRv
ci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNE
YXRlTWF0aC5oIgpAQCAtNTYsNiArNTcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nT25jZSgpCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgR2xvYmFsSlNM
b2NrOjppbml0aWFsaXplKCk7CiAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpOworICAgIGlmIChP
cHRpb25zOjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkKKyAgICAgICAgSGVhcFN0YXRpc3RpY3M6Omlu
aXRpYWxpemUoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgV3Jp
dGVCYXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEzMDQwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5o
IgogCisjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC03NSw2ICs3NiwxMSBAQCBz
dGF0aWMgYm9vbCBwYXJzZShjb25zdCBjaGFyKiBzdHJpbmcsIGRvCiAgICAgcmV0dXJuIHNzY2Fu
ZihzdHJpbmcsICIlbGYiLCAmdmFsdWUpID09IDE7CiB9CiAKK3N0YXRpYyBib29sIHBhcnNlKGNv
bnN0IGNoYXIqIHN0cmluZywgc2l6ZV90JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gc3NjYW5mKHN0
cmluZywgIiVsdSIsICZ2YWx1ZSkgPT0gMTsKK30KKwogI2lmIEVOQUJMRShSVU5fVElNRV9IRVVS
SVNUSUNTKQogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQgb3ZlcnJpZGVPcHRpb25XaXRoSGV1
cmlzdGljKFQmIHZhcmlhYmxlLCBjb25zdCBjaGFyKiBuYW1lKQpAQCAtMTMwLDYgKzEzNiwxMCBA
QCB2b2lkIE9wdGlvbnM6OmluaXRpYWxpemUoKQogI2lmIFVTRShDRikgfHwgT1MoVU5JWCkKICAg
ICBvYmplY3RzQXJlSW1tb3J0YWwoKSA9ICEhZ2V0ZW52KCJKU0ltbW9ydGFsWm9tYmllRW5hYmxl
ZCIpOwogICAgIHVzZVpvbWJpZU1vZGUoKSA9ICEhZ2V0ZW52KCJKU0ltbW9ydGFsWm9tYmllRW5h
YmxlZCIpIHx8ICEhZ2V0ZW52KCJKU1pvbWJpZUVuYWJsZWQiKTsKKworICAgIGdjTWF4SGVhcFNp
emUoKSA9IGdldGVudigiR0NNYXhIZWFwU2l6ZSIpID8gSGVhcFN0YXRpc3RpY3M6OnBhcnNlTWVt
b3J5QW1vdW50KGdldGVudigiR0NNYXhIZWFwU2l6ZSIpKSA6IDA7CisgICAgcmVjb3JkR0NQYXVz
ZVRpbWVzKCkgPSAhIWdldGVudigiSlNSZWNvcmRHQ1BhdXNlVGltZXMiKTsKKyAgICBsb2dIZWFw
U3RhdGlzdGljc0F0RXhpdCgpID0gZ2NNYXhIZWFwU2l6ZSgpIHx8IHJlY29yZEdDUGF1c2VUaW1l
cygpOwogI2VuZGlmCiAKICAgICAvLyBBbGxvdyBlbnZpcm9ubWVudCB2YXJzIHRvIG92ZXJyaWRl
IG9wdGlvbnMgaWYgYXBwbGljYWJsZS4KQEAgLTIyOSw2ICsyMzksOSBAQCB2b2lkIE9wdGlvbnM6
OmR1bXBPcHRpb24oT3B0aW9uSUQgaWQsIEZJCiAgICAgY2FzZSBpbnQzMlR5cGU6CiAgICAgICAg
IGZwcmludGYoc3RyZWFtLCAiJWQiLCBzX29wdGlvbnNbaWRdLnUuaW50MzJWYWwpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIHNpemVfdFR5cGU6CisgICAgICAgIGZwcmludGYoc3RyZWFtLCAi
JWx1Iiwgc19vcHRpb25zW2lkXS51LnNpemVfdFZhbCk7CisgICAgICAgIGJyZWFrOwogICAgIH0K
ICAgICBmcHJpbnRmKHN0cmVhbSwgIiVzIiwgZm9vdGVyKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDgg
KzEyMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBcCiAgICAgdihib29sLCB1c2Vab21iaWVN
b2RlLCBmYWxzZSkgXAogICAgIHYoYm9vbCwgb2JqZWN0c0FyZUltbW9ydGFsLCBmYWxzZSkgXAot
ICAgIHYoYm9vbCwgc2hvd0hlYXBTdGF0aXN0aWNzLCBmYWxzZSkKLQorICAgIHYoYm9vbCwgc2hv
d09iamVjdFN0YXRpc3RpY3MsIGZhbHNlKSBcCisgICAgXAorICAgIHYoc2l6ZV90LCBnY01heEhl
YXBTaXplLCAwKSBcCisgICAgdihib29sLCByZWNvcmRHQ1BhdXNlVGltZXMsIGZhbHNlKSBcCisg
ICAgdihib29sLCBsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCwgZmFsc2UpIAogCiBjbGFzcyBPcHRp
b25zIHsKIHB1YmxpYzoKQEAgLTE2MSw3ICsxNjQsOCBAQCBwcml2YXRlOgogICAgICAgICBib29s
VHlwZSwKICAgICAgICAgdW5zaWduZWRUeXBlLAogICAgICAgICBkb3VibGVUeXBlLAotICAgICAg
ICBpbnQzMlR5cGUKKyAgICAgICAgaW50MzJUeXBlLAorICAgICAgICBzaXplX3RUeXBlCiAgICAg
fTsKIAogICAgIC8vIEZvciBzdG9yaW5nIGZvciBhbiBvcHRpb24gdmFsdWU6CkBAIC0xNzEsNiAr
MTc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHVuc2lnbmVkIHVuc2lnbmVkVmFsOwogICAg
ICAgICAgICAgZG91YmxlIGRvdWJsZVZhbDsKICAgICAgICAgICAgIGludDMyIGludDMyVmFsOwor
ICAgICAgICAgICAgc2l6ZV90IHNpemVfdFZhbDsKICAgICAgICAgfSB1OwogICAgIH07CiAKSW5k
ZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEzMDQxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5j
b20+CisKKyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBhbmQgbG9nIEhl
YXAgbWVtb3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUu
bW06CisgICAgICAgIChtYWluKTogQWRkZWQgYSBjaGVjayBhcyB0byB3aGV0aGVyIHdlIHNob3Vs
ZCBkdW1wIG91ciBKU0MgSGVhcCBzdGF0aXN0aWNzIG9uIGV4aXQuCisKIDIwMTItMTAtMDQgIENo
cmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBb
RUZMXVtXSzJdIEFkZCBzZXR0aW5nIHRvIGFsbG93IGZpbGUgYWNjZXNzIGZyb20gZmlsZTovLyBV
UkxzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShy
ZXZpc2lvbiAxMzA0MDcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAKICNpbXBvcnQgIldvcmtRdWV1
ZUl0ZW0uaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPENvcmVGb3VuZGF0
aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9IZWFwU3RhdGlz
dGljcy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Gb3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NRWxlbWVudC5oPgog
I2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KQEAgLTkxNyw3ICs5MTksOSBAQCBpbnQg
bWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogICAgIFtEdW1wUmVuZGVyVHJlZUFw
cGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsgLy8gRm9yY2UgQXBwS2l0IHRvIGluaXQgaXRz
ZWxmCiAgICAgZHVtcFJlbmRlclRyZWUoYXJnYywgYXJndik7CiAgICAgW1dlYkNvcmVTdGF0aXN0
aWNzIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNdOwotICAgIFtXZWJDb3JlU3RhdGlz
dGljcyBlbXB0eUNhY2hlXTsgLy8gT3RoZXJ3aXNlIFNWR0ltYWdlcyB0cmlnZ2VyIGZhbHNlIHBv
c2l0aXZlcyBmb3IgRnJhbWUvTm9kZSBjb3VudHMgICAgCisgICAgW1dlYkNvcmVTdGF0aXN0aWNz
IGVtcHR5Q2FjaGVdOyAvLyBPdGhlcndpc2UgU1ZHSW1hZ2VzIHRyaWdnZXIgZmFsc2UgcG9zaXRp
dmVzIGZvciBGcmFtZS9Ob2RlIGNvdW50cworICAgIGlmIChKU0M6Ok9wdGlvbnM6OmxvZ0hlYXBT
dGF0aXN0aWNzQXRFeGl0KCkpCisgICAgICAgIEpTQzo6SGVhcFN0YXRpc3RpY3M6OnJlcG9ydFN1
Y2Nlc3MoKTsKICAgICBbcG9vbCByZWxlYXNlXTsKICAgICByZXR1cm4gMDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167169</attachid>
            <date>2012-10-04 13:49:26 -0700</date>
            <delta_ts>2012-10-04 15:14:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98431-20121004134837.patch</filename>
            <type>text/plain</type>
            <size>30501</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwNDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBhbmQgbG9nIEhlYXAgbWVt
b3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW1wcm92ZSBvdXIgaW5mcmFzdHJ1Y3R1cmUgZm9y
IGJlbmNobWFyay1kcml2ZW4gZGV2ZWxvcG1lbnQsIHdlIHNob3VsZCAKKyAgICAgICAgaGF2ZSBh
IGNlbnRyYWxpemVkIG1ldGhvZCBvZiBnYXRoZXJpbmcgYW5kIGxvZ2dpbmcgdmFyaW91cyBzdGF0
aXN0aWNzIGFib3V0IHRoZSBzdGF0ZSAKKyAgICAgICAgb2YgdGhlIEpTIGhlYXAuIFRoaXMgd291
bGQgYWxsb3cgdXMgdG8gY3JlYXRlIGFuZCB0byB1c2Ugb3RoZXIgdG9vbHMgdG8gYW5hbHl6ZSB0
aGUgCisgICAgICAgIG91dHB1dCBvZiB0aGUgVk0gYWZ0ZXIgcnVubmluZyB2YXJpb3VzIHdvcmts
b2Fkcy4KKworICAgICAgICBUaGUgZmlyc3QgdHdvIHN0YXRpc3RpY3MgdGhhdCBtaWdodCBiZSBp
bnRlcmVzdGluZyBpcyBtZW1vcnkgdXNlIGJ5IEpTQyBhbmQgR0MgcGF1c2UgCisgICAgICAgIHRp
bWVzLiBXZSBjYW4gY29udHJvbCB3aGV0aGVyIHRoaXMgcmVjb3JkaW5nIGhhcHBlbnMgdGhyb3Vn
aCB0aGUgdXNlIG9mIHRoZSBPcHRpb25zIAorICAgICAgICBjbGFzcywgYWxsb3dpbmcgdXMgdG8g
ZWl0aGVyIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgY29tbWFuZCBsaW5lIGZsYWdzLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KTogSWYg
d2UgZmluaXNoIGEgY29sbGVjdGlvbiBhbmQgYXJlIHN0aWxsIG92ZXIgb3VyIHNldCBHQyBoZWFw
IHNpemUsIAorICAgICAgICB3ZSBlbmQgdGhlIHByb2dyYW0gaW1tZWRpYXRlbHkgYW5kIHJlcG9y
dCBhbiBlcnJvci4gQWxzbyBhZGRlZCByZWNvcmRpbmcgb2YgcGF1c2UgdGltZXMuCisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2hv
dWxkQ29sbGVjdCk6IFdoZW4gd2Ugc2V0IGEgc3BlY2lmaWMgR0MgaGVhcCBzaXplIHRocm91Z2gg
T3B0aW9ucywgd2UgCisgICAgICAgIGlnbm9yZSBhbGwgb3RoZXIgaGV1cmlzdGljcyBvbiB3aGVu
IHdlIHNob3VsZCBjb2xsZWN0IGFuZCBpbnN0ZWFkIG9ubHkgYXNrIGlmIHdlJ3JlIAorICAgICAg
ICBncmVhdGVyIHRoYW4gdGhlIGFtb3VudCBzcGVjaWZpZWQgaW4gdGhlIE9wdGlvbiB2YWx1ZS4g
VGhpcyBhbGxvd3MgdXMgdG8gdmlldyB0aW1lL21lbW9yeSAKKyAgICAgICAgdHJhZGVvZmZzIG1v
cmUgY2xlYXJseS4KKyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZSk6CisgICAg
ICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpsb2dTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6
SGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSk6CisgICAgICAgIChKU0M6OkhlYXBTdGF0
aXN0aWNzOjpyZXBvcnRTdWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcFN0YXRpc3RpY3M6OnBh
cnNlTWVtb3J5QW1vdW50KToKKyAgICAgICAgKFN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAg
KEpTQzo6U3RvcmFnZVN0YXRpc3RpY3M6OlN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKEpT
Qzo6U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpTdG9yYWdl
U3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCk6CisgICAgICAgIChK
U0M6OlN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OlN0b3Jh
Z2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSk6CisgICAgICAgIChKU0M6OlN0b3JhZ2VTdGF0aXN0
aWNzOjpzdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6c2hv
d09iamVjdFN0YXRpc3RpY3MpOiBNb3ZlZCB0aGUgb2xkIHNob3dIZWFwU3RhdGlzdGljcyAocmVu
YW1lZCB0byBzaG93T2JqZWN0U3RhdGlzdGljcykgCisgICAgICAgIHRvIHRyeSB0byBzdGFydCBj
b2xsZWN0aW5nIG91ciB2YXJpb3VzIG1lbW9yeSBzdGF0aXN0aWNzIGdhdGhlcmluZy9yZXBvcnRp
bmcgbWVjaGFuaXNtcyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgCisgICAgICAgIGNvZGViYXNl
IGludG8gb25lIHBsYWNlLgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcFN0YXRpc3RpY3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6IFdlIG5l
ZWQgdG8gaW5pdGlhbGl6ZSBvdXIgZGF0YSBzdHJ1Y3R1cmVzIGZvciByZWNvcmRpbmcgCisgICAg
ICAgIHN0YXRpc3RpY3MgaWYgbmVjZXNzYXJ5LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6IEFkZCBuZXcgT3B0aW9ucyBmb3IgdGhlIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGlzdGljcyB3
ZSdsbCBiZSBnYXRoZXJpbmcuCisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOiBJbml0aWFsaXplIHRoZSB2YXJp
b3VzIG5ldyBvcHRpb25zIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgIChKU0MpOgorCiAyMDEyLTEwLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgbWlzc2luZyBMTEludCBkZXBlbmRlbmNpZXMg
dG8gdGhlIGJ1aWxkIHN5c3RlbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBoZWFwL0hhbmRsZVNldC5jcHAKICAgICBoZWFwL0hhbmRsZVN0YWNrLmNw
cAogICAgIGhlYXAvSGVhcC5jcHAKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAogICAgIGhl
YXAvSGVhcFRpbWVyLmNwcAogICAgIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAogICAgIGhl
YXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI4MCw2ICsyODAsOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwIFwKKyAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xpc3RhYmxlSGFuZGxlci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL0Jsb2NrQWxs
b2NhdG9yLmNwcCBcCiAgICAgaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwIFwKICAgICBoZWFw
L0hlYXAuY3BwIFwKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcCBcCiAgICAgaGVhcC9IZWFw
VGltZXIuY3BwIFwKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgXAogICAgIGhlYXAv
SklUU3R1YlJvdXRpbmVTZXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJD
b3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CisjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBA
IC01MjgsNiArNTI5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIFRS
WQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwogICAgIEVYQ0VQVChyZXMgPSAz
KQorICAgIGlmIChPcHRpb25zOjpsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCgpKQorICAgICAgICBI
ZWFwU3RhdGlzdGljczo6cmVwb3J0U3VjY2VzcygpOwogICAgIHJldHVybiByZXM7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjQ1Nyw2ICsyNDU3LDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxoZWFwXEhlYXBSb290VmlzaXRvci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAgICAgICAg
ICAgIDxGaWxlCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhlYXBT
dGF0aXN0aWNzLmNwcCIKKyAgICAgICAgICAgID4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhl
YXBTdGF0aXN0aWNzLmgiCisgICAgICAgICAgICA+CisgICAgICAgICAgICA8L0ZpbGU+CiAJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxMb2NhbC5oIgogCQkJCT4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNzEwLDYgKzcxMCw4IEBACiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3Bw
ICovOyB9OwogCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8q
IENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07
CisJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OworCQlDMjREMzFFMzE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlz
dGljcy5oICovOyB9OwogCQlDMjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxT
d2VlcGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovOyB9
OwogCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQzE1NzU0
NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJBN0Y2ODgxNjA0MzJENDAwRjc2Qjk4IC8q
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMkE3RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVP
YmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtMTQ4Niw2ICsxNDg4LDggQEAKIAkJQzIxMTIyRTAxNUREOUFCMzAwNzkwRTNBIC8qIE1hcmtT
dGFja0lubGluZU1ldGhvZHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFy
a1N0YWNrSW5saW5lTWV0aG9kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjI1
NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2xvdFZpc2l0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVh
cFN0YXRpc3RpY3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGVh
cFN0YXRpc3RpY3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjREMzFFMTE2
MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSGVhcFN0YXRpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEg
LyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEluY3JlbWVudGFsU3dlZXBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkE3
RjY4NzE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNEZXN0cnVjdGlibGVPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4MTUsNiArMTgxOSw4IEBACiAJCTE0MkUzMTJBMTM0RkYw
QTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQlDMjREMzFFMDE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3Bw
ICovLAorCQkJCUMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oICov
LAogCQkJCUMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8sCiAJ
CQkJQzIxMTIyREUxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAgKi8s
CiAJCQkJQzIxMTIyREYxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5oICov
LApAQCAtMjk2MSw2ICsyOTY3LDcgQEAKIAkJCQkwRjBDRDRDMjE1RjFBNjA3MDAzMkYxQzAgLyog
UHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjI1NTNEMjE2MTM2RTFB
MDA5RjE3RDAgLyogSlNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY1NTQxQjIxNjEzQzFG
QjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjREMzFF
MzE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
MzU2Niw2ICszNTczLDcgQEAKIAkJCQlDMjI1NDk0MzE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZp
c2l0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYyNTUzRDExNjEzNkRBOTAwOUYxN0QwIC8q
IEpTUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NTQxQjExNjEzQzFGQjAwQ0UzRTI1
IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMyNEQzMUUyMTYxQ0Q2
OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0
eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiSGVh
cFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgpAQCAtMjM1LDc0ICsy
MzYsNiBAQCBpbmxpbmUgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+IFJlY29yZFR5CiAgICAgcmV0
dXJuIG1fdHlwZUNvdW50U2V0LnJlbGVhc2UoKTsKIH0KIAotY2xhc3MgU3RvcmFnZVN0YXRpc3Rp
Y3MgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKLXB1YmxpYzoKLSAgICBTdG9y
YWdlU3RhdGlzdGljcygpOwotCi0gICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopOwotCi0gICAg
c2l6ZV90IG9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKTsKLSAgICBzaXplX3Qgb2Jq
ZWN0Q291bnQoKTsKLQotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSgpOwotICAgIHNpemVfdCBzdG9y
YWdlQ2FwYWNpdHkoKTsKLQotcHJpdmF0ZToKLSAgICBzaXplX3QgbV9vYmplY3RXaXRoT3V0T2ZM
aW5lU3RvcmFnZUNvdW50OwotICAgIHNpemVfdCBtX29iamVjdENvdW50OwotICAgIHNpemVfdCBt
X3N0b3JhZ2VTaXplOwotICAgIHNpemVfdCBtX3N0b3JhZ2VDYXBhY2l0eTsKLX07Ci0KLWlubGlu
ZSBTdG9yYWdlU3RhdGlzdGljczo6U3RvcmFnZVN0YXRpc3RpY3MoKQotICAgIDogbV9vYmplY3RX
aXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KDApCi0gICAgLCBtX29iamVjdENvdW50KDApCi0gICAg
LCBtX3N0b3JhZ2VTaXplKDApCi0gICAgLCBtX3N0b3JhZ2VDYXBhY2l0eSgwKQotewotfQotCi1p
bmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCi17
Ci0gICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBKU09i
amVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7Ci0gICAgaWYgKGhhc0luZGV4
ZWRQcm9wZXJ0aWVzKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVE
aWN0aW9uYXJ5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICsrbV9vYmplY3RDb3VudDsKLSAg
ICBpZiAoIW9iamVjdC0+aGFzSW5saW5lU3RvcmFnZSgpKQotICAgICAgICArK21fb2JqZWN0V2l0
aE91dE9mTGluZVN0b3JhZ2VDb3VudDsKLSAgICBtX3N0b3JhZ2VTaXplICs9IG9iamVjdC0+c3Ry
dWN0dXJlKCktPnRvdGFsU3RvcmFnZVNpemUoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KTsKLSAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3QtPnN0cnVjdHVyZSgpLT50
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4p
OyAKLX0KLQotaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9m
TGluZVN0b3JhZ2VDb3VudCgpCi17Ci0gICAgcmV0dXJuIG1fb2JqZWN0V2l0aE91dE9mTGluZVN0
b3JhZ2VDb3VudDsKLX0KLQotaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0
Q291bnQoKQotewotICAgIHJldHVybiBtX29iamVjdENvdW50OwotfQotCi0KLWlubGluZSBzaXpl
X3QgU3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VTaXplKCkKLXsKLSAgICByZXR1cm4gbV9zdG9y
YWdlU2l6ZTsKLX0KLQotCi1pbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpzdG9yYWdl
Q2FwYWNpdHkoKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VDYXBhY2l0eTsKLX0KLQogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCiAKIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBIZWFwVHlwZSBoZWFwVHlwZSkKQEAgLTgzMSw2ICs3NjQsOSBAQCB2b2lkIEhlYXA6OmNvbGxl
Y3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgfQogICAgIAogICAgIHNpemVfdCBjdXJyZW50
SGVhcFNpemUgPSBzaXplKCk7CisgICAgaWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBj
dXJyZW50SGVhcFNpemUgPiBPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCisgICAgICAgIEhlYXBT
dGF0aXN0aWNzOjpleGl0V2l0aEZhaWx1cmUoKTsKKwogICAgIGlmIChmdWxsR0MpIHsKICAgICAg
ICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCA9IGN1cnJlbnRIZWFwU2l6ZTsKIApAQCAtODQ0LDYg
Kzc4MCw4IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICBk
b3VibGUgbGFzdEdDRW5kVGltZSA9IFdURjo6Y3VycmVudFRpbWUoKTsKICAgICBtX2xhc3RHQ0xl
bmd0aCA9IGxhc3RHQ0VuZFRpbWUgLSBsYXN0R0NTdGFydFRpbWU7CiAKKyAgICBpZiAoT3B0aW9u
czo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpCisgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRH
Q1BhdXNlVGltZShsYXN0R0NTdGFydFRpbWUsIGxhc3RHQ0VuZFRpbWUpOwogICAgIGlmIChtX29w
ZXJhdGlvbkluUHJvZ3Jlc3MgIT0gQ29sbGVjdGlvbikKICAgICAgICAgQ1JBU0goKTsKICAgICBt
X29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKQEAgLTg1NSwzMSArNzkzLDggQEAg
dm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgIGlmIChPcHRpb25z
OjpvYmplY3RzQXJlSW1tb3J0YWwoKSkKICAgICAgICAgbWFya0RlYWRPYmplY3RzKCk7CiAKLSAg
ICBpZiAoT3B0aW9uczo6c2hvd0hlYXBTdGF0aXN0aWNzKCkpCi0gICAgICAgIHNob3dTdGF0aXN0
aWNzKCk7Ci19Ci0KLXZvaWQgSGVhcDo6c2hvd1N0YXRpc3RpY3MoKQotewotICAgIGRhdGFMb2co
IlxuPT09IEhlYXAgU3RhdGlzdGljczogPT09XG4iKTsKLSAgICBkYXRhTG9nKCJzaXplOiAlbGRr
QlxuIiwgc3RhdGljX2Nhc3Q8bG9uZz4obV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAvIEtCKSk7Ci0g
ICAgZGF0YUxvZygiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihjYXBhY2l0
eSgpIC8gS0IpKTsKLSAgICBkYXRhTG9nKCJwYXVzZSB0aW1lOiAlbGZtc1xuXG4iLCBtX2xhc3RH
Q0xlbmd0aCk7Ci0KLSAgICBTdG9yYWdlU3RhdGlzdGljcyBzdG9yYWdlU3RhdGlzdGljczsKLSAg
ICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbChzdG9yYWdlU3RhdGlzdGljcyk7Ci0gICAg
ZGF0YUxvZygid2FzdGVkIC5wcm9wZXJ0eSBzdG9yYWdlOiAlbGRrQiAoJWxkJSUpXG4iLAotICAg
ICAgICBzdGF0aWNfY2FzdDxsb25nPigKLSAgICAgICAgICAgIChzdG9yYWdlU3RhdGlzdGljcy5z
dG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VTaXplKCkpIC8gS0Ip
LAotICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKLSAgICAgICAgICAgIChzdG9yYWdlU3RhdGlz
dGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VTaXplKCkp
ICogMTAwCi0gICAgICAgICAgICAgICAgLyBzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNp
dHkoKSkpOwotICAgIGRhdGFMb2coIm9iamVjdHMgd2l0aCBvdXQtb2YtbGluZSAucHJvcGVydHkg
c3RvcmFnZTogJWxkICglbGQlJSlcbiIsCi0gICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAotICAg
ICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3Vu
dCgpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCi0gICAgICAgICAgICBzdG9yYWdlU3Rh
dGlzdGljcy5vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KCkgKiAxMDAKLSAgICAgICAg
ICAgICAgICAvIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdENvdW50KCkpKTsKKyAgICBpZiAoT3B0
aW9uczo6c2hvd09iamVjdFN0YXRpc3RpY3MoKSkKKyAgICAgICAgSGVhcFN0YXRpc3RpY3M6OnNo
b3dPYmplY3RTdGF0aXN0aWNzKHRoaXMpOwogfQogCiB2b2lkIEhlYXA6Om1hcmtEZWFkT2JqZWN0
cygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMzA0MDcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgogI2luY2x1ZGUgIk1hcmtlZEJs
b2NrU2V0LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJPcHRpb25zLmgi
CiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJXZWFrSGFuZGxlT3duZXIuaCIK
ICNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0LmgiCkBAIC0xODIsNiArMTgzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIENvcGllZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0
b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwU3RhdGlzdGljczsKICAgICAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJik7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYsIHNp
emVfdCk7CiAKQEAgLTI1OCw2ICsyNjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGlubGlu
ZSBib29sIEhlYXA6OnNob3VsZENvbGxlY3QoKQogICAgIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6
OmdjTWF4SGVhcFNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBtX2J5dGVzQWxsb2NhdGVkID4g
T3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpICYmIG1faXNTYWZlVG9Db2xsZWN0ICYmIG1fb3BlcmF0
aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbjsKICNpZiBFTkFCTEUoR0dDKQogICAgICAgICBy
ZXR1cm4gbV9vYmplY3RTcGFjZS5udXJzZXJ5V2F0ZXJNYXJrKCkgPj0gbV9taW5CeXRlc1BlckN5
Y2xlICYmIG1faXNTYWZlVG9Db2xsZWN0ICYmIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09w
ZXJhdGlvbjsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3Rh
dGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyNCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5o
IgorCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
T3B0aW9ucy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5o
PgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitkb3VibGUgSGVh
cFN0YXRpc3RpY3M6OnNfc3RhcnRUaW1lID0gMC4wOworZG91YmxlIEhlYXBTdGF0aXN0aWNzOjpz
X2VuZFRpbWUgPSAwLjA7CitEZXF1ZTxkb3VibGU+KiBIZWFwU3RhdGlzdGljczo6c19wYXVzZVRp
bWVTdGFydHMgPSAwOworRGVxdWU8ZG91YmxlPiogSGVhcFN0YXRpc3RpY3M6OnNfcGF1c2VUaW1l
RW5kcyA9IDA7CisKK3ZvaWQgSGVhcFN0YXRpc3RpY3M6OmluaXRpYWxpemUoKQoreworICAgIEFT
U0VSVChPcHRpb25zOjpyZWNvcmRHQ1BhdXNlVGltZXMoKSk7CisgICAgc19zdGFydFRpbWUgPSBX
VEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIHNfcGF1c2VUaW1lU3RhcnRz
ID0gbmV3IERlcXVlPGRvdWJsZT4oKTsKKyAgICBzX3BhdXNlVGltZUVuZHMgPSBuZXcgRGVxdWU8
ZG91YmxlPigpOworfQorCit2b2lkIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShk
b3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCit7CisgICAgQVNTRVJUKE9wdGlvbnM6OnJlY29yZEdD
UGF1c2VUaW1lcygpKTsKKyAgICBBU1NFUlQoc19wYXVzZVRpbWVTdGFydHMpOworICAgIEFTU0VS
VChzX3BhdXNlVGltZUVuZHMpOworICAgIHNfcGF1c2VUaW1lU3RhcnRzLT5hcHBlbmQoc3RhcnQp
OworICAgIHNfcGF1c2VUaW1lRW5kcy0+YXBwZW5kKGVuZCk7Cit9CisKK3ZvaWQgSGVhcFN0YXRp
c3RpY3M6OmxvZ1N0YXRpc3RpY3MoKQoreworICAgIHN0cnVjdCBydXNhZ2UgdXNhZ2U7CisgICAg
Z2V0cnVzYWdlKFJVU0FHRV9TRUxGLCAmdXNhZ2UpOworI2lmIFVTRShDRikgfHwgT1MoVU5JWCkK
KyAgICBjaGFyKiB2bU5hbWUgPSBnZXRlbnYoIkpTVk1OYW1lIik7CisgICAgY2hhciogc3VpdGVO
YW1lID0gZ2V0ZW52KCJKU1N1aXRlTmFtZSIpOworICAgIGNoYXIqIGJlbmNobWFya05hbWUgPSBn
ZXRlbnYoIkpTQmVuY2htYXJrTmFtZSIpOworI2Vsc2UKKyNlcnJvciAiVGhlIEhlYXBTdGF0aXN0
aWNzIG1vZHVsZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmCisg
ICAgaWYgKCF2bU5hbWUgfHwgIXN1aXRlTmFtZSB8fCAhYmVuY2htYXJrTmFtZSkKKyAgICAgICAg
ZGF0YUxvZygiSGVhcFN0YXRpc3RpY3M6IHtcIm1heF9yc3NcIjogJWxkIiwgdXNhZ2UucnVfbWF4
cnNzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFMb2coIkhlYXBTdGF0aXN0aWNzOiB7XCJtYXhf
cnNzXCI6ICVsZCwgXCJ2bV9uYW1lXCI6IFwiJXNcIiwgXCJzdWl0ZV9uYW1lXCI6IFwiJXNcIiwg
XCJiZW5jaG1hcmtfbmFtZVwiOiBcIiVzXCIiLCAKKyAgICAgICAgICAgIHVzYWdlLnJ1X21heHJz
cywgdm1OYW1lLCBzdWl0ZU5hbWUsIGJlbmNobWFya05hbWUpOyAKKworICAgIGlmIChPcHRpb25z
OjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkgeworICAgICAgICBkYXRhTG9nKCIsIFwicGF1c2VfdGlt
ZXNcIjogWyIpOworICAgICAgICBEZXF1ZTxkb3VibGU+OjppdGVyYXRvciBzdGFydEl0ID0gc19w
YXVzZVRpbWVTdGFydHMtPmJlZ2luKCk7CisgICAgICAgIERlcXVlPGRvdWJsZT46Oml0ZXJhdG9y
IGVuZEl0ID0gc19wYXVzZVRpbWVFbmRzLT5iZWdpbigpOworICAgICAgICBpZiAoc3RhcnRJdCAh
PSBzX3BhdXNlVGltZVN0YXJ0cy0+ZW5kKCkgJiYgZW5kSXQgIT0gc19wYXVzZVRpbWVFbmRzLT5l
bmQoKSkgeworICAgICAgICAgICAgZGF0YUxvZygiWyVmLCAlZl0iLCAqc3RhcnRJdCwgKmVuZEl0
KTsKKyAgICAgICAgICAgICsrc3RhcnRJdDsKKyAgICAgICAgICAgICsrZW5kSXQ7CisgICAgICAg
IH0KKyAgICAgICAgd2hpbGUgKHN0YXJ0SXQgIT0gc19wYXVzZVRpbWVTdGFydHMtPmVuZCgpICYm
IGVuZEl0ICE9IHNfcGF1c2VUaW1lRW5kcy0+ZW5kKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2co
IiwgWyVmLCAlZl0iLCAqc3RhcnRJdCwgKmVuZEl0KTsKKyAgICAgICAgICAgICsrc3RhcnRJdDsK
KyAgICAgICAgICAgICsrZW5kSXQ7CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZygiXSwgXCJz
dGFydF90aW1lXCI6ICVmLCBcImVuZF90aW1lXCI6ICVmIiwgc19zdGFydFRpbWUsIHNfZW5kVGlt
ZSk7CisgICAgfQorICAgIGRhdGFMb2coIn1cbiIpOworfQorCit2b2lkIEhlYXBTdGF0aXN0aWNz
OjpleGl0V2l0aEZhaWx1cmUoKQoreworICAgIEFTU0VSVChPcHRpb25zOjpsb2dIZWFwU3RhdGlz
dGljc0F0RXhpdCgpKTsKKyAgICBzX2VuZFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOworICAgIGxvZ1N0YXRpc3RpY3MoKTsKKyAgICBleGl0KC0xKTsKK30KKwordm9p
ZCBIZWFwU3RhdGlzdGljczo6cmVwb3J0U3VjY2VzcygpCit7CisgICAgQVNTRVJUKE9wdGlvbnM6
OmxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkpOworICAgIHNfZW5kVGltZSA9IFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbG9nU3RhdGlzdGljcygpOworfQorCitzaXpl
X3QgSGVhcFN0YXRpc3RpY3M6OnBhcnNlTWVtb3J5QW1vdW50KGNoYXIqIHMpCit7CisgICAgc2l6
ZV90IG11bHRpcGxpZXIgPSAxOworICAgIGNoYXIqIGFmdGVyUzsKKyAgICBzaXplX3QgdmFsdWUg
PSBzdHJ0b2wocywgJmFmdGVyUywgMTApOworICAgIGNoYXIgbmV4dCA9IGFmdGVyU1swXTsKKyAg
ICBzd2l0Y2ggKG5leHQpIHsKKyAgICBjYXNlICdLJzoKKyAgICAgICAgbXVsdGlwbGllciA9IEtC
OworICAgICAgICBicmVhazsKKyAgICBjYXNlICdNJzoKKyAgICAgICAgbXVsdGlwbGllciA9IE1C
OworICAgICAgICBicmVhazsKKyAgICBjYXNlICdHJzoKKyAgICAgICAgbXVsdGlwbGllciA9IEdC
OworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgcmV0dXJuIHZhbHVlICogbXVsdGlwbGllcjsKK30KKworY2xhc3MgU3RvcmFnZVN0YXRpc3Rp
Y3MgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBTdG9y
YWdlU3RhdGlzdGljcygpOworCisgICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopOworCisgICAg
c2l6ZV90IG9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKTsKKyAgICBzaXplX3Qgb2Jq
ZWN0Q291bnQoKTsKKworICAgIHNpemVfdCBzdG9yYWdlU2l6ZSgpOworICAgIHNpemVfdCBzdG9y
YWdlQ2FwYWNpdHkoKTsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9vYmplY3RXaXRoT3V0T2ZM
aW5lU3RvcmFnZUNvdW50OworICAgIHNpemVfdCBtX29iamVjdENvdW50OworICAgIHNpemVfdCBt
X3N0b3JhZ2VTaXplOworICAgIHNpemVfdCBtX3N0b3JhZ2VDYXBhY2l0eTsKK307CisKK2lubGlu
ZSBTdG9yYWdlU3RhdGlzdGljczo6U3RvcmFnZVN0YXRpc3RpY3MoKQorICAgIDogbV9vYmplY3RX
aXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KDApCisgICAgLCBtX29iamVjdENvdW50KDApCisgICAg
LCBtX3N0b3JhZ2VTaXplKDApCisgICAgLCBtX3N0b3JhZ2VDYXBhY2l0eSgwKQoreworfQorCitp
bmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCit7
CisgICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU09i
amVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgaWYgKGhhc0luZGV4
ZWRQcm9wZXJ0aWVzKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVE
aWN0aW9uYXJ5KCkpCisgICAgICAgIHJldHVybjsKKworICAgICsrbV9vYmplY3RDb3VudDsKKyAg
ICBpZiAoIW9iamVjdC0+aGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICArK21fb2JqZWN0V2l0
aE91dE9mTGluZVN0b3JhZ2VDb3VudDsKKyAgICBtX3N0b3JhZ2VTaXplICs9IG9iamVjdC0+c3Ry
dWN0dXJlKCktPnRvdGFsU3RvcmFnZVNpemUoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KTsKKyAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3QtPnN0cnVjdHVyZSgpLT50
b3RhbFN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4p
OyAKK30KKworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9m
TGluZVN0b3JhZ2VDb3VudCgpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0V2l0aE91dE9mTGluZVN0
b3JhZ2VDb3VudDsKK30KKworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0
Q291bnQoKQoreworICAgIHJldHVybiBtX29iamVjdENvdW50OworfQorCitpbmxpbmUgc2l6ZV90
IFN0b3JhZ2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSgpCit7CisgICAgcmV0dXJuIG1fc3RvcmFn
ZVNpemU7Cit9CisKK2lubGluZSBzaXplX3QgU3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VDYXBh
Y2l0eSgpCit7CisgICAgcmV0dXJuIG1fc3RvcmFnZUNhcGFjaXR5OworfQorCit2b2lkIEhlYXBT
dGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyhIZWFwKiBoZWFwKQoreworICAgIGRhdGFM
b2coIlxuPT09IEhlYXAgU3RhdGlzdGljczogPT09XG4iKTsKKyAgICBkYXRhTG9nKCJzaXplOiAl
bGRrQlxuIiwgc3RhdGljX2Nhc3Q8bG9uZz4oaGVhcC0+bV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAv
IEtCKSk7CisgICAgZGF0YUxvZygiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25n
PihoZWFwLT5jYXBhY2l0eSgpIC8gS0IpKTsKKyAgICBkYXRhTG9nKCJwYXVzZSB0aW1lOiAlbGZt
c1xuXG4iLCBoZWFwLT5tX2xhc3RHQ0xlbmd0aCk7CisKKyAgICBTdG9yYWdlU3RhdGlzdGljcyBz
dG9yYWdlU3RhdGlzdGljczsKKyAgICBoZWFwLT5tX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2Vs
bChzdG9yYWdlU3RhdGlzdGljcyk7CisgICAgZGF0YUxvZygid2FzdGVkIC5wcm9wZXJ0eSBzdG9y
YWdlOiAlbGRrQiAoJWxkJSUpXG4iLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKKyAgICAg
ICAgICAgIChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0
aXN0aWNzLnN0b3JhZ2VTaXplKCkpIC8gS0IpLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigK
KyAgICAgICAgICAgIChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3Jh
Z2VTdGF0aXN0aWNzLnN0b3JhZ2VTaXplKCkpICogMTAwCisgICAgICAgICAgICAgICAgLyBzdG9y
YWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSkpOworICAgIGRhdGFMb2coIm9iamVjdHMg
d2l0aCBvdXQtb2YtbGluZSAucHJvcGVydHkgc3RvcmFnZTogJWxkICglbGQlJSlcbiIsCisgICAg
ICAgIHN0YXRpY19jYXN0PGxvbmc+KAorICAgICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2Jq
ZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8bG9u
Zz4oCisgICAgICAgICAgICBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RXaXRoT3V0T2ZMaW5lU3Rv
cmFnZUNvdW50KCkgKiAxMDAKKyAgICAgICAgICAgICAgICAvIHN0b3JhZ2VTdGF0aXN0aWNzLm9i
amVjdENvdW50KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIZWFwU3RhdGlzdGljc19oCisjZGVm
aW5lIEhlYXBTdGF0aXN0aWNzX2gKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSGVhcDsKKworY2xhc3MgSGVhcFN0YXRpc3RpY3MgeworcHVibGlj
OgorICAgIE5PX1JFVFVSTiBzdGF0aWMgdm9pZCBleGl0V2l0aEZhaWx1cmUoKTsKKyAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCByZXBvcnRTdWNjZXNzKCk7CisKKyAgICBzdGF0aWMg
dm9pZCBpbml0aWFsaXplKCk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkR0NQYXVzZVRpbWUoZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBzdGF0aWMgc2l6ZV90IHBhcnNlTWVtb3J5QW1v
dW50KGNoYXIqKTsKKworICAgIHN0YXRpYyB2b2lkIHNob3dPYmplY3RTdGF0aXN0aWNzKEhlYXAq
KTsKKworICAgIHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0OworICAgIHN0YXRpYyBjb25z
dCBzaXplX3QgTUIgPSAxMDI0ICogS0I7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBHQiA9IDEw
MjQgKiBNQjsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBsb2dTdGF0aXN0aWNzKCk7Cisg
ICAgc3RhdGljIERlcXVlPGRvdWJsZT4qIHNfcGF1c2VUaW1lU3RhcnRzOworICAgIHN0YXRpYyBE
ZXF1ZTxkb3VibGU+KiBzX3BhdXNlVGltZUVuZHM7CisgICAgc3RhdGljIGRvdWJsZSBzX3N0YXJ0
VGltZTsKKyAgICBzdGF0aWMgZG91YmxlIHNfZW5kVGltZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRp
YWxpemVUaHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRv
ci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNE
YXRlTWF0aC5oIgpAQCAtNTYsNiArNTcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFk
aW5nT25jZSgpCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgR2xvYmFsSlNM
b2NrOjppbml0aWFsaXplKCk7CiAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpOworICAgIGlmIChP
cHRpb25zOjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkKKyAgICAgICAgSGVhcFN0YXRpc3RpY3M6Omlu
aXRpYWxpemUoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgV3Jp
dGVCYXJyaWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEzMDQwNykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5o
IgogCisjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAj
aW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMzAsNiArMTMxLDEwIEBA
IHZvaWQgT3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAjaWYgVVNFKENGKSB8fCBPUyhVTklYKQogICAg
IG9iamVjdHNBcmVJbW1vcnRhbCgpID0gISFnZXRlbnYoIkpTSW1tb3J0YWxab21iaWVFbmFibGVk
Iik7CiAgICAgdXNlWm9tYmllTW9kZSgpID0gISFnZXRlbnYoIkpTSW1tb3J0YWxab21iaWVFbmFi
bGVkIikgfHwgISFnZXRlbnYoIkpTWm9tYmllRW5hYmxlZCIpOworCisgICAgZ2NNYXhIZWFwU2l6
ZSgpID0gZ2V0ZW52KCJHQ01heEhlYXBTaXplIikgPyBIZWFwU3RhdGlzdGljczo6cGFyc2VNZW1v
cnlBbW91bnQoZ2V0ZW52KCJHQ01heEhlYXBTaXplIikpIDogMDsKKyAgICByZWNvcmRHQ1BhdXNl
VGltZXMoKSA9ICEhZ2V0ZW52KCJKU1JlY29yZEdDUGF1c2VUaW1lcyIpOworICAgIGxvZ0hlYXBT
dGF0aXN0aWNzQXRFeGl0KCkgPSBnY01heEhlYXBTaXplKCkgfHwgcmVjb3JkR0NQYXVzZVRpbWVz
KCk7CiAjZW5kaWYKIAogICAgIC8vIEFsbG93IGVudmlyb25tZW50IHZhcnMgdG8gb3ZlcnJpZGUg
b3B0aW9ucyBpZiBhcHBsaWNhYmxlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOCArMTIyLDExIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIFwKICAgICB2KGJvb2wsIHVzZVpvbWJpZU1vZGUsIGZhbHNlKSBcCiAg
ICAgdihib29sLCBvYmplY3RzQXJlSW1tb3J0YWwsIGZhbHNlKSBcCi0gICAgdihib29sLCBzaG93
SGVhcFN0YXRpc3RpY3MsIGZhbHNlKQotCisgICAgdihib29sLCBzaG93T2JqZWN0U3RhdGlzdGlj
cywgZmFsc2UpIFwKKyAgICBcCisgICAgdih1bnNpZ25lZCwgZ2NNYXhIZWFwU2l6ZSwgMCkgXAor
ICAgIHYoYm9vbCwgcmVjb3JkR0NQYXVzZVRpbWVzLCBmYWxzZSkgXAorICAgIHYoYm9vbCwgbG9n
SGVhcFN0YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSAKIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6
CkBAIC0xNjEsNyArMTY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbFR5cGUsCiAgICAgICAg
IHVuc2lnbmVkVHlwZSwKICAgICAgICAgZG91YmxlVHlwZSwKLSAgICAgICAgaW50MzJUeXBlCisg
ICAgICAgIGludDMyVHlwZSwKICAgICB9OwogCiAgICAgLy8gRm9yIHN0b3JpbmcgZm9yIGFuIG9w
dGlvbiB2YWx1ZToKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEzMDQxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFo
bmVuYmVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdh
dGhlciBhbmQgbG9nIEhlYXAgbWVtb3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW06CisgICAgICAgIChtYWluKTogQWRkZWQgYSBjaGVjayBhcyB0byB3
aGV0aGVyIHdlIHNob3VsZCBkdW1wIG91ciBKU0MgSGVhcCBzdGF0aXN0aWNzIG9uIGV4aXQuCisK
IDIwMTItMTAtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNv
bT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFkZCBzZXR0aW5nIHRvIGFsbG93IGZpbGUgYWNjZXNz
IGZyb20gZmlsZTovLyBVUkxzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCShyZXZpc2lvbiAxMzA0MDcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAKICNp
bXBvcnQgIldvcmtRdWV1ZUl0ZW0uaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBv
cnQgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9IZWFwU3RhdGlzdGljcy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9Gb3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQv
RE9NRWxlbWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KQEAgLTkxNyw3
ICs5MTksOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogICAgIFtE
dW1wUmVuZGVyVHJlZUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsgLy8gRm9yY2UgQXBw
S2l0IHRvIGluaXQgaXRzZWxmCiAgICAgZHVtcFJlbmRlclRyZWUoYXJnYywgYXJndik7CiAgICAg
W1dlYkNvcmVTdGF0aXN0aWNzIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNdOwotICAg
IFtXZWJDb3JlU3RhdGlzdGljcyBlbXB0eUNhY2hlXTsgLy8gT3RoZXJ3aXNlIFNWR0ltYWdlcyB0
cmlnZ2VyIGZhbHNlIHBvc2l0aXZlcyBmb3IgRnJhbWUvTm9kZSBjb3VudHMgICAgCisgICAgW1dl
YkNvcmVTdGF0aXN0aWNzIGVtcHR5Q2FjaGVdOyAvLyBPdGhlcndpc2UgU1ZHSW1hZ2VzIHRyaWdn
ZXIgZmFsc2UgcG9zaXRpdmVzIGZvciBGcmFtZS9Ob2RlIGNvdW50cworICAgIGlmIChKU0M6Ok9w
dGlvbnM6OmxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkpCisgICAgICAgIEpTQzo6SGVhcFN0YXRp
c3RpY3M6OnJlcG9ydFN1Y2Nlc3MoKTsKICAgICBbcG9vbCByZWxlYXNlXTsKICAgICByZXR1cm4g
MDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167184</attachid>
            <date>2012-10-04 15:14:42 -0700</date>
            <delta_ts>2012-10-04 16:33:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98431-20121004151353.patch</filename>
            <type>text/plain</type>
            <size>31065</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwNDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBhbmQgbG9nIEhlYXAgbWVt
b3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW1wcm92ZSBvdXIgaW5mcmFzdHJ1Y3R1cmUgZm9y
IGJlbmNobWFyay1kcml2ZW4gZGV2ZWxvcG1lbnQsIHdlIHNob3VsZCAKKyAgICAgICAgaGF2ZSBh
IGNlbnRyYWxpemVkIG1ldGhvZCBvZiBnYXRoZXJpbmcgYW5kIGxvZ2dpbmcgdmFyaW91cyBzdGF0
aXN0aWNzIGFib3V0IHRoZSBzdGF0ZSAKKyAgICAgICAgb2YgdGhlIEpTIGhlYXAuIFRoaXMgd291
bGQgYWxsb3cgdXMgdG8gY3JlYXRlIGFuZCB0byB1c2Ugb3RoZXIgdG9vbHMgdG8gYW5hbHl6ZSB0
aGUgCisgICAgICAgIG91dHB1dCBvZiB0aGUgVk0gYWZ0ZXIgcnVubmluZyB2YXJpb3VzIHdvcmts
b2Fkcy4KKworICAgICAgICBUaGUgZmlyc3QgdHdvIHN0YXRpc3RpY3MgdGhhdCBtaWdodCBiZSBp
bnRlcmVzdGluZyBpcyBtZW1vcnkgdXNlIGJ5IEpTQyBhbmQgR0MgcGF1c2UgCisgICAgICAgIHRp
bWVzLiBXZSBjYW4gY29udHJvbCB3aGV0aGVyIHRoaXMgcmVjb3JkaW5nIGhhcHBlbnMgdGhyb3Vn
aCB0aGUgdXNlIG9mIHRoZSBPcHRpb25zIAorICAgICAgICBjbGFzcywgYWxsb3dpbmcgdXMgdG8g
ZWl0aGVyIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgY29tbWFuZCBsaW5lIGZsYWdzLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KTogSWYg
d2UgZmluaXNoIGEgY29sbGVjdGlvbiBhbmQgYXJlIHN0aWxsIG92ZXIgb3VyIHNldCBHQyBoZWFw
IHNpemUsIAorICAgICAgICB3ZSBlbmQgdGhlIHByb2dyYW0gaW1tZWRpYXRlbHkgYW5kIHJlcG9y
dCBhbiBlcnJvci4gQWxzbyBhZGRlZCByZWNvcmRpbmcgb2YgcGF1c2UgdGltZXMuCisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2hv
dWxkQ29sbGVjdCk6IFdoZW4gd2Ugc2V0IGEgc3BlY2lmaWMgR0MgaGVhcCBzaXplIHRocm91Z2gg
T3B0aW9ucywgd2UgCisgICAgICAgIGlnbm9yZSBhbGwgb3RoZXIgaGV1cmlzdGljcyBvbiB3aGVu
IHdlIHNob3VsZCBjb2xsZWN0IGFuZCBpbnN0ZWFkIG9ubHkgYXNrIGlmIHdlJ3JlIAorICAgICAg
ICBncmVhdGVyIHRoYW4gdGhlIGFtb3VudCBzcGVjaWZpZWQgaW4gdGhlIE9wdGlvbiB2YWx1ZS4g
VGhpcyBhbGxvd3MgdXMgdG8gdmlldyB0aW1lL21lbW9yeSAKKyAgICAgICAgdHJhZGVvZmZzIG1v
cmUgY2xlYXJseS4KKyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZSk6CisgICAg
ICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpsb2dTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6
SGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSk6CisgICAgICAgIChKU0M6OkhlYXBTdGF0
aXN0aWNzOjpyZXBvcnRTdWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcFN0YXRpc3RpY3M6OnBh
cnNlTWVtb3J5QW1vdW50KToKKyAgICAgICAgKFN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAg
KEpTQzo6U3RvcmFnZVN0YXRpc3RpY3M6OlN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKEpT
Qzo6U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpTdG9yYWdl
U3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCk6CisgICAgICAgIChK
U0M6OlN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OlN0b3Jh
Z2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSk6CisgICAgICAgIChKU0M6OlN0b3JhZ2VTdGF0aXN0
aWNzOjpzdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6c2hv
d09iamVjdFN0YXRpc3RpY3MpOiBNb3ZlZCB0aGUgb2xkIHNob3dIZWFwU3RhdGlzdGljcyAocmVu
YW1lZCB0byBzaG93T2JqZWN0U3RhdGlzdGljcykgCisgICAgICAgIHRvIHRyeSB0byBzdGFydCBj
b2xsZWN0aW5nIG91ciB2YXJpb3VzIG1lbW9yeSBzdGF0aXN0aWNzIGdhdGhlcmluZy9yZXBvcnRp
bmcgbWVjaGFuaXNtcyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgCisgICAgICAgIGNvZGViYXNl
IGludG8gb25lIHBsYWNlLgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcFN0YXRpc3RpY3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6IFdlIG5l
ZWQgdG8gaW5pdGlhbGl6ZSBvdXIgZGF0YSBzdHJ1Y3R1cmVzIGZvciByZWNvcmRpbmcgCisgICAg
ICAgIHN0YXRpc3RpY3MgaWYgbmVjZXNzYXJ5LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6IEFkZCBuZXcgT3B0aW9ucyBmb3IgdGhlIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGlzdGljcyB3
ZSdsbCBiZSBnYXRoZXJpbmcuCisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOiBJbml0aWFsaXplIHRoZSB2YXJp
b3VzIG5ldyBvcHRpb25zIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgIChKU0MpOgorCiAyMDEyLTEwLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgbWlzc2luZyBMTEludCBkZXBlbmRlbmNpZXMg
dG8gdGhlIGJ1aWxkIHN5c3RlbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBoZWFwL0hhbmRsZVNldC5jcHAKICAgICBoZWFwL0hhbmRsZVN0YWNrLmNw
cAogICAgIGhlYXAvSGVhcC5jcHAKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAogICAgIGhl
YXAvSGVhcFRpbWVyLmNwcAogICAgIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAogICAgIGhl
YXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI4MCw2ICsyODAsOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwIFwKKyAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xpc3RhYmxlSGFuZGxlci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL0Jsb2NrQWxs
b2NhdG9yLmNwcCBcCiAgICAgaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwIFwKICAgICBoZWFw
L0hlYXAuY3BwIFwKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcCBcCiAgICAgaGVhcC9IZWFw
VGltZXIuY3BwIFwKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgXAogICAgIGhlYXAv
SklUU3R1YlJvdXRpbmVTZXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJD
b3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CisjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBA
IC01MjgsNiArNTI5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIFRS
WQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwogICAgIEVYQ0VQVChyZXMgPSAz
KQorICAgIGlmIChPcHRpb25zOjpsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCgpKQorICAgICAgICBI
ZWFwU3RhdGlzdGljczo6cmVwb3J0U3VjY2VzcygpOwogICAgIHJldHVybiByZXM7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjQ1Nyw2ICsyNDU3LDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxoZWFwXEhlYXBSb290VmlzaXRvci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAgICAgICAg
ICAgIDxGaWxlCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhlYXBT
dGF0aXN0aWNzLmNwcCIKKyAgICAgICAgICAgID4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhl
YXBTdGF0aXN0aWNzLmgiCisgICAgICAgICAgICA+CisgICAgICAgICAgICA8L0ZpbGU+CiAJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxMb2NhbC5oIgogCQkJCT4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNzEwLDYgKzcxMCw4IEBACiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3Bw
ICovOyB9OwogCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8q
IENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07
CisJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OworCQlDMjREMzFFMzE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlz
dGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMyNUY4QkNEMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0IxNTc1NDRB
OTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi87IH07CiAJCUMyNUY4QkNFMTU3
NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJ
bmNyZW1lbnRhbFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDg2LDYgKzE0ODgs
OCBAQAogCQlDMjExMjJFMDE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lTWV0aG9k
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrU3RhY2tJbmxpbmVNZXRo
b2RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMjU0OTQyMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTbG90VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDAz
MDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAv
KiBIZWFwU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFw
U3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQjE1NzU0
NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3
ZWVwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jcmVtZW50YWxTd2Vl
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3
NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTgxNSw2ICsxODE5LDggQEAKIAkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhl
YXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMyNEQz
MUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi8sCisJCQkJQzI0RDMx
RTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi8sCiAJCQkJQzIyNTQ5NDIx
NUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLywKIAkJCQlDMjExMjJERTE1REQ5
QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmNwcCAqLywKIAkJCQlDMjExMjJERjE1
REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggKi8sCkBAIC0yNTcyLDYgKzI1
NzgsNyBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJFQUQyRkMxNEYwMjQ5ODAwQTRCMTU5IC8qIENvcGllZEFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8q
IE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI0RDMxRTMxNjFDRDY5NTAw
MkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkE3RjY4ODE2
MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMjExMjJFMjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM1NjYsNiArMzU3Myw3IEBACiAJCQkJQzIyNTQ5NDMxNUY3REJB
QTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2MjU1M0Qx
MTYxMzZEQTkwMDlGMTdEMCAvKiBKU1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTU0
MUIxMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24g
MTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgog
I2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXBSb290VmlzaXRv
ci5oIgorI2luY2x1ZGUgIkhlYXBTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxT
d2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbERh
dGEuaCIKQEAgLTIzNSw3NCArMjM2LDYgQEAgaW5saW5lIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0
PiBSZWNvcmRUeQogICAgIHJldHVybiBtX3R5cGVDb3VudFNldC5yZWxlYXNlKCk7CiB9CiAKLWNs
YXNzIFN0b3JhZ2VTdGF0aXN0aWNzIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7
Ci1wdWJsaWM6Ci0gICAgU3RvcmFnZVN0YXRpc3RpY3MoKTsKLQotICAgIHZvaWQgb3BlcmF0b3Io
KShKU0NlbGwqKTsKLQotICAgIHNpemVfdCBvYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50
KCk7Ci0gICAgc2l6ZV90IG9iamVjdENvdW50KCk7Ci0KLSAgICBzaXplX3Qgc3RvcmFnZVNpemUo
KTsKLSAgICBzaXplX3Qgc3RvcmFnZUNhcGFjaXR5KCk7Ci0KLXByaXZhdGU6Ci0gICAgc2l6ZV90
IG1fb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudDsKLSAgICBzaXplX3QgbV9vYmplY3RD
b3VudDsKLSAgICBzaXplX3QgbV9zdG9yYWdlU2l6ZTsKLSAgICBzaXplX3QgbV9zdG9yYWdlQ2Fw
YWNpdHk7Ci19OwotCi1pbmxpbmUgU3RvcmFnZVN0YXRpc3RpY3M6OlN0b3JhZ2VTdGF0aXN0aWNz
KCkKLSAgICA6IG1fb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgwKQotICAgICwgbV9v
YmplY3RDb3VudCgwKQotICAgICwgbV9zdG9yYWdlU2l6ZSgwKQotICAgICwgbV9zdG9yYWdlQ2Fw
YWNpdHkoMCkKLXsKLX0KLQotaW5saW5lIHZvaWQgU3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9y
KCkoSlNDZWxsKiBjZWxsKQotewotICAgIGlmICghY2VsbC0+aXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwp
OwotICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhvYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChvYmplY3QtPnN0cnVjdHVy
ZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAr
K21fb2JqZWN0Q291bnQ7Ci0gICAgaWYgKCFvYmplY3QtPmhhc0lubGluZVN0b3JhZ2UoKSkKLSAg
ICAgICAgKyttX29iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQ7Ci0gICAgbV9zdG9yYWdl
U2l6ZSArPSBvYmplY3QtPnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VTaXplKCkgKiBzaXplb2Yo
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPik7Ci0gICAgbV9zdG9yYWdlQ2FwYWNpdHkgKz0gb2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KTsgCi19Ci0KLWlubGluZSBzaXplX3QgU3RvcmFnZVN0YXRpc3Rp
Y3M6Om9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKQotewotICAgIHJldHVybiBtX29i
amVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQ7Ci19Ci0KLWlubGluZSBzaXplX3QgU3RvcmFn
ZVN0YXRpc3RpY3M6Om9iamVjdENvdW50KCkKLXsKLSAgICByZXR1cm4gbV9vYmplY3RDb3VudDsK
LX0KLQotCi1pbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSgpCi17
Ci0gICAgcmV0dXJuIG1fc3RvcmFnZVNpemU7Ci19Ci0KLQotaW5saW5lIHNpemVfdCBTdG9yYWdl
U3RhdGlzdGljczo6c3RvcmFnZUNhcGFjaXR5KCkKLXsKLSAgICByZXR1cm4gbV9zdG9yYWdlQ2Fw
YWNpdHk7Ci19Ci0KIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBIZWFwOjpIZWFwKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVhcFR5cGUgaGVhcFR5cGUpCkBAIC04MzEsNiArNzY0LDkg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgIH0KICAgICAK
ICAgICBzaXplX3QgY3VycmVudEhlYXBTaXplID0gc2l6ZSgpOworICAgIGlmIChPcHRpb25zOjpn
Y01heEhlYXBTaXplKCkgJiYgY3VycmVudEhlYXBTaXplID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6
ZSgpKQorICAgICAgICBIZWFwU3RhdGlzdGljczo6ZXhpdFdpdGhGYWlsdXJlKCk7CisKICAgICBp
ZiAoZnVsbEdDKSB7CiAgICAgICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgPSBjdXJyZW50SGVh
cFNpemU7CiAKQEAgLTg0NCw2ICs3ODAsOCBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dn
bGUgc3dlZXBUb2dnCiAgICAgZG91YmxlIGxhc3RHQ0VuZFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1l
KCk7CiAgICAgbV9sYXN0R0NMZW5ndGggPSBsYXN0R0NFbmRUaW1lIC0gbGFzdEdDU3RhcnRUaW1l
OwogCisgICAgaWYgKE9wdGlvbnM6OnJlY29yZEdDUGF1c2VUaW1lcygpKQorICAgICAgICBIZWFw
U3RhdGlzdGljczo6cmVjb3JkR0NQYXVzZVRpbWUobGFzdEdDU3RhcnRUaW1lLCBsYXN0R0NFbmRU
aW1lKTsKICAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9IENvbGxlY3Rpb24pCiAgICAg
ICAgIENSQVNIKCk7CiAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CkBA
IC04NTUsMzEgKzc5Myw4IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRv
Z2cKICAgICBpZiAoT3B0aW9uczo6b2JqZWN0c0FyZUltbW9ydGFsKCkpCiAgICAgICAgIG1hcmtE
ZWFkT2JqZWN0cygpOwogCi0gICAgaWYgKE9wdGlvbnM6OnNob3dIZWFwU3RhdGlzdGljcygpKQot
ICAgICAgICBzaG93U3RhdGlzdGljcygpOwotfQotCi12b2lkIEhlYXA6OnNob3dTdGF0aXN0aWNz
KCkKLXsKLSAgICBkYXRhTG9nKCJcbj09PSBIZWFwIFN0YXRpc3RpY3M6ID09PVxuIik7Ci0gICAg
ZGF0YUxvZygic2l6ZTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+KG1fc2l6ZUFmdGVyTGFz
dENvbGxlY3QgLyBLQikpOwotICAgIGRhdGFMb2coImNhcGFjaXR5OiAlbGRrQlxuIiwgc3RhdGlj
X2Nhc3Q8bG9uZz4oY2FwYWNpdHkoKSAvIEtCKSk7Ci0gICAgZGF0YUxvZygicGF1c2UgdGltZTog
JWxmbXNcblxuIiwgbV9sYXN0R0NMZW5ndGgpOwotCi0gICAgU3RvcmFnZVN0YXRpc3RpY3Mgc3Rv
cmFnZVN0YXRpc3RpY3M7Ci0gICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoTGl2ZUNlbGwoc3RvcmFn
ZVN0YXRpc3RpY3MpOwotICAgIGRhdGFMb2coIndhc3RlZCAucHJvcGVydHkgc3RvcmFnZTogJWxk
a0IgKCVsZCUlKVxuIiwKLSAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCi0gICAgICAgICAgICAo
c3RvcmFnZVN0YXRpc3RpY3Muc3RvcmFnZUNhcGFjaXR5KCkgLSBzdG9yYWdlU3RhdGlzdGljcy5z
dG9yYWdlU2l6ZSgpKSAvIEtCKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCi0gICAgICAg
ICAgICAoc3RvcmFnZVN0YXRpc3RpY3Muc3RvcmFnZUNhcGFjaXR5KCkgLSBzdG9yYWdlU3RhdGlz
dGljcy5zdG9yYWdlU2l6ZSgpKSAqIDEwMAotICAgICAgICAgICAgICAgIC8gc3RvcmFnZVN0YXRp
c3RpY3Muc3RvcmFnZUNhcGFjaXR5KCkpKTsKLSAgICBkYXRhTG9nKCJvYmplY3RzIHdpdGggb3V0
LW9mLWxpbmUgLnByb3BlcnR5IHN0b3JhZ2U6ICVsZCAoJWxkJSUpXG4iLAotICAgICAgICBzdGF0
aWNfY2FzdDxsb25nPigKLSAgICAgICAgICAgIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdFdpdGhP
dXRPZkxpbmVTdG9yYWdlQ291bnQoKSksCi0gICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAotICAg
ICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3Vu
dCgpICogMTAwCi0gICAgICAgICAgICAgICAgLyBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RDb3Vu
dCgpKSk7CisgICAgaWYgKE9wdGlvbnM6OnNob3dPYmplY3RTdGF0aXN0aWNzKCkpCisgICAgICAg
IEhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyh0aGlzKTsKIH0KIAogdm9pZCBI
ZWFwOjptYXJrRGVhZE9iamVjdHMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
cmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisj
aW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAi
V2Vha0hhbmRsZU93bmVyLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyU3VwcG9ydC5oIgpAQCAt
MTgyLDYgKzE4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb3BpZWRTcGFjZTsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFNsb3RWaXNpdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFN0YXRpc3Rp
Y3M7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNl
bGwoSGVhcCYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxs
b2NhdGVDZWxsKEhlYXAmLCBzaXplX3QpOwogCkBAIC0yNTgsNiArMjYwLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBpbmxpbmUgYm9vbCBIZWFwOjpzaG91bGRDb2xsZWN0KCkKICAgICB7Cisg
ICAgICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCisgICAgICAgICAgICByZXR1cm4g
bV9ieXRlc0FsbG9jYXRlZCA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBtX2lzU2FmZVRv
Q29sbGVjdCAmJiBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb247CiAjaWYgRU5B
QkxFKEdHQykKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UubnVyc2VyeVdhdGVyTWFyaygp
ID49IG1fbWluQnl0ZXNQZXJDeWNsZSAmJiBtX2lzU2FmZVRvQ29sbGVjdCAmJiBtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb247CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSGVhcFN0YXRpc3RpY3MuaCIKKworI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpZiBP
UyhVTklYKQorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2VuZGlmCisjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2RvdWJsZSBIZWFwU3RhdGlzdGljczo6c19z
dGFydFRpbWUgPSAwLjA7Citkb3VibGUgSGVhcFN0YXRpc3RpY3M6OnNfZW5kVGltZSA9IDAuMDsK
K0RlcXVlPGRvdWJsZT4qIEhlYXBTdGF0aXN0aWNzOjpzX3BhdXNlVGltZVN0YXJ0cyA9IDA7CitE
ZXF1ZTxkb3VibGU+KiBIZWFwU3RhdGlzdGljczo6c19wYXVzZVRpbWVFbmRzID0gMDsKKworI2lm
IE9TKFVOSVgpIAorCit2b2lkIEhlYXBTdGF0aXN0aWNzOjppbml0aWFsaXplKCkKK3sKKyAgICBB
U1NFUlQoT3B0aW9uczo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpOworICAgIHNfc3RhcnRUaW1lID0g
V1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBzX3BhdXNlVGltZVN0YXJ0
cyA9IG5ldyBEZXF1ZTxkb3VibGU+KCk7CisgICAgc19wYXVzZVRpbWVFbmRzID0gbmV3IERlcXVl
PGRvdWJsZT4oKTsKK30KKwordm9pZCBIZWFwU3RhdGlzdGljczo6cmVjb3JkR0NQYXVzZVRpbWUo
ZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQoreworICAgIEFTU0VSVChPcHRpb25zOjpyZWNvcmRH
Q1BhdXNlVGltZXMoKSk7CisgICAgQVNTRVJUKHNfcGF1c2VUaW1lU3RhcnRzKTsKKyAgICBBU1NF
UlQoc19wYXVzZVRpbWVFbmRzKTsKKyAgICBzX3BhdXNlVGltZVN0YXJ0cy0+YXBwZW5kKHN0YXJ0
KTsKKyAgICBzX3BhdXNlVGltZUVuZHMtPmFwcGVuZChlbmQpOworfQorCit2b2lkIEhlYXBTdGF0
aXN0aWNzOjpsb2dTdGF0aXN0aWNzKCkKK3sKKyAgICBzdHJ1Y3QgcnVzYWdlIHVzYWdlOworICAg
IGdldHJ1c2FnZShSVVNBR0VfU0VMRiwgJnVzYWdlKTsKKyNpZiBVU0UoQ0YpIHx8IE9TKFVOSVgp
CisgICAgY2hhciogdm1OYW1lID0gZ2V0ZW52KCJKU1ZNTmFtZSIpOworICAgIGNoYXIqIHN1aXRl
TmFtZSA9IGdldGVudigiSlNTdWl0ZU5hbWUiKTsKKyAgICBjaGFyKiBiZW5jaG1hcmtOYW1lID0g
Z2V0ZW52KCJKU0JlbmNobWFya05hbWUiKTsKKyNlbHNlCisjZXJyb3IgIlRoZSBIZWFwU3RhdGlz
dGljcyBtb2R1bGUgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKKyNlbmRpZgor
ICAgIGlmICghdm1OYW1lIHx8ICFzdWl0ZU5hbWUgfHwgIWJlbmNobWFya05hbWUpCisgICAgICAg
IGRhdGFMb2coIkhlYXBTdGF0aXN0aWNzOiB7XCJtYXhfcnNzXCI6ICVsZCIsIHVzYWdlLnJ1X21h
eHJzcyk7CisgICAgZWxzZQorICAgICAgICBkYXRhTG9nKCJIZWFwU3RhdGlzdGljczoge1wibWF4
X3Jzc1wiOiAlbGQsIFwidm1fbmFtZVwiOiBcIiVzXCIsIFwic3VpdGVfbmFtZVwiOiBcIiVzXCIs
IFwiYmVuY2htYXJrX25hbWVcIjogXCIlc1wiIiwgCisgICAgICAgICAgICB1c2FnZS5ydV9tYXhy
c3MsIHZtTmFtZSwgc3VpdGVOYW1lLCBiZW5jaG1hcmtOYW1lKTsgCisKKyAgICBpZiAoT3B0aW9u
czo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpIHsKKyAgICAgICAgZGF0YUxvZygiLCBcInBhdXNlX3Rp
bWVzXCI6IFsiKTsKKyAgICAgICAgRGVxdWU8ZG91YmxlPjo6aXRlcmF0b3Igc3RhcnRJdCA9IHNf
cGF1c2VUaW1lU3RhcnRzLT5iZWdpbigpOworICAgICAgICBEZXF1ZTxkb3VibGU+OjppdGVyYXRv
ciBlbmRJdCA9IHNfcGF1c2VUaW1lRW5kcy0+YmVnaW4oKTsKKyAgICAgICAgaWYgKHN0YXJ0SXQg
IT0gc19wYXVzZVRpbWVTdGFydHMtPmVuZCgpICYmIGVuZEl0ICE9IHNfcGF1c2VUaW1lRW5kcy0+
ZW5kKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIlslZiwgJWZdIiwgKnN0YXJ0SXQsICplbmRJ
dCk7CisgICAgICAgICAgICArK3N0YXJ0SXQ7CisgICAgICAgICAgICArK2VuZEl0OworICAgICAg
ICB9CisgICAgICAgIHdoaWxlIChzdGFydEl0ICE9IHNfcGF1c2VUaW1lU3RhcnRzLT5lbmQoKSAm
JiBlbmRJdCAhPSBzX3BhdXNlVGltZUVuZHMtPmVuZCgpKSB7CisgICAgICAgICAgICBkYXRhTG9n
KCIsIFslZiwgJWZdIiwgKnN0YXJ0SXQsICplbmRJdCk7CisgICAgICAgICAgICArK3N0YXJ0SXQ7
CisgICAgICAgICAgICArK2VuZEl0OworICAgICAgICB9CisgICAgICAgIGRhdGFMb2coIl0sIFwi
c3RhcnRfdGltZVwiOiAlZiwgXCJlbmRfdGltZVwiOiAlZiIsIHNfc3RhcnRUaW1lLCBzX2VuZFRp
bWUpOworICAgIH0KKyAgICBkYXRhTG9nKCJ9XG4iKTsKK30KKwordm9pZCBIZWFwU3RhdGlzdGlj
czo6ZXhpdFdpdGhGYWlsdXJlKCkKK3sKKyAgICBBU1NFUlQoT3B0aW9uczo6bG9nSGVhcFN0YXRp
c3RpY3NBdEV4aXQoKSk7CisgICAgc19lbmRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKKyAgICBsb2dTdGF0aXN0aWNzKCk7CisgICAgZXhpdCgtMSk7Cit9CisKK3Zv
aWQgSGVhcFN0YXRpc3RpY3M6OnJlcG9ydFN1Y2Nlc3MoKQoreworICAgIEFTU0VSVChPcHRpb25z
Ojpsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCgpKTsKKyAgICBzX2VuZFRpbWUgPSBXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIGxvZ1N0YXRpc3RpY3MoKTsKK30KKworc2l6
ZV90IEhlYXBTdGF0aXN0aWNzOjpwYXJzZU1lbW9yeUFtb3VudChjaGFyKiBzKQoreworICAgIHNp
emVfdCBtdWx0aXBsaWVyID0gMTsKKyAgICBjaGFyKiBhZnRlclM7CisgICAgc2l6ZV90IHZhbHVl
ID0gc3RydG9sKHMsICZhZnRlclMsIDEwKTsKKyAgICBjaGFyIG5leHQgPSBhZnRlclNbMF07Cisg
ICAgc3dpdGNoIChuZXh0KSB7CisgICAgY2FzZSAnSyc6CisgICAgICAgIG11bHRpcGxpZXIgPSBL
QjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnTSc6CisgICAgICAgIG11bHRpcGxpZXIgPSBN
QjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnRyc6CisgICAgICAgIG11bHRpcGxpZXIgPSBH
QjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiB2YWx1ZSAqIG11bHRpcGxpZXI7Cit9CisKKyNlbHNlCisKK3ZvaWQgSGVhcFN0
YXRpc3RpY3M6OmluaXRpYWxpemUoKQoreworfQorCit2b2lkIEhlYXBTdGF0aXN0aWNzOjpyZWNv
cmRHQ1BhdXNlVGltZShkb3VibGUsIGRvdWJsZSkKK3sKK30KKwordm9pZCBIZWFwU3RhdGlzdGlj
czo6bG9nU3RhdGlzdGljcygpCit7Cit9CisKK3ZvaWQgSGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRo
RmFpbHVyZSgpCit7Cit9CisKK3ZvaWQgSGVhcFN0YXRpc3RpY3M6OnJlcG9ydFN1Y2Nlc3MoKQor
eworfQorCitzaXplX3QgSGVhcFN0YXRpc3RpY3M6OnBhcnNlTWVtb3J5QW1vdW50KGNoYXIqKQor
eworfQorCisjZW5kaWYgLy8gT1MoVU5JWCkKKworY2xhc3MgU3RvcmFnZVN0YXRpc3RpY3MgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBTdG9yYWdlU3Rh
dGlzdGljcygpOworCisgICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopOworCisgICAgc2l6ZV90
IG9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKTsKKyAgICBzaXplX3Qgb2JqZWN0Q291
bnQoKTsKKworICAgIHNpemVfdCBzdG9yYWdlU2l6ZSgpOworICAgIHNpemVfdCBzdG9yYWdlQ2Fw
YWNpdHkoKTsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9vYmplY3RXaXRoT3V0T2ZMaW5lU3Rv
cmFnZUNvdW50OworICAgIHNpemVfdCBtX29iamVjdENvdW50OworICAgIHNpemVfdCBtX3N0b3Jh
Z2VTaXplOworICAgIHNpemVfdCBtX3N0b3JhZ2VDYXBhY2l0eTsKK307CisKK2lubGluZSBTdG9y
YWdlU3RhdGlzdGljczo6U3RvcmFnZVN0YXRpc3RpY3MoKQorICAgIDogbV9vYmplY3RXaXRoT3V0
T2ZMaW5lU3RvcmFnZUNvdW50KDApCisgICAgLCBtX29iamVjdENvdW50KDApCisgICAgLCBtX3N0
b3JhZ2VTaXplKDApCisgICAgLCBtX3N0b3JhZ2VDYXBhY2l0eSgwKQoreworfQorCitpbmxpbmUg
dm9pZCBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCit7CisgICAg
aWYgKCFjZWxsLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU09iamVjdCog
b2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkpCisgICAgICAgIHJldHVybjsKKworICAgICsrbV9vYmplY3RDb3VudDsKKyAgICBpZiAo
IW9iamVjdC0+aGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICArK21fb2JqZWN0V2l0aE91dE9m
TGluZVN0b3JhZ2VDb3VudDsKKyAgICBtX3N0b3JhZ2VTaXplICs9IG9iamVjdC0+c3RydWN0dXJl
KCktPnRvdGFsU3RvcmFnZVNpemUoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KTsKKyAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3QtPnN0cnVjdHVyZSgpLT50b3RhbFN0
b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pOyAKK30K
KworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9mTGluZVN0
b3JhZ2VDb3VudCgpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VD
b3VudDsKK30KKworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0Q291bnQo
KQoreworICAgIHJldHVybiBtX29iamVjdENvdW50OworfQorCitpbmxpbmUgc2l6ZV90IFN0b3Jh
Z2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSgpCit7CisgICAgcmV0dXJuIG1fc3RvcmFnZVNpemU7
Cit9CisKK2lubGluZSBzaXplX3QgU3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VDYXBhY2l0eSgp
Cit7CisgICAgcmV0dXJuIG1fc3RvcmFnZUNhcGFjaXR5OworfQorCit2b2lkIEhlYXBTdGF0aXN0
aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyhIZWFwKiBoZWFwKQoreworICAgIGRhdGFMb2coIlxu
PT09IEhlYXAgU3RhdGlzdGljczogPT09XG4iKTsKKyAgICBkYXRhTG9nKCJzaXplOiAlbGRrQlxu
Iiwgc3RhdGljX2Nhc3Q8bG9uZz4oaGVhcC0+bV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAvIEtCKSk7
CisgICAgZGF0YUxvZygiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihoZWFw
LT5jYXBhY2l0eSgpIC8gS0IpKTsKKyAgICBkYXRhTG9nKCJwYXVzZSB0aW1lOiAlbGZtc1xuXG4i
LCBoZWFwLT5tX2xhc3RHQ0xlbmd0aCk7CisKKyAgICBTdG9yYWdlU3RhdGlzdGljcyBzdG9yYWdl
U3RhdGlzdGljczsKKyAgICBoZWFwLT5tX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbChzdG9y
YWdlU3RhdGlzdGljcyk7CisgICAgZGF0YUxvZygid2FzdGVkIC5wcm9wZXJ0eSBzdG9yYWdlOiAl
bGRrQiAoJWxkJSUpXG4iLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKKyAgICAgICAgICAg
IChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0aXN0aWNz
LnN0b3JhZ2VTaXplKCkpIC8gS0IpLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKKyAgICAg
ICAgICAgIChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0
aXN0aWNzLnN0b3JhZ2VTaXplKCkpICogMTAwCisgICAgICAgICAgICAgICAgLyBzdG9yYWdlU3Rh
dGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSkpOworICAgIGRhdGFMb2coIm9iamVjdHMgd2l0aCBv
dXQtb2YtbGluZSAucHJvcGVydHkgc3RvcmFnZTogJWxkICglbGQlJSlcbiIsCisgICAgICAgIHN0
YXRpY19jYXN0PGxvbmc+KAorICAgICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0V2l0
aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCisg
ICAgICAgICAgICBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNv
dW50KCkgKiAxMDAKKyAgICAgICAgICAgICAgICAvIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdENv
dW50KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIZWFwU3RhdGlzdGljc19oCisjZGVmaW5lIEhl
YXBTdGF0aXN0aWNzX2gKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSGVhcDsKKworY2xhc3MgSGVhcFN0YXRpc3RpY3MgeworcHVibGljOgorICAg
IE5PX1JFVFVSTiBzdGF0aWMgdm9pZCBleGl0V2l0aEZhaWx1cmUoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCByZXBvcnRTdWNjZXNzKCk7CisKKyAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplKCk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkR0NQYXVzZVRpbWUoZG91YmxlIHN0
YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBzdGF0aWMgc2l6ZV90IHBhcnNlTWVtb3J5QW1vdW50KGNo
YXIqKTsKKworICAgIHN0YXRpYyB2b2lkIHNob3dPYmplY3RTdGF0aXN0aWNzKEhlYXAqKTsKKwor
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0OworICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgTUIgPSAxMDI0ICogS0I7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBHQiA9IDEwMjQgKiBN
QjsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBsb2dTdGF0aXN0aWNzKCk7CisgICAgc3Rh
dGljIERlcXVlPGRvdWJsZT4qIHNfcGF1c2VUaW1lU3RhcnRzOworICAgIHN0YXRpYyBEZXF1ZTxk
b3VibGU+KiBzX3BhdXNlVGltZUVuZHM7CisgICAgc3RhdGljIGRvdWJsZSBzX3N0YXJ0VGltZTsK
KyAgICBzdGF0aWMgZG91YmxlIHNfZW5kVGltZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0
aC5oIgpAQCAtNTYsNiArNTcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25j
ZSgpCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgR2xvYmFsSlNMb2NrOjpp
bml0aWFsaXplKCk7CiAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpOworICAgIGlmIChPcHRpb25z
OjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkKKyAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmluaXRpYWxp
emUoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgV3JpdGVCYXJy
aWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogCisj
aW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMzAsNiArMTMxLDEwIEBAIHZvaWQg
T3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAjaWYgVVNFKENGKSB8fCBPUyhVTklYKQogICAgIG9iamVj
dHNBcmVJbW1vcnRhbCgpID0gISFnZXRlbnYoIkpTSW1tb3J0YWxab21iaWVFbmFibGVkIik7CiAg
ICAgdXNlWm9tYmllTW9kZSgpID0gISFnZXRlbnYoIkpTSW1tb3J0YWxab21iaWVFbmFibGVkIikg
fHwgISFnZXRlbnYoIkpTWm9tYmllRW5hYmxlZCIpOworCisgICAgZ2NNYXhIZWFwU2l6ZSgpID0g
Z2V0ZW52KCJHQ01heEhlYXBTaXplIikgPyBIZWFwU3RhdGlzdGljczo6cGFyc2VNZW1vcnlBbW91
bnQoZ2V0ZW52KCJHQ01heEhlYXBTaXplIikpIDogMDsKKyAgICByZWNvcmRHQ1BhdXNlVGltZXMo
KSA9ICEhZ2V0ZW52KCJKU1JlY29yZEdDUGF1c2VUaW1lcyIpOworICAgIGxvZ0hlYXBTdGF0aXN0
aWNzQXRFeGl0KCkgPSBnY01heEhlYXBTaXplKCkgfHwgcmVjb3JkR0NQYXVzZVRpbWVzKCk7CiAj
ZW5kaWYKIAogICAgIC8vIEFsbG93IGVudmlyb25tZW50IHZhcnMgdG8gb3ZlcnJpZGUgb3B0aW9u
cyBpZiBhcHBsaWNhYmxlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOCArMTIyLDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIFwKICAgICB2KGJvb2wsIHVzZVpvbWJpZU1vZGUsIGZhbHNlKSBcCiAgICAgdihi
b29sLCBvYmplY3RzQXJlSW1tb3J0YWwsIGZhbHNlKSBcCi0gICAgdihib29sLCBzaG93SGVhcFN0
YXRpc3RpY3MsIGZhbHNlKQotCisgICAgdihib29sLCBzaG93T2JqZWN0U3RhdGlzdGljcywgZmFs
c2UpIFwKKyAgICBcCisgICAgdih1bnNpZ25lZCwgZ2NNYXhIZWFwU2l6ZSwgMCkgXAorICAgIHYo
Ym9vbCwgcmVjb3JkR0NQYXVzZVRpbWVzLCBmYWxzZSkgXAorICAgIHYoYm9vbCwgbG9nSGVhcFN0
YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSAKIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6CkBAIC0x
NjEsNyArMTY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbFR5cGUsCiAgICAgICAgIHVuc2ln
bmVkVHlwZSwKICAgICAgICAgZG91YmxlVHlwZSwKLSAgICAgICAgaW50MzJUeXBlCisgICAgICAg
IGludDMyVHlwZSwKICAgICB9OwogCiAgICAgLy8gRm9yIHN0b3JpbmcgZm9yIGFuIG9wdGlvbiB2
YWx1ZToKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEzMDQxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBh
bmQgbG9nIEhlYXAgbWVtb3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgIChtYWluKTogQWRkZWQgYSBjaGVjayBhcyB0byB3aGV0aGVy
IHdlIHNob3VsZCBkdW1wIG91ciBKU0MgSGVhcCBzdGF0aXN0aWNzIG9uIGV4aXQuCisKIDIwMTIt
MTAtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAog
ICAgICAgICBbRUZMXVtXSzJdIEFkZCBzZXR0aW5nIHRvIGFsbG93IGZpbGUgYWNjZXNzIGZyb20g
ZmlsZTovLyBVUkxzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCShyZXZpc2lvbiAxMzA0MDcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAKICNpbXBvcnQg
IldvcmtRdWV1ZUl0ZW0uaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU3RhdGlzdGljcy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Gb3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NRWxl
bWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KQEAgLTkxNyw3ICs5MTks
OSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogICAgIFtEdW1wUmVu
ZGVyVHJlZUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsgLy8gRm9yY2UgQXBwS2l0IHRv
IGluaXQgaXRzZWxmCiAgICAgZHVtcFJlbmRlclRyZWUoYXJnYywgYXJndik7CiAgICAgW1dlYkNv
cmVTdGF0aXN0aWNzIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNdOwotICAgIFtXZWJD
b3JlU3RhdGlzdGljcyBlbXB0eUNhY2hlXTsgLy8gT3RoZXJ3aXNlIFNWR0ltYWdlcyB0cmlnZ2Vy
IGZhbHNlIHBvc2l0aXZlcyBmb3IgRnJhbWUvTm9kZSBjb3VudHMgICAgCisgICAgW1dlYkNvcmVT
dGF0aXN0aWNzIGVtcHR5Q2FjaGVdOyAvLyBPdGhlcndpc2UgU1ZHSW1hZ2VzIHRyaWdnZXIgZmFs
c2UgcG9zaXRpdmVzIGZvciBGcmFtZS9Ob2RlIGNvdW50cworICAgIGlmIChKU0M6Ok9wdGlvbnM6
OmxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkpCisgICAgICAgIEpTQzo6SGVhcFN0YXRpc3RpY3M6
OnJlcG9ydFN1Y2Nlc3MoKTsKICAgICBbcG9vbCByZWxlYXNlXTsKICAgICByZXR1cm4gMDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167202</attachid>
            <date>2012-10-04 16:33:31 -0700</date>
            <delta_ts>2012-10-04 18:55:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98431-20121004163241.patch</filename>
            <type>text/plain</type>
            <size>31008</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwNDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBhbmQgbG9nIEhlYXAgbWVt
b3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW1wcm92ZSBvdXIgaW5mcmFzdHJ1Y3R1cmUgZm9y
IGJlbmNobWFyay1kcml2ZW4gZGV2ZWxvcG1lbnQsIHdlIHNob3VsZCAKKyAgICAgICAgaGF2ZSBh
IGNlbnRyYWxpemVkIG1ldGhvZCBvZiBnYXRoZXJpbmcgYW5kIGxvZ2dpbmcgdmFyaW91cyBzdGF0
aXN0aWNzIGFib3V0IHRoZSBzdGF0ZSAKKyAgICAgICAgb2YgdGhlIEpTIGhlYXAuIFRoaXMgd291
bGQgYWxsb3cgdXMgdG8gY3JlYXRlIGFuZCB0byB1c2Ugb3RoZXIgdG9vbHMgdG8gYW5hbHl6ZSB0
aGUgCisgICAgICAgIG91dHB1dCBvZiB0aGUgVk0gYWZ0ZXIgcnVubmluZyB2YXJpb3VzIHdvcmts
b2Fkcy4KKworICAgICAgICBUaGUgZmlyc3QgdHdvIHN0YXRpc3RpY3MgdGhhdCBtaWdodCBiZSBp
bnRlcmVzdGluZyBpcyBtZW1vcnkgdXNlIGJ5IEpTQyBhbmQgR0MgcGF1c2UgCisgICAgICAgIHRp
bWVzLiBXZSBjYW4gY29udHJvbCB3aGV0aGVyIHRoaXMgcmVjb3JkaW5nIGhhcHBlbnMgdGhyb3Vn
aCB0aGUgdXNlIG9mIHRoZSBPcHRpb25zIAorICAgICAgICBjbGFzcywgYWxsb3dpbmcgdXMgdG8g
ZWl0aGVyIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgY29tbWFuZCBsaW5lIGZsYWdzLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KTogSWYg
d2UgZmluaXNoIGEgY29sbGVjdGlvbiBhbmQgYXJlIHN0aWxsIG92ZXIgb3VyIHNldCBHQyBoZWFw
IHNpemUsIAorICAgICAgICB3ZSBlbmQgdGhlIHByb2dyYW0gaW1tZWRpYXRlbHkgYW5kIHJlcG9y
dCBhbiBlcnJvci4gQWxzbyBhZGRlZCByZWNvcmRpbmcgb2YgcGF1c2UgdGltZXMuCisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2hv
dWxkQ29sbGVjdCk6IFdoZW4gd2Ugc2V0IGEgc3BlY2lmaWMgR0MgaGVhcCBzaXplIHRocm91Z2gg
T3B0aW9ucywgd2UgCisgICAgICAgIGlnbm9yZSBhbGwgb3RoZXIgaGV1cmlzdGljcyBvbiB3aGVu
IHdlIHNob3VsZCBjb2xsZWN0IGFuZCBpbnN0ZWFkIG9ubHkgYXNrIGlmIHdlJ3JlIAorICAgICAg
ICBncmVhdGVyIHRoYW4gdGhlIGFtb3VudCBzcGVjaWZpZWQgaW4gdGhlIE9wdGlvbiB2YWx1ZS4g
VGhpcyBhbGxvd3MgdXMgdG8gdmlldyB0aW1lL21lbW9yeSAKKyAgICAgICAgdHJhZGVvZmZzIG1v
cmUgY2xlYXJseS4KKyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZSk6CisgICAg
ICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpsb2dTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6
SGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSk6CisgICAgICAgIChKU0M6OkhlYXBTdGF0
aXN0aWNzOjpyZXBvcnRTdWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcFN0YXRpc3RpY3M6OnBh
cnNlTWVtb3J5QW1vdW50KToKKyAgICAgICAgKFN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAg
KEpTQzo6U3RvcmFnZVN0YXRpc3RpY3M6OlN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKEpT
Qzo6U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpTdG9yYWdl
U3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCk6CisgICAgICAgIChK
U0M6OlN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OlN0b3Jh
Z2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSk6CisgICAgICAgIChKU0M6OlN0b3JhZ2VTdGF0aXN0
aWNzOjpzdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6c2hv
d09iamVjdFN0YXRpc3RpY3MpOiBNb3ZlZCB0aGUgb2xkIHNob3dIZWFwU3RhdGlzdGljcyAocmVu
YW1lZCB0byBzaG93T2JqZWN0U3RhdGlzdGljcykgCisgICAgICAgIHRvIHRyeSB0byBzdGFydCBj
b2xsZWN0aW5nIG91ciB2YXJpb3VzIG1lbW9yeSBzdGF0aXN0aWNzIGdhdGhlcmluZy9yZXBvcnRp
bmcgbWVjaGFuaXNtcyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgCisgICAgICAgIGNvZGViYXNl
IGludG8gb25lIHBsYWNlLgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcFN0YXRpc3RpY3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6IFdlIG5l
ZWQgdG8gaW5pdGlhbGl6ZSBvdXIgZGF0YSBzdHJ1Y3R1cmVzIGZvciByZWNvcmRpbmcgCisgICAg
ICAgIHN0YXRpc3RpY3MgaWYgbmVjZXNzYXJ5LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6IEFkZCBuZXcgT3B0aW9ucyBmb3IgdGhlIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGlzdGljcyB3
ZSdsbCBiZSBnYXRoZXJpbmcuCisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOiBJbml0aWFsaXplIHRoZSB2YXJp
b3VzIG5ldyBvcHRpb25zIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgIChKU0MpOgorCiAyMDEyLTEwLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgbWlzc2luZyBMTEludCBkZXBlbmRlbmNpZXMg
dG8gdGhlIGJ1aWxkIHN5c3RlbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBoZWFwL0hhbmRsZVNldC5jcHAKICAgICBoZWFwL0hhbmRsZVN0YWNrLmNw
cAogICAgIGhlYXAvSGVhcC5jcHAKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAogICAgIGhl
YXAvSGVhcFRpbWVyLmNwcAogICAgIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAogICAgIGhl
YXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI4MCw2ICsyODAsOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwIFwKKyAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xpc3RhYmxlSGFuZGxlci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL0Jsb2NrQWxs
b2NhdG9yLmNwcCBcCiAgICAgaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwIFwKICAgICBoZWFw
L0hlYXAuY3BwIFwKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcCBcCiAgICAgaGVhcC9IZWFw
VGltZXIuY3BwIFwKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgXAogICAgIGhlYXAv
SklUU3R1YlJvdXRpbmVTZXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJD
b3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CisjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBA
IC01MjgsNiArNTI5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIFRS
WQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwogICAgIEVYQ0VQVChyZXMgPSAz
KQorICAgIGlmIChPcHRpb25zOjpsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCgpKQorICAgICAgICBI
ZWFwU3RhdGlzdGljczo6cmVwb3J0U3VjY2VzcygpOwogICAgIHJldHVybiByZXM7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjQ1Nyw2ICsyNDU3LDE0IEBACiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxoZWFwXEhlYXBSb290VmlzaXRvci5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAgICAgICAg
ICAgIDxGaWxlCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhlYXBT
dGF0aXN0aWNzLmNwcCIKKyAgICAgICAgICAgID4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAg
ICAgICAgIDxGaWxlCisgICAgICAgICAgICAgICAgUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEhl
YXBTdGF0aXN0aWNzLmgiCisgICAgICAgICAgICA+CisgICAgICAgICAgICA8L0ZpbGU+CiAJCQk8
RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxMb2NhbC5oIgogCQkJCT4KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNzEwLDYgKzcxMCw4IEBACiAJCUMyMjU0OTQzMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjI1NDk0MjE1RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3Bw
ICovOyB9OwogCQlDMjJCMzFCOTE0MDU3N0Q3MDBEQjQ3NUEgLyogU2FtcGxpbmdDb3VudGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjc3MDA4RTE0
MDJGREQ2MDA3OEVCMzkgLyogU2FtcGxpbmdDb3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzI0MDMwNTUxNEI0MDRFNjAwNzlFQjY0IC8q
IENvcGllZFNwYWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMyNDAzMDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi87IH07
CisJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjREMzFFMDE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwICovOyB9OworCQlDMjREMzFFMzE2MUNENjk1
MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlz
dGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMyNUY4QkNEMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0IxNTc1NDRB
OTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgKi87IH07CiAJCUMyNUY4QkNFMTU3
NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJ
bmNyZW1lbnRhbFN3ZWVwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkE3RjY4ODE2MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVP
YmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMy
QTdGNjg3MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDg2LDYgKzE0ODgs
OCBAQAogCQlDMjExMjJFMDE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lTWV0aG9k
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrU3RhY2tJbmxpbmVNZXRo
b2RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMjU0OTQyMTVGN0RCQUEwMDY1
RTg5OCAvKiBTbG90VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTbG90VmlzaXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNDAz
MDUzMTRCNDA0QzkwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDb3BpZWRTcGFjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMyNEQzMUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIZWFwU3RhdGlzdGljcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNEQzMUUxMTYxQ0Q2OTUwMDJBQTREQiAv
KiBIZWFwU3RhdGlzdGljcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFw
U3RhdGlzdGljcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjVGOEJDQjE1NzU0
NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3
ZWVwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jcmVtZW50YWxTd2Vl
cGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQTdGNjg3MTYwNDMyRDQwMEY3
NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0Rlc3RydWN0aWJsZU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTgxNSw2ICsxODE5LDggQEAKIAkJMTQyRTMxMkExMzRGRjBBNjAwQUZBREI1IC8qIGhl
YXAgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMyNEQz
MUUwMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi8sCisJCQkJQzI0RDMx
RTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggKi8sCiAJCQkJQzIyNTQ5NDIx
NUY3REJBQTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLywKIAkJCQlDMjExMjJERTE1REQ5
QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmNwcCAqLywKIAkJCQlDMjExMjJERjE1
REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggKi8sCkBAIC0yNTcyLDYgKzI1
NzgsNyBAQAogCQkJCTg2QUREMTQ1MEZEREVBOTgwMDA2RUVDMiAvKiBBUk12N0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQzJFQUQyRkMxNEYwMjQ5ODAwQTRCMTU5IC8qIENvcGllZEFs
bG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8q
IE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzI0RDMxRTMxNjFDRDY5NTAw
MkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkE3RjY4ODE2
MDQzMkQ0MDBGNzZCOTggLyogSlNEZXN0cnVjdGlibGVPYmplY3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUZFMjBDRTlFMTVGMDRBOTUwMERGMzQzMCAvKiBMTEludENMb29wLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDMjExMjJFMjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmgg
aW4gSGVhZGVycyAqLywKQEAgLTM1NjYsNiArMzU3Myw3IEBACiAJCQkJQzIyNTQ5NDMxNUY3REJB
QTAwNjVFODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2MjU1M0Qx
MTYxMzZEQTkwMDlGMTdEMCAvKiBKU1Byb3h5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNTU0
MUIxMTYxM0MxRkIwMENFM0UyNSAvKiBTcGVjaWFsUG9pbnRlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlDMjREMzFFMjE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24g
MTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgog
I2luY2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXBSb290VmlzaXRv
ci5oIgorI2luY2x1ZGUgIkhlYXBTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiSW5jcmVtZW50YWxT
d2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbERh
dGEuaCIKQEAgLTIzNSw3NCArMjM2LDYgQEAgaW5saW5lIFBhc3NPd25QdHI8VHlwZUNvdW50U2V0
PiBSZWNvcmRUeQogICAgIHJldHVybiBtX3R5cGVDb3VudFNldC5yZWxlYXNlKCk7CiB9CiAKLWNs
YXNzIFN0b3JhZ2VTdGF0aXN0aWNzIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3RvciB7
Ci1wdWJsaWM6Ci0gICAgU3RvcmFnZVN0YXRpc3RpY3MoKTsKLQotICAgIHZvaWQgb3BlcmF0b3Io
KShKU0NlbGwqKTsKLQotICAgIHNpemVfdCBvYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50
KCk7Ci0gICAgc2l6ZV90IG9iamVjdENvdW50KCk7Ci0KLSAgICBzaXplX3Qgc3RvcmFnZVNpemUo
KTsKLSAgICBzaXplX3Qgc3RvcmFnZUNhcGFjaXR5KCk7Ci0KLXByaXZhdGU6Ci0gICAgc2l6ZV90
IG1fb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudDsKLSAgICBzaXplX3QgbV9vYmplY3RD
b3VudDsKLSAgICBzaXplX3QgbV9zdG9yYWdlU2l6ZTsKLSAgICBzaXplX3QgbV9zdG9yYWdlQ2Fw
YWNpdHk7Ci19OwotCi1pbmxpbmUgU3RvcmFnZVN0YXRpc3RpY3M6OlN0b3JhZ2VTdGF0aXN0aWNz
KCkKLSAgICA6IG1fb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgwKQotICAgICwgbV9v
YmplY3RDb3VudCgwKQotICAgICwgbV9zdG9yYWdlU2l6ZSgwKQotICAgICwgbV9zdG9yYWdlQ2Fw
YWNpdHkoMCkKLXsKLX0KLQotaW5saW5lIHZvaWQgU3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9y
KCkoSlNDZWxsKiBjZWxsKQotewotICAgIGlmICghY2VsbC0+aXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IGpzQ2FzdDxKU09iamVjdCo+KGNlbGwp
OwotICAgIGlmIChoYXNJbmRleGVkUHJvcGVydGllcyhvYmplY3QtPnN0cnVjdHVyZSgpLT5pbmRl
eGluZ1R5cGUoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChvYmplY3QtPnN0cnVjdHVy
ZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAr
K21fb2JqZWN0Q291bnQ7Ci0gICAgaWYgKCFvYmplY3QtPmhhc0lubGluZVN0b3JhZ2UoKSkKLSAg
ICAgICAgKyttX29iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQ7Ci0gICAgbV9zdG9yYWdl
U2l6ZSArPSBvYmplY3QtPnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VTaXplKCkgKiBzaXplb2Yo
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPik7Ci0gICAgbV9zdG9yYWdlQ2FwYWNpdHkgKz0gb2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dG90YWxTdG9yYWdlQ2FwYWNpdHkoKSAqIHNpemVvZihXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KTsgCi19Ci0KLWlubGluZSBzaXplX3QgU3RvcmFnZVN0YXRpc3Rp
Y3M6Om9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKQotewotICAgIHJldHVybiBtX29i
amVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQ7Ci19Ci0KLWlubGluZSBzaXplX3QgU3RvcmFn
ZVN0YXRpc3RpY3M6Om9iamVjdENvdW50KCkKLXsKLSAgICByZXR1cm4gbV9vYmplY3RDb3VudDsK
LX0KLQotCi1pbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSgpCi17
Ci0gICAgcmV0dXJuIG1fc3RvcmFnZVNpemU7Ci19Ci0KLQotaW5saW5lIHNpemVfdCBTdG9yYWdl
U3RhdGlzdGljczo6c3RvcmFnZUNhcGFjaXR5KCkKLXsKLSAgICByZXR1cm4gbV9zdG9yYWdlQ2Fw
YWNpdHk7Ci19Ci0KIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCiBIZWFwOjpIZWFwKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVhcFR5cGUgaGVhcFR5cGUpCkBAIC04MzEsNiArNzY0LDkg
QEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgIH0KICAgICAK
ICAgICBzaXplX3QgY3VycmVudEhlYXBTaXplID0gc2l6ZSgpOworICAgIGlmIChPcHRpb25zOjpn
Y01heEhlYXBTaXplKCkgJiYgY3VycmVudEhlYXBTaXplID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6
ZSgpKQorICAgICAgICBIZWFwU3RhdGlzdGljczo6ZXhpdFdpdGhGYWlsdXJlKCk7CisKICAgICBp
ZiAoZnVsbEdDKSB7CiAgICAgICAgIG1fc2l6ZUFmdGVyTGFzdENvbGxlY3QgPSBjdXJyZW50SGVh
cFNpemU7CiAKQEAgLTg0NCw2ICs3ODAsOCBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dn
bGUgc3dlZXBUb2dnCiAgICAgZG91YmxlIGxhc3RHQ0VuZFRpbWUgPSBXVEY6OmN1cnJlbnRUaW1l
KCk7CiAgICAgbV9sYXN0R0NMZW5ndGggPSBsYXN0R0NFbmRUaW1lIC0gbGFzdEdDU3RhcnRUaW1l
OwogCisgICAgaWYgKE9wdGlvbnM6OnJlY29yZEdDUGF1c2VUaW1lcygpKQorICAgICAgICBIZWFw
U3RhdGlzdGljczo6cmVjb3JkR0NQYXVzZVRpbWUobGFzdEdDU3RhcnRUaW1lLCBsYXN0R0NFbmRU
aW1lKTsKICAgICBpZiAobV9vcGVyYXRpb25JblByb2dyZXNzICE9IENvbGxlY3Rpb24pCiAgICAg
ICAgIENSQVNIKCk7CiAgICAgbV9vcGVyYXRpb25JblByb2dyZXNzID0gTm9PcGVyYXRpb247CkBA
IC04NTUsMzEgKzc5Myw4IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRv
Z2cKICAgICBpZiAoT3B0aW9uczo6b2JqZWN0c0FyZUltbW9ydGFsKCkpCiAgICAgICAgIG1hcmtE
ZWFkT2JqZWN0cygpOwogCi0gICAgaWYgKE9wdGlvbnM6OnNob3dIZWFwU3RhdGlzdGljcygpKQot
ICAgICAgICBzaG93U3RhdGlzdGljcygpOwotfQotCi12b2lkIEhlYXA6OnNob3dTdGF0aXN0aWNz
KCkKLXsKLSAgICBkYXRhTG9nKCJcbj09PSBIZWFwIFN0YXRpc3RpY3M6ID09PVxuIik7Ci0gICAg
ZGF0YUxvZygic2l6ZTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+KG1fc2l6ZUFmdGVyTGFz
dENvbGxlY3QgLyBLQikpOwotICAgIGRhdGFMb2coImNhcGFjaXR5OiAlbGRrQlxuIiwgc3RhdGlj
X2Nhc3Q8bG9uZz4oY2FwYWNpdHkoKSAvIEtCKSk7Ci0gICAgZGF0YUxvZygicGF1c2UgdGltZTog
JWxmbXNcblxuIiwgbV9sYXN0R0NMZW5ndGgpOwotCi0gICAgU3RvcmFnZVN0YXRpc3RpY3Mgc3Rv
cmFnZVN0YXRpc3RpY3M7Ci0gICAgbV9vYmplY3RTcGFjZS5mb3JFYWNoTGl2ZUNlbGwoc3RvcmFn
ZVN0YXRpc3RpY3MpOwotICAgIGRhdGFMb2coIndhc3RlZCAucHJvcGVydHkgc3RvcmFnZTogJWxk
a0IgKCVsZCUlKVxuIiwKLSAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCi0gICAgICAgICAgICAo
c3RvcmFnZVN0YXRpc3RpY3Muc3RvcmFnZUNhcGFjaXR5KCkgLSBzdG9yYWdlU3RhdGlzdGljcy5z
dG9yYWdlU2l6ZSgpKSAvIEtCKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCi0gICAgICAg
ICAgICAoc3RvcmFnZVN0YXRpc3RpY3Muc3RvcmFnZUNhcGFjaXR5KCkgLSBzdG9yYWdlU3RhdGlz
dGljcy5zdG9yYWdlU2l6ZSgpKSAqIDEwMAotICAgICAgICAgICAgICAgIC8gc3RvcmFnZVN0YXRp
c3RpY3Muc3RvcmFnZUNhcGFjaXR5KCkpKTsKLSAgICBkYXRhTG9nKCJvYmplY3RzIHdpdGggb3V0
LW9mLWxpbmUgLnByb3BlcnR5IHN0b3JhZ2U6ICVsZCAoJWxkJSUpXG4iLAotICAgICAgICBzdGF0
aWNfY2FzdDxsb25nPigKLSAgICAgICAgICAgIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdFdpdGhP
dXRPZkxpbmVTdG9yYWdlQ291bnQoKSksCi0gICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAotICAg
ICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3Vu
dCgpICogMTAwCi0gICAgICAgICAgICAgICAgLyBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RDb3Vu
dCgpKSk7CisgICAgaWYgKE9wdGlvbnM6OnNob3dPYmplY3RTdGF0aXN0aWNzKCkpCisgICAgICAg
IEhlYXBTdGF0aXN0aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyh0aGlzKTsKIH0KIAogdm9pZCBI
ZWFwOjptYXJrRGVhZE9iamVjdHMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
cmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIK
ICNpbmNsdWRlICJNYXJrZWRCbG9ja1NldC5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisj
aW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgIlNsb3RWaXNpdG9yLmgiCiAjaW5jbHVkZSAi
V2Vha0hhbmRsZU93bmVyLmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyU3VwcG9ydC5oIgpAQCAt
MTgyLDYgKzE4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb3BpZWRTcGFjZTsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFNsb3RWaXNpdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFN0YXRpc3Rp
Y3M7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNl
bGwoSGVhcCYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxs
b2NhdGVDZWxsKEhlYXAmLCBzaXplX3QpOwogCkBAIC0yNTgsNiArMjYwLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBpbmxpbmUgYm9vbCBIZWFwOjpzaG91bGRDb2xsZWN0KCkKICAgICB7Cisg
ICAgICAgIGlmIChPcHRpb25zOjpnY01heEhlYXBTaXplKCkpCisgICAgICAgICAgICByZXR1cm4g
bV9ieXRlc0FsbG9jYXRlZCA+IE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSAmJiBtX2lzU2FmZVRv
Q29sbGVjdCAmJiBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb247CiAjaWYgRU5B
QkxFKEdHQykKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UubnVyc2VyeVdhdGVyTWFyaygp
ID49IG1fbWluQnl0ZXNQZXJDeWNsZSAmJiBtX2lzU2FmZVRvQ29sbGVjdCAmJiBtX29wZXJhdGlv
bkluUHJvZ3Jlc3MgPT0gTm9PcGVyYXRpb247CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSGVhcFN0YXRpc3RpY3MuaCIKKworI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIk9wdGlvbnMuaCIKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpZiBP
UyhVTklYKQorI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgorI2VuZGlmCisjaW5jbHVkZSA8d3Rm
L0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KKyNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2RvdWJsZSBIZWFwU3RhdGlzdGljczo6c19z
dGFydFRpbWUgPSAwLjA7Citkb3VibGUgSGVhcFN0YXRpc3RpY3M6OnNfZW5kVGltZSA9IDAuMDsK
K0RlcXVlPGRvdWJsZT4qIEhlYXBTdGF0aXN0aWNzOjpzX3BhdXNlVGltZVN0YXJ0cyA9IDA7CitE
ZXF1ZTxkb3VibGU+KiBIZWFwU3RhdGlzdGljczo6c19wYXVzZVRpbWVFbmRzID0gMDsKKworI2lm
IE9TKFVOSVgpIAorCit2b2lkIEhlYXBTdGF0aXN0aWNzOjppbml0aWFsaXplKCkKK3sKKyAgICBB
U1NFUlQoT3B0aW9uczo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpOworICAgIHNfc3RhcnRUaW1lID0g
V1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBzX3BhdXNlVGltZVN0YXJ0
cyA9IG5ldyBEZXF1ZTxkb3VibGU+KCk7CisgICAgc19wYXVzZVRpbWVFbmRzID0gbmV3IERlcXVl
PGRvdWJsZT4oKTsKK30KKwordm9pZCBIZWFwU3RhdGlzdGljczo6cmVjb3JkR0NQYXVzZVRpbWUo
ZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQoreworICAgIEFTU0VSVChPcHRpb25zOjpyZWNvcmRH
Q1BhdXNlVGltZXMoKSk7CisgICAgQVNTRVJUKHNfcGF1c2VUaW1lU3RhcnRzKTsKKyAgICBBU1NF
UlQoc19wYXVzZVRpbWVFbmRzKTsKKyAgICBzX3BhdXNlVGltZVN0YXJ0cy0+YXBwZW5kKHN0YXJ0
KTsKKyAgICBzX3BhdXNlVGltZUVuZHMtPmFwcGVuZChlbmQpOworfQorCit2b2lkIEhlYXBTdGF0
aXN0aWNzOjpsb2dTdGF0aXN0aWNzKCkKK3sKKyAgICBzdHJ1Y3QgcnVzYWdlIHVzYWdlOworICAg
IGdldHJ1c2FnZShSVVNBR0VfU0VMRiwgJnVzYWdlKTsKKyNpZiBVU0UoQ0YpIHx8IE9TKFVOSVgp
CisgICAgY2hhciogdm1OYW1lID0gZ2V0ZW52KCJKU1ZNTmFtZSIpOworICAgIGNoYXIqIHN1aXRl
TmFtZSA9IGdldGVudigiSlNTdWl0ZU5hbWUiKTsKKyAgICBjaGFyKiBiZW5jaG1hcmtOYW1lID0g
Z2V0ZW52KCJKU0JlbmNobWFya05hbWUiKTsKKyNlbHNlCisjZXJyb3IgIlRoZSBIZWFwU3RhdGlz
dGljcyBtb2R1bGUgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKKyNlbmRpZgor
ICAgIGlmICghdm1OYW1lIHx8ICFzdWl0ZU5hbWUgfHwgIWJlbmNobWFya05hbWUpCisgICAgICAg
IGRhdGFMb2coIkhlYXBTdGF0aXN0aWNzOiB7XCJtYXhfcnNzXCI6ICVsZCIsIHVzYWdlLnJ1X21h
eHJzcyk7CisgICAgZWxzZQorICAgICAgICBkYXRhTG9nKCJIZWFwU3RhdGlzdGljczoge1wibWF4
X3Jzc1wiOiAlbGQsIFwidm1fbmFtZVwiOiBcIiVzXCIsIFwic3VpdGVfbmFtZVwiOiBcIiVzXCIs
IFwiYmVuY2htYXJrX25hbWVcIjogXCIlc1wiIiwgCisgICAgICAgICAgICB1c2FnZS5ydV9tYXhy
c3MsIHZtTmFtZSwgc3VpdGVOYW1lLCBiZW5jaG1hcmtOYW1lKTsgCisKKyAgICBpZiAoT3B0aW9u
czo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpIHsKKyAgICAgICAgZGF0YUxvZygiLCBcInBhdXNlX3Rp
bWVzXCI6IFsiKTsKKyAgICAgICAgRGVxdWU8ZG91YmxlPjo6aXRlcmF0b3Igc3RhcnRJdCA9IHNf
cGF1c2VUaW1lU3RhcnRzLT5iZWdpbigpOworICAgICAgICBEZXF1ZTxkb3VibGU+OjppdGVyYXRv
ciBlbmRJdCA9IHNfcGF1c2VUaW1lRW5kcy0+YmVnaW4oKTsKKyAgICAgICAgaWYgKHN0YXJ0SXQg
IT0gc19wYXVzZVRpbWVTdGFydHMtPmVuZCgpICYmIGVuZEl0ICE9IHNfcGF1c2VUaW1lRW5kcy0+
ZW5kKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIlslZiwgJWZdIiwgKnN0YXJ0SXQsICplbmRJ
dCk7CisgICAgICAgICAgICArK3N0YXJ0SXQ7CisgICAgICAgICAgICArK2VuZEl0OworICAgICAg
ICB9CisgICAgICAgIHdoaWxlIChzdGFydEl0ICE9IHNfcGF1c2VUaW1lU3RhcnRzLT5lbmQoKSAm
JiBlbmRJdCAhPSBzX3BhdXNlVGltZUVuZHMtPmVuZCgpKSB7CisgICAgICAgICAgICBkYXRhTG9n
KCIsIFslZiwgJWZdIiwgKnN0YXJ0SXQsICplbmRJdCk7CisgICAgICAgICAgICArK3N0YXJ0SXQ7
CisgICAgICAgICAgICArK2VuZEl0OworICAgICAgICB9CisgICAgICAgIGRhdGFMb2coIl0sIFwi
c3RhcnRfdGltZVwiOiAlZiwgXCJlbmRfdGltZVwiOiAlZiIsIHNfc3RhcnRUaW1lLCBzX2VuZFRp
bWUpOworICAgIH0KKyAgICBkYXRhTG9nKCJ9XG4iKTsKK30KKwordm9pZCBIZWFwU3RhdGlzdGlj
czo6ZXhpdFdpdGhGYWlsdXJlKCkKK3sKKyAgICBBU1NFUlQoT3B0aW9uczo6bG9nSGVhcFN0YXRp
c3RpY3NBdEV4aXQoKSk7CisgICAgc19lbmRUaW1lID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKKyAgICBsb2dTdGF0aXN0aWNzKCk7CisgICAgZXhpdCgtMSk7Cit9CisKK3Zv
aWQgSGVhcFN0YXRpc3RpY3M6OnJlcG9ydFN1Y2Nlc3MoKQoreworICAgIEFTU0VSVChPcHRpb25z
Ojpsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCgpKTsKKyAgICBzX2VuZFRpbWUgPSBXVEY6Om1vbm90
b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIGxvZ1N0YXRpc3RpY3MoKTsKK30KKworI2Vs
c2UKKwordm9pZCBIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6ZSgpCit7Cit9CisKK3ZvaWQgSGVh
cFN0YXRpc3RpY3M6OnJlY29yZEdDUGF1c2VUaW1lKGRvdWJsZSwgZG91YmxlKQoreworfQorCit2
b2lkIEhlYXBTdGF0aXN0aWNzOjpsb2dTdGF0aXN0aWNzKCkKK3sKK30KKwordm9pZCBIZWFwU3Rh
dGlzdGljczo6ZXhpdFdpdGhGYWlsdXJlKCkKK3sKK30KKwordm9pZCBIZWFwU3RhdGlzdGljczo6
cmVwb3J0U3VjY2VzcygpCit7Cit9CisKKyNlbmRpZiAvLyBPUyhVTklYKQorCitzaXplX3QgSGVh
cFN0YXRpc3RpY3M6OnBhcnNlTWVtb3J5QW1vdW50KGNoYXIqIHMpCit7CisgICAgc2l6ZV90IG11
bHRpcGxpZXIgPSAxOworICAgIGNoYXIqIGFmdGVyUzsKKyAgICBzaXplX3QgdmFsdWUgPSBzdHJ0
b2wocywgJmFmdGVyUywgMTApOworICAgIGNoYXIgbmV4dCA9IGFmdGVyU1swXTsKKyAgICBzd2l0
Y2ggKG5leHQpIHsKKyAgICBjYXNlICdLJzoKKyAgICAgICAgbXVsdGlwbGllciA9IEtCOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlICdNJzoKKyAgICAgICAgbXVsdGlwbGllciA9IE1COworICAg
ICAgICBicmVhazsKKyAgICBjYXNlICdHJzoKKyAgICAgICAgbXVsdGlwbGllciA9IEdCOworICAg
ICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0
dXJuIHZhbHVlICogbXVsdGlwbGllcjsKK30KKworY2xhc3MgU3RvcmFnZVN0YXRpc3RpY3MgOiBw
dWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsKK3B1YmxpYzoKKyAgICBTdG9yYWdlU3Rh
dGlzdGljcygpOworCisgICAgdm9pZCBvcGVyYXRvcigpKEpTQ2VsbCopOworCisgICAgc2l6ZV90
IG9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQoKTsKKyAgICBzaXplX3Qgb2JqZWN0Q291
bnQoKTsKKworICAgIHNpemVfdCBzdG9yYWdlU2l6ZSgpOworICAgIHNpemVfdCBzdG9yYWdlQ2Fw
YWNpdHkoKTsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbV9vYmplY3RXaXRoT3V0T2ZMaW5lU3Rv
cmFnZUNvdW50OworICAgIHNpemVfdCBtX29iamVjdENvdW50OworICAgIHNpemVfdCBtX3N0b3Jh
Z2VTaXplOworICAgIHNpemVfdCBtX3N0b3JhZ2VDYXBhY2l0eTsKK307CisKK2lubGluZSBTdG9y
YWdlU3RhdGlzdGljczo6U3RvcmFnZVN0YXRpc3RpY3MoKQorICAgIDogbV9vYmplY3RXaXRoT3V0
T2ZMaW5lU3RvcmFnZUNvdW50KDApCisgICAgLCBtX29iamVjdENvdW50KDApCisgICAgLCBtX3N0
b3JhZ2VTaXplKDApCisgICAgLCBtX3N0b3JhZ2VDYXBhY2l0eSgwKQoreworfQorCitpbmxpbmUg
dm9pZCBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3IoKShKU0NlbGwqIGNlbGwpCit7CisgICAg
aWYgKCFjZWxsLT5pc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBKU09iamVjdCog
b2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CisgICAgaWYgKGhhc0luZGV4ZWRQcm9w
ZXJ0aWVzKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKG9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkpCisgICAgICAgIHJldHVybjsKKworICAgICsrbV9vYmplY3RDb3VudDsKKyAgICBpZiAo
IW9iamVjdC0+aGFzSW5saW5lU3RvcmFnZSgpKQorICAgICAgICArK21fb2JqZWN0V2l0aE91dE9m
TGluZVN0b3JhZ2VDb3VudDsKKyAgICBtX3N0b3JhZ2VTaXplICs9IG9iamVjdC0+c3RydWN0dXJl
KCktPnRvdGFsU3RvcmFnZVNpemUoKSAqIHNpemVvZihXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+
KTsKKyAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmplY3QtPnN0cnVjdHVyZSgpLT50b3RhbFN0
b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4pOyAKK30K
KworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9mTGluZVN0
b3JhZ2VDb3VudCgpCit7CisgICAgcmV0dXJuIG1fb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VD
b3VudDsKK30KKworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6b2JqZWN0Q291bnQo
KQoreworICAgIHJldHVybiBtX29iamVjdENvdW50OworfQorCitpbmxpbmUgc2l6ZV90IFN0b3Jh
Z2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSgpCit7CisgICAgcmV0dXJuIG1fc3RvcmFnZVNpemU7
Cit9CisKK2lubGluZSBzaXplX3QgU3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VDYXBhY2l0eSgp
Cit7CisgICAgcmV0dXJuIG1fc3RvcmFnZUNhcGFjaXR5OworfQorCit2b2lkIEhlYXBTdGF0aXN0
aWNzOjpzaG93T2JqZWN0U3RhdGlzdGljcyhIZWFwKiBoZWFwKQoreworICAgIGRhdGFMb2coIlxu
PT09IEhlYXAgU3RhdGlzdGljczogPT09XG4iKTsKKyAgICBkYXRhTG9nKCJzaXplOiAlbGRrQlxu
Iiwgc3RhdGljX2Nhc3Q8bG9uZz4oaGVhcC0+bV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCAvIEtCKSk7
CisgICAgZGF0YUxvZygiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNfY2FzdDxsb25nPihoZWFw
LT5jYXBhY2l0eSgpIC8gS0IpKTsKKyAgICBkYXRhTG9nKCJwYXVzZSB0aW1lOiAlbGZtc1xuXG4i
LCBoZWFwLT5tX2xhc3RHQ0xlbmd0aCk7CisKKyAgICBTdG9yYWdlU3RhdGlzdGljcyBzdG9yYWdl
U3RhdGlzdGljczsKKyAgICBoZWFwLT5tX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbChzdG9y
YWdlU3RhdGlzdGljcyk7CisgICAgZGF0YUxvZygid2FzdGVkIC5wcm9wZXJ0eSBzdG9yYWdlOiAl
bGRrQiAoJWxkJSUpXG4iLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKKyAgICAgICAgICAg
IChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0aXN0aWNz
LnN0b3JhZ2VTaXplKCkpIC8gS0IpLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKKyAgICAg
ICAgICAgIChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0
aXN0aWNzLnN0b3JhZ2VTaXplKCkpICogMTAwCisgICAgICAgICAgICAgICAgLyBzdG9yYWdlU3Rh
dGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSkpOworICAgIGRhdGFMb2coIm9iamVjdHMgd2l0aCBv
dXQtb2YtbGluZSAucHJvcGVydHkgc3RvcmFnZTogJWxkICglbGQlJSlcbiIsCisgICAgICAgIHN0
YXRpY19jYXN0PGxvbmc+KAorICAgICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0V2l0
aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCisg
ICAgICAgICAgICBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNv
dW50KCkgKiAxMDAKKyAgICAgICAgICAgICAgICAvIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdENv
dW50KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBIZWFwU3RhdGlzdGljc19oCisjZGVmaW5lIEhl
YXBTdGF0aXN0aWNzX2gKKworI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSGVhcDsKKworY2xhc3MgSGVhcFN0YXRpc3RpY3MgeworcHVibGljOgorICAg
IE5PX1JFVFVSTiBzdGF0aWMgdm9pZCBleGl0V2l0aEZhaWx1cmUoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgdm9pZCByZXBvcnRTdWNjZXNzKCk7CisKKyAgICBzdGF0aWMgdm9pZCBp
bml0aWFsaXplKCk7CisgICAgc3RhdGljIHZvaWQgcmVjb3JkR0NQYXVzZVRpbWUoZG91YmxlIHN0
YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBzdGF0aWMgc2l6ZV90IHBhcnNlTWVtb3J5QW1vdW50KGNo
YXIqKTsKKworICAgIHN0YXRpYyB2b2lkIHNob3dPYmplY3RTdGF0aXN0aWNzKEhlYXAqKTsKKwor
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgS0IgPSAxMDI0OworICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgTUIgPSAxMDI0ICogS0I7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBHQiA9IDEwMjQgKiBN
QjsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBsb2dTdGF0aXN0aWNzKCk7CisgICAgc3Rh
dGljIERlcXVlPGRvdWJsZT4qIHNfcGF1c2VUaW1lU3RhcnRzOworICAgIHN0YXRpYyBEZXF1ZTxk
b3VibGU+KiBzX3BhdXNlVGltZUVuZHM7CisgICAgc3RhdGljIGRvdWJsZSBzX3N0YXJ0VGltZTsK
KyAgICBzdGF0aWMgZG91YmxlIHNfZW5kVGltZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVU
aHJlYWRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgog
I2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
Ik9wdGlvbnMuaCIKICNpbmNsdWRlICJJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiSlNEYXRlTWF0
aC5oIgpAQCAtNTYsNiArNTcsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplVGhyZWFkaW5nT25j
ZSgpCiAgICAgV1RGOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgR2xvYmFsSlNMb2NrOjpp
bml0aWFsaXplKCk7CiAgICAgT3B0aW9uczo6aW5pdGlhbGl6ZSgpOworICAgIGlmIChPcHRpb25z
OjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkKKyAgICAgICAgSGVhcFN0YXRpc3RpY3M6OmluaXRpYWxp
emUoKTsKICNpZiBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgV3JpdGVCYXJy
aWVyQ291bnRlcnM6OmluaXRpYWxpemUoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2
ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogCisj
aW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAjaW5jbHVk
ZSA8bGltaXRzPgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0xMzAsNiArMTMxLDEwIEBAIHZvaWQg
T3B0aW9uczo6aW5pdGlhbGl6ZSgpCiAjaWYgVVNFKENGKSB8fCBPUyhVTklYKQogICAgIG9iamVj
dHNBcmVJbW1vcnRhbCgpID0gISFnZXRlbnYoIkpTSW1tb3J0YWxab21iaWVFbmFibGVkIik7CiAg
ICAgdXNlWm9tYmllTW9kZSgpID0gISFnZXRlbnYoIkpTSW1tb3J0YWxab21iaWVFbmFibGVkIikg
fHwgISFnZXRlbnYoIkpTWm9tYmllRW5hYmxlZCIpOworCisgICAgZ2NNYXhIZWFwU2l6ZSgpID0g
Z2V0ZW52KCJHQ01heEhlYXBTaXplIikgPyBIZWFwU3RhdGlzdGljczo6cGFyc2VNZW1vcnlBbW91
bnQoZ2V0ZW52KCJHQ01heEhlYXBTaXplIikpIDogMDsKKyAgICByZWNvcmRHQ1BhdXNlVGltZXMo
KSA9ICEhZ2V0ZW52KCJKU1JlY29yZEdDUGF1c2VUaW1lcyIpOworICAgIGxvZ0hlYXBTdGF0aXN0
aWNzQXRFeGl0KCkgPSBnY01heEhlYXBTaXplKCkgfHwgcmVjb3JkR0NQYXVzZVRpbWVzKCk7CiAj
ZW5kaWYKIAogICAgIC8vIEFsbG93IGVudmlyb25tZW50IHZhcnMgdG8gb3ZlcnJpZGUgb3B0aW9u
cyBpZiBhcHBsaWNhYmxlLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsOCArMTIyLDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIFwKICAgICB2KGJvb2wsIHVzZVpvbWJpZU1vZGUsIGZhbHNlKSBcCiAgICAgdihi
b29sLCBvYmplY3RzQXJlSW1tb3J0YWwsIGZhbHNlKSBcCi0gICAgdihib29sLCBzaG93SGVhcFN0
YXRpc3RpY3MsIGZhbHNlKQotCisgICAgdihib29sLCBzaG93T2JqZWN0U3RhdGlzdGljcywgZmFs
c2UpIFwKKyAgICBcCisgICAgdih1bnNpZ25lZCwgZ2NNYXhIZWFwU2l6ZSwgMCkgXAorICAgIHYo
Ym9vbCwgcmVjb3JkR0NQYXVzZVRpbWVzLCBmYWxzZSkgXAorICAgIHYoYm9vbCwgbG9nSGVhcFN0
YXRpc3RpY3NBdEV4aXQsIGZhbHNlKSAKIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6CkBAIC0x
NjEsNyArMTY0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbFR5cGUsCiAgICAgICAgIHVuc2ln
bmVkVHlwZSwKICAgICAgICAgZG91YmxlVHlwZSwKLSAgICAgICAgaW50MzJUeXBlCisgICAgICAg
IGludDMyVHlwZSwKICAgICB9OwogCiAgICAgLy8gRm9yIHN0b3JpbmcgZm9yIGFuIG9wdGlvbiB2
YWx1ZToKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEzMDQxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVy
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBh
bmQgbG9nIEhlYXAgbWVtb3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJl
bmRlclRyZWUubW06CisgICAgICAgIChtYWluKTogQWRkZWQgYSBjaGVjayBhcyB0byB3aGV0aGVy
IHdlIHNob3VsZCBkdW1wIG91ciBKU0MgSGVhcCBzdGF0aXN0aWNzIG9uIGV4aXQuCisKIDIwMTIt
MTAtMDQgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAog
ICAgICAgICBbRUZMXVtXSzJdIEFkZCBzZXR0aW5nIHRvIGFsbG93IGZpbGUgYWNjZXNzIGZyb20g
ZmlsZTovLyBVUkxzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCShyZXZpc2lvbiAxMzA0MDcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVt
cFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAKICNpbXBvcnQg
IldvcmtRdWV1ZUl0ZW0uaCIKICNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KICNpbXBvcnQgPENv
cmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9I
ZWFwU3RhdGlzdGljcy5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvT3B0aW9ucy5oPgogI2lt
cG9ydCA8V2ViQ29yZS9Gb3VuZGF0aW9uRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NRWxl
bWVudC5oPgogI2ltcG9ydCA8V2ViS2l0L0RPTUV4dGVuc2lvbnMuaD4KQEAgLTkxNyw3ICs5MTks
OSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogICAgIFtEdW1wUmVu
ZGVyVHJlZUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxpY2F0aW9uXTsgLy8gRm9yY2UgQXBwS2l0IHRv
IGluaXQgaXRzZWxmCiAgICAgZHVtcFJlbmRlclRyZWUoYXJnYywgYXJndik7CiAgICAgW1dlYkNv
cmVTdGF0aXN0aWNzIGdhcmJhZ2VDb2xsZWN0SmF2YVNjcmlwdE9iamVjdHNdOwotICAgIFtXZWJD
b3JlU3RhdGlzdGljcyBlbXB0eUNhY2hlXTsgLy8gT3RoZXJ3aXNlIFNWR0ltYWdlcyB0cmlnZ2Vy
IGZhbHNlIHBvc2l0aXZlcyBmb3IgRnJhbWUvTm9kZSBjb3VudHMgICAgCisgICAgW1dlYkNvcmVT
dGF0aXN0aWNzIGVtcHR5Q2FjaGVdOyAvLyBPdGhlcndpc2UgU1ZHSW1hZ2VzIHRyaWdnZXIgZmFs
c2UgcG9zaXRpdmVzIGZvciBGcmFtZS9Ob2RlIGNvdW50cworICAgIGlmIChKU0M6Ok9wdGlvbnM6
OmxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkpCisgICAgICAgIEpTQzo6SGVhcFN0YXRpc3RpY3M6
OnJlcG9ydFN1Y2Nlc3MoKTsKICAgICBbcG9vbCByZWxlYXNlXTsKICAgICByZXR1cm4gMDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167221</attachid>
            <date>2012-10-04 18:55:44 -0700</date>
            <delta_ts>2012-10-05 10:35:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98431-20121004185454.patch</filename>
            <type>text/plain</type>
            <size>31748</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwNDEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBA
CisyMDEyLTEwLTA0ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIHNob3VsZCBoYXZlIGEgd2F5IHRvIGdhdGhlciBhbmQgbG9nIEhlYXAgbWVt
b3J5IHVzZSBhbmQgcGF1c2UgdGltZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk4NDMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgSW4gb3JkZXIgdG8gaW1wcm92ZSBvdXIgaW5mcmFzdHJ1Y3R1cmUgZm9y
IGJlbmNobWFyay1kcml2ZW4gZGV2ZWxvcG1lbnQsIHdlIHNob3VsZCAKKyAgICAgICAgaGF2ZSBh
IGNlbnRyYWxpemVkIG1ldGhvZCBvZiBnYXRoZXJpbmcgYW5kIGxvZ2dpbmcgdmFyaW91cyBzdGF0
aXN0aWNzIGFib3V0IHRoZSBzdGF0ZSAKKyAgICAgICAgb2YgdGhlIEpTIGhlYXAuIFRoaXMgd291
bGQgYWxsb3cgdXMgdG8gY3JlYXRlIGFuZCB0byB1c2Ugb3RoZXIgdG9vbHMgdG8gYW5hbHl6ZSB0
aGUgCisgICAgICAgIG91dHB1dCBvZiB0aGUgVk0gYWZ0ZXIgcnVubmluZyB2YXJpb3VzIHdvcmts
b2Fkcy4KKworICAgICAgICBUaGUgZmlyc3QgdHdvIHN0YXRpc3RpY3MgdGhhdCBtaWdodCBiZSBp
bnRlcmVzdGluZyBpcyBtZW1vcnkgdXNlIGJ5IEpTQyBhbmQgR0MgcGF1c2UgCisgICAgICAgIHRp
bWVzLiBXZSBjYW4gY29udHJvbCB3aGV0aGVyIHRoaXMgcmVjb3JkaW5nIGhhcHBlbnMgdGhyb3Vn
aCB0aGUgdXNlIG9mIHRoZSBPcHRpb25zIAorICAgICAgICBjbGFzcywgYWxsb3dpbmcgdXMgdG8g
ZWl0aGVyIHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3IgY29tbWFuZCBsaW5lIGZsYWdzLgor
CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KTogSWYg
d2UgZmluaXNoIGEgY29sbGVjdGlvbiBhbmQgYXJlIHN0aWxsIG92ZXIgb3VyIHNldCBHQyBoZWFw
IHNpemUsIAorICAgICAgICB3ZSBlbmQgdGhlIHByb2dyYW0gaW1tZWRpYXRlbHkgYW5kIHJlcG9y
dCBhbiBlcnJvci4gQWxzbyBhZGRlZCByZWNvcmRpbmcgb2YgcGF1c2UgdGltZXMuCisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisgICAgICAgIChIZWFwKToKKyAgICAgICAgKEpTQzo6SGVhcDo6c2hv
dWxkQ29sbGVjdCk6IFdoZW4gd2Ugc2V0IGEgc3BlY2lmaWMgR0MgaGVhcCBzaXplIHRocm91Z2gg
T3B0aW9ucywgd2UgCisgICAgICAgIGlnbm9yZSBhbGwgb3RoZXIgaGV1cmlzdGljcyBvbiB3aGVu
IHdlIHNob3VsZCBjb2xsZWN0IGFuZCBpbnN0ZWFkIG9ubHkgYXNrIGlmIHdlJ3JlIAorICAgICAg
ICBncmVhdGVyIHRoYW4gdGhlIGFtb3VudCBzcGVjaWZpZWQgaW4gdGhlIE9wdGlvbiB2YWx1ZS4g
VGhpcyBhbGxvd3MgdXMgdG8gdmlldyB0aW1lL21lbW9yeSAKKyAgICAgICAgdHJhZGVvZmZzIG1v
cmUgY2xlYXJseS4KKyAgICAgICAgKiBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6ZSk6
CisgICAgICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZSk6CisgICAg
ICAgIChKU0M6OkhlYXBTdGF0aXN0aWNzOjpsb2dTdGF0aXN0aWNzKToKKyAgICAgICAgKEpTQzo6
SGVhcFN0YXRpc3RpY3M6OmV4aXRXaXRoRmFpbHVyZSk6CisgICAgICAgIChKU0M6OkhlYXBTdGF0
aXN0aWNzOjpyZXBvcnRTdWNjZXNzKToKKyAgICAgICAgKEpTQzo6SGVhcFN0YXRpc3RpY3M6OnBh
cnNlTWVtb3J5QW1vdW50KToKKyAgICAgICAgKFN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAg
KEpTQzo6U3RvcmFnZVN0YXRpc3RpY3M6OlN0b3JhZ2VTdGF0aXN0aWNzKToKKyAgICAgICAgKEpT
Qzo6U3RvcmFnZVN0YXRpc3RpY3M6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpTdG9yYWdl
U3RhdGlzdGljczo6b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCk6CisgICAgICAgIChK
U0M6OlN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RDb3VudCk6CisgICAgICAgIChKU0M6OlN0b3Jh
Z2VTdGF0aXN0aWNzOjpzdG9yYWdlU2l6ZSk6CisgICAgICAgIChKU0M6OlN0b3JhZ2VTdGF0aXN0
aWNzOjpzdG9yYWdlQ2FwYWNpdHkpOgorICAgICAgICAoSlNDOjpIZWFwU3RhdGlzdGljczo6c2hv
d09iamVjdFN0YXRpc3RpY3MpOiBNb3ZlZCB0aGUgb2xkIHNob3dIZWFwU3RhdGlzdGljcyAocmVu
YW1lZCB0byBzaG93T2JqZWN0U3RhdGlzdGljcykgCisgICAgICAgIHRvIHRyeSB0byBzdGFydCBj
b2xsZWN0aW5nIG91ciB2YXJpb3VzIG1lbW9yeSBzdGF0aXN0aWNzIGdhdGhlcmluZy9yZXBvcnRp
bmcgbWVjaGFuaXNtcyBzY2F0dGVyZWQgdGhyb3VnaG91dCB0aGUgCisgICAgICAgIGNvZGViYXNl
IGludG8gb25lIHBsYWNlLgorICAgICAgICAqIGhlYXAvSGVhcFN0YXRpc3RpY3MuaDogQWRkZWQu
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcFN0YXRpc3RpY3MpOgorICAgICAgICAqIGpz
Yy5jcHA6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBydW50aW1lL0luaXRpYWxpemVUaHJl
YWRpbmcuY3BwOgorICAgICAgICAoSlNDOjppbml0aWFsaXplVGhyZWFkaW5nT25jZSk6IFdlIG5l
ZWQgdG8gaW5pdGlhbGl6ZSBvdXIgZGF0YSBzdHJ1Y3R1cmVzIGZvciByZWNvcmRpbmcgCisgICAg
ICAgIHN0YXRpc3RpY3MgaWYgbmVjZXNzYXJ5LgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6IEFkZCBuZXcgT3B0aW9ucyBmb3IgdGhlIHZhcmlvdXMgdHlwZXMgb2Ygc3RhdGlzdGljcyB3
ZSdsbCBiZSBnYXRoZXJpbmcuCisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxpemUpOiBJbml0aWFsaXplIHRoZSB2YXJp
b3VzIG5ldyBvcHRpb25zIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcy4KKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6ZHVtcE9wdGlvbik6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgIChKU0MpOgorCiAyMDEyLTEwLTA0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBBZGQgbWlzc2luZyBMTEludCBkZXBlbmRlbmNpZXMg
dG8gdGhlIGJ1aWxkIHN5c3RlbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTIsNiArMTEyLDcgQEAgU0VUKEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBoZWFwL0hhbmRsZVNldC5jcHAKICAgICBoZWFwL0hhbmRsZVN0YWNrLmNw
cAogICAgIGhlYXAvSGVhcC5jcHAKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcAogICAgIGhl
YXAvSGVhcFRpbWVyLmNwcAogICAgIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAogICAgIGhl
YXAvSklUU3R1YlJvdXRpbmVTZXQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI4MCw2ICsyODAsOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKICAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaCBcCisgICAgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwIFwKKyAgICBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9KSVRTdHViUm91dGluZVNldC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0pJVFN0dWJSb3V0aW5lU2V0LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0xpc3RhYmxlSGFuZGxlci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShyZXZp
c2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29ya2lu
ZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL0Jsb2NrQWxs
b2NhdG9yLmNwcCBcCiAgICAgaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwIFwKICAgICBoZWFw
L0hlYXAuY3BwIFwKKyAgICBoZWFwL0hlYXBTdGF0aXN0aWNzLmNwcCBcCiAgICAgaGVhcC9IZWFw
VGltZXIuY3BwIFwKICAgICBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgXAogICAgIGhlYXAv
SklUU3R1YlJvdXRpbmVTZXQuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lv
biAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJD
b3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CisjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFk
aW5nLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCkBA
IC01MjgsNiArNTI5LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIFRS
WQogICAgICAgICByZXMgPSBqc2NtYWluKGFyZ2MsIGFyZ3YpOwogICAgIEVYQ0VQVChyZXMgPSAz
KQorICAgIGlmIChPcHRpb25zOjpsb2dIZWFwU3RhdGlzdGljc0F0RXhpdCgpKQorICAgICAgICBI
ZWFwU3RhdGlzdGljczo6cmVwb3J0U3VjY2VzcygpOwogICAgIHJldHVybiByZXM7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZGVmCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgkod29ya2luZyBj
b3B5KQpAQCAtMzEwLDYgKzMxMCw3IEBAIEVYUE9SVFMKICAgICA/cmVtb3ZlQmxvY2tATWFya2Vk
QWxsb2NhdG9yQEpTQ0BAUUFFWFBBVk1hcmtlZEJsb2NrQDJAQFoKICAgICA/cmVwb3J0QWJhbmRv
bmVkT2JqZWN0R3JhcGhASGVhcEBKU0NAQFFBRVhYWgogICAgID9yZXBvcnRFeHRyYU1lbW9yeUNv
c3RTbG93Q2FzZUBIZWFwQEpTQ0BAQUFFWElAWgorICAgID9yZXBvcnRTdWNjZXNzQEhlYXBTdGF0
aXN0aWNzQEpTQ0BAU0FYWFoKICAgICA/cmVzZXJ2ZUFuZENvbW1pdEBPU0FsbG9jYXRvckBXVEZA
QFNBUEFYSVc0VXNhZ2VAMTJAX04xMUBaCiAgICAgP3Jlc2VydmVDYXBhY2l0eUBTdHJpbmdCdWls
ZGVyQFdURkBAUUFFWElAWgogICAgID9yZXNldEBQYXJzZXJBcmVuYUBKU0NAQFFBRVhYWgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2oJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDU3LDYgKzI0NTcsMTQgQEAKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGhlYXBcSGVhcFJvb3RWaXNpdG9yLmgiCiAJCQkJPgogCQkJPC9GaWxlPgorICAgICAgICAg
ICAgPEZpbGUKKyAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcSGVhcFN0
YXRpc3RpY3MuY3BwIgorICAgICAgICAgICAgPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAg
ICAgICAgPEZpbGUKKyAgICAgICAgICAgICAgICBSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcSGVh
cFN0YXRpc3RpY3MuaCIKKyAgICAgICAgICAgID4KKyAgICAgICAgICAgIDwvRmlsZT4KIAkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXExvY2FsLmgiCiAJCQkJPgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC03MTAsNiArNzEwLDggQEAKIAkJQzIyNTQ5NDMxNUY3REJBQTAwNjVF
ODk4IC8qIFNsb3RWaXNpdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyMjU0OTQyMTVGN0RCQUEwMDY1RTg5OCAvKiBTbG90VmlzaXRvci5jcHAg
Ki87IH07CiAJCUMyMkIzMUI5MTQwNTc3RDcwMERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQw
MkZERDYwMDc4RUIzOSAvKiBTYW1wbGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyog
Q29waWVkU3BhY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLzsgfTsK
KwkJQzI0RDMxRTIxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNEQzMUUwMTYxQ0Q2OTUw
MDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgKi87IH07CisJCUMyNEQzMUUzMTYxQ0Q2OTUw
MDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0
aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQjE1NzU0NEE5
MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLzsgfTsKIAkJQzI1RjhCQ0UxNTc1
NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIElu
Y3JlbWVudGFsU3dlZXBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUMyQTdGNjg4MTYwNDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJB
N0Y2ODcxNjA0MzJENDAwRjc2Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE0ODYsNiArMTQ4OCw4
IEBACiAJCUMyMTEyMkUwMTVERDlBQjMwMDc5MEUzQSAvKiBNYXJrU3RhY2tJbmxpbmVNZXRob2Rz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtTdGFja0lubGluZU1ldGhv
ZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzIyNTQ5NDIxNUY3REJBQTAwNjVF
ODk4IC8qIFNsb3RWaXNpdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNsb3RWaXNpdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI0MDMw
NTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzI0RDMxRTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhlYXBTdGF0aXN0aWNzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI0RDMxRTExNjFDRDY5NTAwMkFBNERCIC8q
IEhlYXBTdGF0aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhlYXBT
dGF0aXN0aWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyNUY4QkNCMTU3NTQ0
QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dl
ZXBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmNyZW1lbnRhbFN3ZWVw
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJBN0Y2ODcxNjA0MzJENDAwRjc2
Qjk4IC8qIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODE1LDYgKzE4MTksOCBAQAogCQkxNDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVh
cCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzI0RDMx
RTAxNjFDRDY5NTAwMkFBNERCIC8qIEhlYXBTdGF0aXN0aWNzLmNwcCAqLywKKwkJCQlDMjREMzFF
MTE2MUNENjk1MDAyQUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCAqLywKIAkJCQlDMjI1NDk0MjE1
RjdEQkFBMDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwICovLAogCQkJCUMyMTEyMkRFMTVERDlB
QjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuY3BwICovLAogCQkJCUMyMTEyMkRGMTVE
RDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCAqLywKQEAgLTI1NzIsNiArMjU3
OCw3IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZFRUMyIC8qIEFSTXY3QXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5MTZDMjE0REEwMTRFMDBDQkFDODYgLyog
TWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMjREMzFFMzE2MUNENjk1MDAy
QUE0REIgLyogSGVhcFN0YXRpc3RpY3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQTdGNjg4MTYw
NDMyRDQwMEY3NkI5OCAvKiBKU0Rlc3RydWN0aWJsZU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRkUyMENFOUUxNUYwNEE5NTAwREYzNDMwIC8qIExMSW50Q0xvb3AuaCBpbiBIZWFkZXJzICov
LAogCQkJCUMyMTEyMkUyMTVERDlBQjMwMDc5MEUzQSAvKiBHQ1RocmVhZFNoYXJlZERhdGEuaCBp
biBIZWFkZXJzICovLApAQCAtMzU2Niw2ICszNTczLDcgQEAKIAkJCQlDMjI1NDk0MzE1RjdEQkFB
MDA2NUU4OTggLyogU2xvdFZpc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODYyNTUzRDEx
NjEzNkRBOTAwOUYxN0QwIC8qIEpTUHJveHkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY1NTQx
QjExNjEzQzFGQjAwQ0UzRTI1IC8qIFNwZWNpYWxQb2ludGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUMyNEQzMUUyMTYxQ0Q2OTUwMDJBQTREQiAvKiBIZWFwU3RhdGlzdGljcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAx
MzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAj
aW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9y
LmgiCisjaW5jbHVkZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbmNyZW1lbnRhbFN3
ZWVwZXIuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsRGF0
YS5oIgpAQCAtMjM1LDc0ICsyMzYsNiBAQCBpbmxpbmUgUGFzc093blB0cjxUeXBlQ291bnRTZXQ+
IFJlY29yZFR5CiAgICAgcmV0dXJuIG1fdHlwZUNvdW50U2V0LnJlbGVhc2UoKTsKIH0KIAotY2xh
c3MgU3RvcmFnZVN0YXRpc3RpY3MgOiBwdWJsaWMgTWFya2VkQmxvY2s6OlZvaWRGdW5jdG9yIHsK
LXB1YmxpYzoKLSAgICBTdG9yYWdlU3RhdGlzdGljcygpOwotCi0gICAgdm9pZCBvcGVyYXRvcigp
KEpTQ2VsbCopOwotCi0gICAgc2l6ZV90IG9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291bnQo
KTsKLSAgICBzaXplX3Qgb2JqZWN0Q291bnQoKTsKLQotICAgIHNpemVfdCBzdG9yYWdlU2l6ZSgp
OwotICAgIHNpemVfdCBzdG9yYWdlQ2FwYWNpdHkoKTsKLQotcHJpdmF0ZToKLSAgICBzaXplX3Qg
bV9vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50OwotICAgIHNpemVfdCBtX29iamVjdENv
dW50OwotICAgIHNpemVfdCBtX3N0b3JhZ2VTaXplOwotICAgIHNpemVfdCBtX3N0b3JhZ2VDYXBh
Y2l0eTsKLX07Ci0KLWlubGluZSBTdG9yYWdlU3RhdGlzdGljczo6U3RvcmFnZVN0YXRpc3RpY3Mo
KQotICAgIDogbV9vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50KDApCi0gICAgLCBtX29i
amVjdENvdW50KDApCi0gICAgLCBtX3N0b3JhZ2VTaXplKDApCi0gICAgLCBtX3N0b3JhZ2VDYXBh
Y2l0eSgwKQotewotfQotCi1pbmxpbmUgdm9pZCBTdG9yYWdlU3RhdGlzdGljczo6b3BlcmF0b3Io
KShKU0NlbGwqIGNlbGwpCi17Ci0gICAgaWYgKCFjZWxsLT5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBKU09iamVjdCogb2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7
Ci0gICAgaWYgKGhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9iamVjdC0+c3RydWN0dXJlKCktPmluZGV4
aW5nVHlwZSgpKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG9iamVjdC0+c3RydWN0dXJl
KCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgICsr
bV9vYmplY3RDb3VudDsKLSAgICBpZiAoIW9iamVjdC0+aGFzSW5saW5lU3RvcmFnZSgpKQotICAg
ICAgICArK21fb2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudDsKLSAgICBtX3N0b3JhZ2VT
aXplICs9IG9iamVjdC0+c3RydWN0dXJlKCktPnRvdGFsU3RvcmFnZVNpemUoKSAqIHNpemVvZihX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KTsKLSAgICBtX3N0b3JhZ2VDYXBhY2l0eSArPSBvYmpl
Y3QtPnN0cnVjdHVyZSgpLT50b3RhbFN0b3JhZ2VDYXBhY2l0eSgpICogc2l6ZW9mKFdyaXRlQmFy
cmllckJhc2U8VW5rbm93bj4pOyAKLX0KLQotaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGlj
czo6b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpCi17Ci0gICAgcmV0dXJuIG1fb2Jq
ZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudDsKLX0KLQotaW5saW5lIHNpemVfdCBTdG9yYWdl
U3RhdGlzdGljczo6b2JqZWN0Q291bnQoKQotewotICAgIHJldHVybiBtX29iamVjdENvdW50Owot
fQotCi0KLWlubGluZSBzaXplX3QgU3RvcmFnZVN0YXRpc3RpY3M6OnN0b3JhZ2VTaXplKCkKLXsK
LSAgICByZXR1cm4gbV9zdG9yYWdlU2l6ZTsKLX0KLQotCi1pbmxpbmUgc2l6ZV90IFN0b3JhZ2VT
dGF0aXN0aWNzOjpzdG9yYWdlQ2FwYWNpdHkoKQotewotICAgIHJldHVybiBtX3N0b3JhZ2VDYXBh
Y2l0eTsKLX0KLQogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCiAKIEhlYXA6OkhlYXAoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBIZWFwVHlwZSBoZWFwVHlwZSkKQEAgLTgzMSw2ICs3NjQsOSBA
QCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgfQogICAgIAog
ICAgIHNpemVfdCBjdXJyZW50SGVhcFNpemUgPSBzaXplKCk7CisgICAgaWYgKE9wdGlvbnM6Omdj
TWF4SGVhcFNpemUoKSAmJiBjdXJyZW50SGVhcFNpemUgPiBPcHRpb25zOjpnY01heEhlYXBTaXpl
KCkpCisgICAgICAgIEhlYXBTdGF0aXN0aWNzOjpleGl0V2l0aEZhaWx1cmUoKTsKKwogICAgIGlm
IChmdWxsR0MpIHsKICAgICAgICAgbV9zaXplQWZ0ZXJMYXN0Q29sbGVjdCA9IGN1cnJlbnRIZWFw
U2l6ZTsKIApAQCAtODQ0LDYgKzc4MCw4IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2ds
ZSBzd2VlcFRvZ2cKICAgICBkb3VibGUgbGFzdEdDRW5kVGltZSA9IFdURjo6Y3VycmVudFRpbWUo
KTsKICAgICBtX2xhc3RHQ0xlbmd0aCA9IGxhc3RHQ0VuZFRpbWUgLSBsYXN0R0NTdGFydFRpbWU7
CiAKKyAgICBpZiAoT3B0aW9uczo6cmVjb3JkR0NQYXVzZVRpbWVzKCkpCisgICAgICAgIEhlYXBT
dGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShsYXN0R0NTdGFydFRpbWUsIGxhc3RHQ0VuZFRp
bWUpOwogICAgIGlmIChtX29wZXJhdGlvbkluUHJvZ3Jlc3MgIT0gQ29sbGVjdGlvbikKICAgICAg
ICAgQ1JBU0goKTsKICAgICBtX29wZXJhdGlvbkluUHJvZ3Jlc3MgPSBOb09wZXJhdGlvbjsKQEAg
LTg1NSwzMSArNzkzLDggQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9n
ZwogICAgIGlmIChPcHRpb25zOjpvYmplY3RzQXJlSW1tb3J0YWwoKSkKICAgICAgICAgbWFya0Rl
YWRPYmplY3RzKCk7CiAKLSAgICBpZiAoT3B0aW9uczo6c2hvd0hlYXBTdGF0aXN0aWNzKCkpCi0g
ICAgICAgIHNob3dTdGF0aXN0aWNzKCk7Ci19Ci0KLXZvaWQgSGVhcDo6c2hvd1N0YXRpc3RpY3Mo
KQotewotICAgIGRhdGFMb2coIlxuPT09IEhlYXAgU3RhdGlzdGljczogPT09XG4iKTsKLSAgICBk
YXRhTG9nKCJzaXplOiAlbGRrQlxuIiwgc3RhdGljX2Nhc3Q8bG9uZz4obV9zaXplQWZ0ZXJMYXN0
Q29sbGVjdCAvIEtCKSk7Ci0gICAgZGF0YUxvZygiY2FwYWNpdHk6ICVsZGtCXG4iLCBzdGF0aWNf
Y2FzdDxsb25nPihjYXBhY2l0eSgpIC8gS0IpKTsKLSAgICBkYXRhTG9nKCJwYXVzZSB0aW1lOiAl
bGZtc1xuXG4iLCBtX2xhc3RHQ0xlbmd0aCk7Ci0KLSAgICBTdG9yYWdlU3RhdGlzdGljcyBzdG9y
YWdlU3RhdGlzdGljczsKLSAgICBtX29iamVjdFNwYWNlLmZvckVhY2hMaXZlQ2VsbChzdG9yYWdl
U3RhdGlzdGljcyk7Ci0gICAgZGF0YUxvZygid2FzdGVkIC5wcm9wZXJ0eSBzdG9yYWdlOiAlbGRr
QiAoJWxkJSUpXG4iLAotICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKLSAgICAgICAgICAgIChz
dG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0aXN0aWNzLnN0
b3JhZ2VTaXplKCkpIC8gS0IpLAotICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKLSAgICAgICAg
ICAgIChzdG9yYWdlU3RhdGlzdGljcy5zdG9yYWdlQ2FwYWNpdHkoKSAtIHN0b3JhZ2VTdGF0aXN0
aWNzLnN0b3JhZ2VTaXplKCkpICogMTAwCi0gICAgICAgICAgICAgICAgLyBzdG9yYWdlU3RhdGlz
dGljcy5zdG9yYWdlQ2FwYWNpdHkoKSkpOwotICAgIGRhdGFMb2coIm9iamVjdHMgd2l0aCBvdXQt
b2YtbGluZSAucHJvcGVydHkgc3RvcmFnZTogJWxkICglbGQlJSlcbiIsCi0gICAgICAgIHN0YXRp
Y19jYXN0PGxvbmc+KAotICAgICAgICAgICAgc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0V2l0aE91
dE9mTGluZVN0b3JhZ2VDb3VudCgpKSwKLSAgICAgICAgc3RhdGljX2Nhc3Q8bG9uZz4oCi0gICAg
ICAgICAgICBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNvdW50
KCkgKiAxMDAKLSAgICAgICAgICAgICAgICAvIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdENvdW50
KCkpKTsKKyAgICBpZiAoT3B0aW9uczo6c2hvd09iamVjdFN0YXRpc3RpY3MoKSkKKyAgICAgICAg
SGVhcFN0YXRpc3RpY3M6OnNob3dPYmplY3RTdGF0aXN0aWNzKHRoaXMpOwogfQogCiB2b2lkIEhl
YXA6Om1hcmtEZWFkT2JqZWN0cygpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShy
ZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgog
I2luY2x1ZGUgIk1hcmtlZEJsb2NrU2V0LmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNp
bmNsdWRlICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKICNpbmNsdWRlICJX
ZWFrSGFuZGxlT3duZXIuaCIKICNpbmNsdWRlICJXcml0ZUJhcnJpZXJTdXBwb3J0LmgiCkBAIC0x
ODIsNiArMTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIENvcGllZFNwYWNlOwogICAgICAgICBmcmll
bmQgY2xhc3MgU2xvdFZpc2l0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBIZWFwU3RhdGlzdGlj
czsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2Vs
bChIZWFwJik7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxv
Y2F0ZUNlbGwoSGVhcCYsIHNpemVfdCk7CiAKQEAgLTI1OCw2ICsyNjAsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGlubGluZSBib29sIEhlYXA6OnNob3VsZENvbGxlY3QoKQogICAgIHsKKyAg
ICAgICAgaWYgKE9wdGlvbnM6OmdjTWF4SGVhcFNpemUoKSkKKyAgICAgICAgICAgIHJldHVybiBt
X2J5dGVzQWxsb2NhdGVkID4gT3B0aW9uczo6Z2NNYXhIZWFwU2l6ZSgpICYmIG1faXNTYWZlVG9D
b2xsZWN0ICYmIG1fb3BlcmF0aW9uSW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbjsKICNpZiBFTkFC
TEUoR0dDKQogICAgICAgICByZXR1cm4gbV9vYmplY3RTcGFjZS5udXJzZXJ5V2F0ZXJNYXJrKCkg
Pj0gbV9taW5CeXRlc1BlckN5Y2xlICYmIG1faXNTYWZlVG9Db2xsZWN0ICYmIG1fb3BlcmF0aW9u
SW5Qcm9ncmVzcyA9PSBOb09wZXJhdGlvbjsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU3RhdGlzdGljcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJIZWFwU3RhdGlzdGljcy5oIgorCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiT3B0aW9ucy5oIgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmIE9T
KFVOSVgpCisjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9E
ZXF1ZS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworZG91YmxlIEhlYXBTdGF0aXN0aWNzOjpzX3N0
YXJ0VGltZSA9IDAuMDsKK2RvdWJsZSBIZWFwU3RhdGlzdGljczo6c19lbmRUaW1lID0gMC4wOwor
RGVxdWU8ZG91YmxlPiogSGVhcFN0YXRpc3RpY3M6OnNfcGF1c2VUaW1lU3RhcnRzID0gMDsKK0Rl
cXVlPGRvdWJsZT4qIEhlYXBTdGF0aXN0aWNzOjpzX3BhdXNlVGltZUVuZHMgPSAwOworCisjaWYg
T1MoVU5JWCkgCisKK3ZvaWQgSGVhcFN0YXRpc3RpY3M6OmluaXRpYWxpemUoKQoreworICAgIEFT
U0VSVChPcHRpb25zOjpyZWNvcmRHQ1BhdXNlVGltZXMoKSk7CisgICAgc19zdGFydFRpbWUgPSBX
VEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIHNfcGF1c2VUaW1lU3RhcnRz
ID0gbmV3IERlcXVlPGRvdWJsZT4oKTsKKyAgICBzX3BhdXNlVGltZUVuZHMgPSBuZXcgRGVxdWU8
ZG91YmxlPigpOworfQorCit2b2lkIEhlYXBTdGF0aXN0aWNzOjpyZWNvcmRHQ1BhdXNlVGltZShk
b3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCit7CisgICAgQVNTRVJUKE9wdGlvbnM6OnJlY29yZEdD
UGF1c2VUaW1lcygpKTsKKyAgICBBU1NFUlQoc19wYXVzZVRpbWVTdGFydHMpOworICAgIEFTU0VS
VChzX3BhdXNlVGltZUVuZHMpOworICAgIHNfcGF1c2VUaW1lU3RhcnRzLT5hcHBlbmQoc3RhcnQp
OworICAgIHNfcGF1c2VUaW1lRW5kcy0+YXBwZW5kKGVuZCk7Cit9CisKK3ZvaWQgSGVhcFN0YXRp
c3RpY3M6OmxvZ1N0YXRpc3RpY3MoKQoreworICAgIHN0cnVjdCBydXNhZ2UgdXNhZ2U7CisgICAg
Z2V0cnVzYWdlKFJVU0FHRV9TRUxGLCAmdXNhZ2UpOworI2lmIFVTRShDRikgfHwgT1MoVU5JWCkK
KyAgICBjaGFyKiB2bU5hbWUgPSBnZXRlbnYoIkpTVk1OYW1lIik7CisgICAgY2hhciogc3VpdGVO
YW1lID0gZ2V0ZW52KCJKU1N1aXRlTmFtZSIpOworICAgIGNoYXIqIGJlbmNobWFya05hbWUgPSBn
ZXRlbnYoIkpTQmVuY2htYXJrTmFtZSIpOworI2Vsc2UKKyNlcnJvciAiVGhlIEhlYXBTdGF0aXN0
aWNzIG1vZHVsZSBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgorI2VuZGlmCisg
ICAgaWYgKCF2bU5hbWUgfHwgIXN1aXRlTmFtZSB8fCAhYmVuY2htYXJrTmFtZSkKKyAgICAgICAg
ZGF0YUxvZygiSGVhcFN0YXRpc3RpY3M6IHtcIm1heF9yc3NcIjogJWxkIiwgdXNhZ2UucnVfbWF4
cnNzKTsKKyAgICBlbHNlCisgICAgICAgIGRhdGFMb2coIkhlYXBTdGF0aXN0aWNzOiB7XCJtYXhf
cnNzXCI6ICVsZCwgXCJ2bV9uYW1lXCI6IFwiJXNcIiwgXCJzdWl0ZV9uYW1lXCI6IFwiJXNcIiwg
XCJiZW5jaG1hcmtfbmFtZVwiOiBcIiVzXCIiLCAKKyAgICAgICAgICAgIHVzYWdlLnJ1X21heHJz
cywgdm1OYW1lLCBzdWl0ZU5hbWUsIGJlbmNobWFya05hbWUpOyAKKworICAgIGlmIChPcHRpb25z
OjpyZWNvcmRHQ1BhdXNlVGltZXMoKSkgeworICAgICAgICBkYXRhTG9nKCIsIFwicGF1c2VfdGlt
ZXNcIjogWyIpOworICAgICAgICBEZXF1ZTxkb3VibGU+OjppdGVyYXRvciBzdGFydEl0ID0gc19w
YXVzZVRpbWVTdGFydHMtPmJlZ2luKCk7CisgICAgICAgIERlcXVlPGRvdWJsZT46Oml0ZXJhdG9y
IGVuZEl0ID0gc19wYXVzZVRpbWVFbmRzLT5iZWdpbigpOworICAgICAgICBpZiAoc3RhcnRJdCAh
PSBzX3BhdXNlVGltZVN0YXJ0cy0+ZW5kKCkgJiYgZW5kSXQgIT0gc19wYXVzZVRpbWVFbmRzLT5l
bmQoKSkgeworICAgICAgICAgICAgZGF0YUxvZygiWyVmLCAlZl0iLCAqc3RhcnRJdCwgKmVuZEl0
KTsKKyAgICAgICAgICAgICsrc3RhcnRJdDsKKyAgICAgICAgICAgICsrZW5kSXQ7CisgICAgICAg
IH0KKyAgICAgICAgd2hpbGUgKHN0YXJ0SXQgIT0gc19wYXVzZVRpbWVTdGFydHMtPmVuZCgpICYm
IGVuZEl0ICE9IHNfcGF1c2VUaW1lRW5kcy0+ZW5kKCkpIHsKKyAgICAgICAgICAgIGRhdGFMb2co
IiwgWyVmLCAlZl0iLCAqc3RhcnRJdCwgKmVuZEl0KTsKKyAgICAgICAgICAgICsrc3RhcnRJdDsK
KyAgICAgICAgICAgICsrZW5kSXQ7CisgICAgICAgIH0KKyAgICAgICAgZGF0YUxvZygiXSwgXCJz
dGFydF90aW1lXCI6ICVmLCBcImVuZF90aW1lXCI6ICVmIiwgc19zdGFydFRpbWUsIHNfZW5kVGlt
ZSk7CisgICAgfQorICAgIGRhdGFMb2coIn1cbiIpOworfQorCit2b2lkIEhlYXBTdGF0aXN0aWNz
OjpleGl0V2l0aEZhaWx1cmUoKQoreworICAgIEFTU0VSVChPcHRpb25zOjpsb2dIZWFwU3RhdGlz
dGljc0F0RXhpdCgpKTsKKyAgICBzX2VuZFRpbWUgPSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOworICAgIGxvZ1N0YXRpc3RpY3MoKTsKKyAgICBleGl0KC0xKTsKK30KKwordm9p
ZCBIZWFwU3RhdGlzdGljczo6cmVwb3J0U3VjY2VzcygpCit7CisgICAgQVNTRVJUKE9wdGlvbnM6
OmxvZ0hlYXBTdGF0aXN0aWNzQXRFeGl0KCkpOworICAgIHNfZW5kVGltZSA9IFdURjo6bW9ub3Rv
bmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbG9nU3RhdGlzdGljcygpOworfQorCisjZWxz
ZQorCit2b2lkIEhlYXBTdGF0aXN0aWNzOjppbml0aWFsaXplKCkKK3sKK30KKwordm9pZCBIZWFw
U3RhdGlzdGljczo6cmVjb3JkR0NQYXVzZVRpbWUoZG91YmxlLCBkb3VibGUpCit7Cit9CisKK3Zv
aWQgSGVhcFN0YXRpc3RpY3M6OmxvZ1N0YXRpc3RpY3MoKQoreworfQorCit2b2lkIEhlYXBTdGF0
aXN0aWNzOjpleGl0V2l0aEZhaWx1cmUoKQoreworfQorCit2b2lkIEhlYXBTdGF0aXN0aWNzOjpy
ZXBvcnRTdWNjZXNzKCkKK3sKK30KKworI2VuZGlmIC8vIE9TKFVOSVgpCisKK3NpemVfdCBIZWFw
U3RhdGlzdGljczo6cGFyc2VNZW1vcnlBbW91bnQoY2hhciogcykKK3sKKyAgICBzaXplX3QgbXVs
dGlwbGllciA9IDE7CisgICAgY2hhciogYWZ0ZXJTOworICAgIHNpemVfdCB2YWx1ZSA9IHN0cnRv
bChzLCAmYWZ0ZXJTLCAxMCk7CisgICAgY2hhciBuZXh0ID0gYWZ0ZXJTWzBdOworICAgIHN3aXRj
aCAobmV4dCkgeworICAgIGNhc2UgJ0snOgorICAgICAgICBtdWx0aXBsaWVyID0gS0I7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgJ00nOgorICAgICAgICBtdWx0aXBsaWVyID0gTUI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgJ0cnOgorICAgICAgICBtdWx0aXBsaWVyID0gR0I7CisgICAg
ICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1
cm4gdmFsdWUgKiBtdWx0aXBsaWVyOworfQorCitjbGFzcyBTdG9yYWdlU3RhdGlzdGljcyA6IHB1
YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgeworcHVibGljOgorICAgIFN0b3JhZ2VTdGF0
aXN0aWNzKCk7CisKKyAgICB2b2lkIG9wZXJhdG9yKCkoSlNDZWxsKik7CisKKyAgICBzaXplX3Qg
b2JqZWN0V2l0aE91dE9mTGluZVN0b3JhZ2VDb3VudCgpOworICAgIHNpemVfdCBvYmplY3RDb3Vu
dCgpOworCisgICAgc2l6ZV90IHN0b3JhZ2VTaXplKCk7CisgICAgc2l6ZV90IHN0b3JhZ2VDYXBh
Y2l0eSgpOworCitwcml2YXRlOgorICAgIHNpemVfdCBtX29iamVjdFdpdGhPdXRPZkxpbmVTdG9y
YWdlQ291bnQ7CisgICAgc2l6ZV90IG1fb2JqZWN0Q291bnQ7CisgICAgc2l6ZV90IG1fc3RvcmFn
ZVNpemU7CisgICAgc2l6ZV90IG1fc3RvcmFnZUNhcGFjaXR5OworfTsKKworaW5saW5lIFN0b3Jh
Z2VTdGF0aXN0aWNzOjpTdG9yYWdlU3RhdGlzdGljcygpCisgICAgOiBtX29iamVjdFdpdGhPdXRP
ZkxpbmVTdG9yYWdlQ291bnQoMCkKKyAgICAsIG1fb2JqZWN0Q291bnQoMCkKKyAgICAsIG1fc3Rv
cmFnZVNpemUoMCkKKyAgICAsIG1fc3RvcmFnZUNhcGFjaXR5KDApCit7Cit9CisKK2lubGluZSB2
b2lkIFN0b3JhZ2VTdGF0aXN0aWNzOjpvcGVyYXRvcigpKEpTQ2VsbCogY2VsbCkKK3sKKyAgICBp
ZiAoIWNlbGwtPmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBqc0Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKKyAgICBpZiAoaGFzSW5kZXhlZFByb3Bl
cnRpZXMob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAob2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgKyttX29iamVjdENvdW50OworICAgIGlmICgh
b2JqZWN0LT5oYXNJbmxpbmVTdG9yYWdlKCkpCisgICAgICAgICsrbV9vYmplY3RXaXRoT3V0T2ZM
aW5lU3RvcmFnZUNvdW50OworICAgIG1fc3RvcmFnZVNpemUgKz0gb2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+dG90YWxTdG9yYWdlU2l6ZSgpICogc2l6ZW9mKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4p
OworICAgIG1fc3RvcmFnZUNhcGFjaXR5ICs9IG9iamVjdC0+c3RydWN0dXJlKCktPnRvdGFsU3Rv
cmFnZUNhcGFjaXR5KCkgKiBzaXplb2YoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPik7IAorfQor
CitpbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RXaXRoT3V0T2ZMaW5lU3Rv
cmFnZUNvdW50KCkKK3sKKyAgICByZXR1cm4gbV9vYmplY3RXaXRoT3V0T2ZMaW5lU3RvcmFnZUNv
dW50OworfQorCitpbmxpbmUgc2l6ZV90IFN0b3JhZ2VTdGF0aXN0aWNzOjpvYmplY3RDb3VudCgp
Cit7CisgICAgcmV0dXJuIG1fb2JqZWN0Q291bnQ7Cit9CisKK2lubGluZSBzaXplX3QgU3RvcmFn
ZVN0YXRpc3RpY3M6OnN0b3JhZ2VTaXplKCkKK3sKKyAgICByZXR1cm4gbV9zdG9yYWdlU2l6ZTsK
K30KKworaW5saW5lIHNpemVfdCBTdG9yYWdlU3RhdGlzdGljczo6c3RvcmFnZUNhcGFjaXR5KCkK
K3sKKyAgICByZXR1cm4gbV9zdG9yYWdlQ2FwYWNpdHk7Cit9CisKK3ZvaWQgSGVhcFN0YXRpc3Rp
Y3M6OnNob3dPYmplY3RTdGF0aXN0aWNzKEhlYXAqIGhlYXApCit7CisgICAgZGF0YUxvZygiXG49
PT0gSGVhcCBTdGF0aXN0aWNzOiA9PT1cbiIpOworICAgIGRhdGFMb2coInNpemU6ICVsZGtCXG4i
LCBzdGF0aWNfY2FzdDxsb25nPihoZWFwLT5tX3NpemVBZnRlckxhc3RDb2xsZWN0IC8gS0IpKTsK
KyAgICBkYXRhTG9nKCJjYXBhY2l0eTogJWxka0JcbiIsIHN0YXRpY19jYXN0PGxvbmc+KGhlYXAt
PmNhcGFjaXR5KCkgLyBLQikpOworICAgIGRhdGFMb2coInBhdXNlIHRpbWU6ICVsZm1zXG5cbiIs
IGhlYXAtPm1fbGFzdEdDTGVuZ3RoKTsKKworICAgIFN0b3JhZ2VTdGF0aXN0aWNzIHN0b3JhZ2VT
dGF0aXN0aWNzOworICAgIGhlYXAtPm1fb2JqZWN0U3BhY2UuZm9yRWFjaExpdmVDZWxsKHN0b3Jh
Z2VTdGF0aXN0aWNzKTsKKyAgICBkYXRhTG9nKCJ3YXN0ZWQgLnByb3BlcnR5IHN0b3JhZ2U6ICVs
ZGtCICglbGQlJSlcbiIsCisgICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAorICAgICAgICAgICAg
KHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VDYXBhY2l0eSgpIC0gc3RvcmFnZVN0YXRpc3RpY3Mu
c3RvcmFnZVNpemUoKSkgLyBLQiksCisgICAgICAgIHN0YXRpY19jYXN0PGxvbmc+KAorICAgICAg
ICAgICAgKHN0b3JhZ2VTdGF0aXN0aWNzLnN0b3JhZ2VDYXBhY2l0eSgpIC0gc3RvcmFnZVN0YXRp
c3RpY3Muc3RvcmFnZVNpemUoKSkgKiAxMDAKKyAgICAgICAgICAgICAgICAvIHN0b3JhZ2VTdGF0
aXN0aWNzLnN0b3JhZ2VDYXBhY2l0eSgpKSk7CisgICAgZGF0YUxvZygib2JqZWN0cyB3aXRoIG91
dC1vZi1saW5lIC5wcm9wZXJ0eSBzdG9yYWdlOiAlbGQgKCVsZCUlKVxuIiwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8bG9uZz4oCisgICAgICAgICAgICBzdG9yYWdlU3RhdGlzdGljcy5vYmplY3RXaXRo
T3V0T2ZMaW5lU3RvcmFnZUNvdW50KCkpLAorICAgICAgICBzdGF0aWNfY2FzdDxsb25nPigKKyAg
ICAgICAgICAgIHN0b3JhZ2VTdGF0aXN0aWNzLm9iamVjdFdpdGhPdXRPZkxpbmVTdG9yYWdlQ291
bnQoKSAqIDEwMAorICAgICAgICAgICAgICAgIC8gc3RvcmFnZVN0YXRpc3RpY3Mub2JqZWN0Q291
bnQoKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFN0YXRpc3RpY3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXBTdGF0aXN0aWNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhlYXBTdGF0aXN0aWNzX2gKKyNkZWZpbmUgSGVh
cFN0YXRpc3RpY3NfaAorCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBIZWFwOworCitjbGFzcyBIZWFwU3RhdGlzdGljcyB7CitwdWJsaWM6CisgICAg
Tk9fUkVUVVJOIHN0YXRpYyB2b2lkIGV4aXRXaXRoRmFpbHVyZSgpOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyB2b2lkIHJlcG9ydFN1Y2Nlc3MoKTsKKworICAgIHN0YXRpYyB2b2lkIGlu
aXRpYWxpemUoKTsKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRHQ1BhdXNlVGltZShkb3VibGUgc3Rh
cnQsIGRvdWJsZSBlbmQpOworICAgIHN0YXRpYyBzaXplX3QgcGFyc2VNZW1vcnlBbW91bnQoY2hh
ciopOworCisgICAgc3RhdGljIHZvaWQgc2hvd09iamVjdFN0YXRpc3RpY3MoSGVhcCopOworCisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBLQiA9IDEwMjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBNQiA9IDEwMjQgKiBLQjsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IEdCID0gMTAyNCAqIE1C
OworCitwcml2YXRlOgorICAgIHN0YXRpYyB2b2lkIGxvZ1N0YXRpc3RpY3MoKTsKKyAgICBzdGF0
aWMgRGVxdWU8ZG91YmxlPiogc19wYXVzZVRpbWVTdGFydHM7CisgICAgc3RhdGljIERlcXVlPGRv
dWJsZT4qIHNfcGF1c2VUaW1lRW5kczsKKyAgICBzdGF0aWMgZG91YmxlIHNfc3RhcnRUaW1lOwor
ICAgIHN0YXRpYyBkb3VibGUgc19lbmRUaW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW5pdGlhbGl6ZVRocmVhZGluZy5jcHAJKHJldmlzaW9uIDEzMDQwNykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAj
aW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkhlYXBTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAi
T3B0aW9ucy5oIgogI2luY2x1ZGUgIklkZW50aWZpZXIuaCIKICNpbmNsdWRlICJKU0RhdGVNYXRo
LmgiCkBAIC01Niw2ICs1Nyw4IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVUaHJlYWRpbmdPbmNl
KCkKICAgICBXVEY6OmluaXRpYWxpemVUaHJlYWRpbmcoKTsKICAgICBHbG9iYWxKU0xvY2s6Omlu
aXRpYWxpemUoKTsKICAgICBPcHRpb25zOjppbml0aWFsaXplKCk7CisgICAgaWYgKE9wdGlvbnM6
OnJlY29yZEdDUGF1c2VUaW1lcygpKQorICAgICAgICBIZWFwU3RhdGlzdGljczo6aW5pdGlhbGl6
ZSgpOwogI2lmIEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAgICBXcml0ZUJhcnJp
ZXJDb3VudGVyczo6aW5pdGlhbGl6ZSgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTMwNDA3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJPcHRpb25zLmgiCiAKKyNp
bmNsdWRlICJIZWFwU3RhdGlzdGljcy5oIgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRl
IDxsaW1pdHM+CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTEzMCw2ICsxMzEsMTAgQEAgdm9pZCBP
cHRpb25zOjppbml0aWFsaXplKCkKICNpZiBVU0UoQ0YpIHx8IE9TKFVOSVgpCiAgICAgb2JqZWN0
c0FyZUltbW9ydGFsKCkgPSAhIWdldGVudigiSlNJbW1vcnRhbFpvbWJpZUVuYWJsZWQiKTsKICAg
ICB1c2Vab21iaWVNb2RlKCkgPSAhIWdldGVudigiSlNJbW1vcnRhbFpvbWJpZUVuYWJsZWQiKSB8
fCAhIWdldGVudigiSlNab21iaWVFbmFibGVkIik7CisKKyAgICBnY01heEhlYXBTaXplKCkgPSBn
ZXRlbnYoIkdDTWF4SGVhcFNpemUiKSA/IEhlYXBTdGF0aXN0aWNzOjpwYXJzZU1lbW9yeUFtb3Vu
dChnZXRlbnYoIkdDTWF4SGVhcFNpemUiKSkgOiAwOworICAgIHJlY29yZEdDUGF1c2VUaW1lcygp
ID0gISFnZXRlbnYoIkpTUmVjb3JkR0NQYXVzZVRpbWVzIik7CisgICAgbG9nSGVhcFN0YXRpc3Rp
Y3NBdEV4aXQoKSA9IGdjTWF4SGVhcFNpemUoKSB8fCByZWNvcmRHQ1BhdXNlVGltZXMoKTsKICNl
bmRpZgogCiAgICAgLy8gQWxsb3cgZW52aXJvbm1lbnQgdmFycyB0byBvdmVycmlkZSBvcHRpb25z
IGlmIGFwcGxpY2FibGUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCShyZXZpc2lvbiAxMzA0MDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw4ICsxMjIsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgXAogICAgIHYoYm9vbCwgdXNlWm9tYmllTW9kZSwgZmFsc2UpIFwKICAgICB2KGJv
b2wsIG9iamVjdHNBcmVJbW1vcnRhbCwgZmFsc2UpIFwKLSAgICB2KGJvb2wsIHNob3dIZWFwU3Rh
dGlzdGljcywgZmFsc2UpCi0KKyAgICB2KGJvb2wsIHNob3dPYmplY3RTdGF0aXN0aWNzLCBmYWxz
ZSkgXAorICAgIFwKKyAgICB2KHVuc2lnbmVkLCBnY01heEhlYXBTaXplLCAwKSBcCisgICAgdihi
b29sLCByZWNvcmRHQ1BhdXNlVGltZXMsIGZhbHNlKSBcCisgICAgdihib29sLCBsb2dIZWFwU3Rh
dGlzdGljc0F0RXhpdCwgZmFsc2UpIAogCiBjbGFzcyBPcHRpb25zIHsKIHB1YmxpYzoKQEAgLTE2
MSw3ICsxNjQsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sVHlwZSwKICAgICAgICAgdW5zaWdu
ZWRUeXBlLAogICAgICAgICBkb3VibGVUeXBlLAotICAgICAgICBpbnQzMlR5cGUKKyAgICAgICAg
aW50MzJUeXBlLAogICAgIH07CiAKICAgICAvLyBGb3Igc3RvcmluZyBmb3IgYW4gb3B0aW9uIHZh
bHVlOgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTMwNDEwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTItMTAtMDQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgYSB3YXkgdG8gZ2F0aGVyIGFu
ZCBsb2cgSGVhcCBtZW1vcnkgdXNlIGFuZCBwYXVzZSB0aW1lcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg0MzEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVu
ZGVyVHJlZS5tbToKKyAgICAgICAgKG1haW4pOiBBZGRlZCBhIGNoZWNrIGFzIHRvIHdoZXRoZXIg
d2Ugc2hvdWxkIGR1bXAgb3VyIEpTQyBIZWFwIHN0YXRpc3RpY3Mgb24gZXhpdC4KKwogMjAxMi0x
MC0wNCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdW1dLMl0gQWRkIHNldHRpbmcgdG8gYWxsb3cgZmlsZSBhY2Nlc3MgZnJvbSBm
aWxlOi8vIFVSTHMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJl
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0JKHJldmlzaW9uIDEzMDQwNykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1w
UmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsOCBAQAogI2ltcG9ydCAi
V29ya1F1ZXVlSXRlbS5oIgogI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPgogI2ltcG9ydCA8Q29y
ZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0hl
YXBTdGF0aXN0aWNzLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9PcHRpb25zLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0ZvdW5kYXRpb25FeHRyYXMuaD4KICNpbXBvcnQgPFdlYktpdC9ET01FbGVt
ZW50Lmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgpAQCAtOTE3LDcgKzkxOSw5
IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCiAgICAgW0R1bXBSZW5k
ZXJUcmVlQXBwbGljYXRpb24gc2hhcmVkQXBwbGljYXRpb25dOyAvLyBGb3JjZSBBcHBLaXQgdG8g
aW5pdCBpdHNlbGYKICAgICBkdW1wUmVuZGVyVHJlZShhcmdjLCBhcmd2KTsKICAgICBbV2ViQ29y
ZVN0YXRpc3RpY3MgZ2FyYmFnZUNvbGxlY3RKYXZhU2NyaXB0T2JqZWN0c107Ci0gICAgW1dlYkNv
cmVTdGF0aXN0aWNzIGVtcHR5Q2FjaGVdOyAvLyBPdGhlcndpc2UgU1ZHSW1hZ2VzIHRyaWdnZXIg
ZmFsc2UgcG9zaXRpdmVzIGZvciBGcmFtZS9Ob2RlIGNvdW50cyAgICAKKyAgICBbV2ViQ29yZVN0
YXRpc3RpY3MgZW1wdHlDYWNoZV07IC8vIE90aGVyd2lzZSBTVkdJbWFnZXMgdHJpZ2dlciBmYWxz
ZSBwb3NpdGl2ZXMgZm9yIEZyYW1lL05vZGUgY291bnRzCisgICAgaWYgKEpTQzo6T3B0aW9uczo6
bG9nSGVhcFN0YXRpc3RpY3NBdEV4aXQoKSkKKyAgICAgICAgSlNDOjpIZWFwU3RhdGlzdGljczo6
cmVwb3J0U3VjY2VzcygpOwogICAgIFtwb29sIHJlbGVhc2VdOwogICAgIHJldHVybiAwOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>