<?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>121883</bug_id>
          
          <creation_ts>2013-09-24 17:21:31 -0700</creation_ts>
          <short_desc>[Windows] Refactor RuntimeEnabledFeatures as a Singleton to prevent crashes caused by cross-DLL boundary access</short_desc>
          <delta_ts>2013-10-29 08:38:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>andersca</cc>
    
    <cc>betravis</cc>
    
    <cc>bfulgham</cc>
    
    <cc>buildbot</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philn</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>932816</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-24 17:21:31 -0700</bug_when>
    <thetext>The RuntimeEnabledFeatures pseudo-singleton class has a number of inline getters and setters. When these are used to access the static members of the class across a DLL boundary, we are encountering crashes under Windows.

While this seems to be behavior specific to Visual Studio, it is not a good design and should be refactored to act as a &apos;real&apos; Singleton object to avoid non-deterministic behavior for reading/writing this memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932842</commentid>
    <comment_count>1</comment_count>
      <attachid>212529</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-24 18:33:21 -0700</bug_when>
    <thetext>Created attachment 212529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932843</commentid>
    <comment_count>2</comment_count>
      <attachid>212529</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-24 18:41:34 -0700</bug_when>
    <thetext>Comment on attachment 212529
Patch

Attachment 212529 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2174074</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932844</commentid>
    <comment_count>3</comment_count>
      <attachid>212529</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-24 18:43:07 -0700</bug_when>
    <thetext>Comment on attachment 212529
Patch

Attachment 212529 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2165004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932846</commentid>
    <comment_count>4</comment_count>
      <attachid>212529</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-24 18:50:39 -0700</bug_when>
    <thetext>Comment on attachment 212529
Patch

Attachment 212529 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2162073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932852</commentid>
    <comment_count>5</comment_count>
      <attachid>212529</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-24 19:16:54 -0700</bug_when>
    <thetext>Comment on attachment 212529
Patch

Attachment 212529 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/2217006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932857</commentid>
    <comment_count>6</comment_count>
      <attachid>212529</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-24 19:23:24 -0700</bug_when>
    <thetext>Comment on attachment 212529
Patch

Attachment 212529 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/2169077</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932859</commentid>
    <comment_count>7</comment_count>
      <attachid>212529</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-09-24 19:42:24 -0700</bug_when>
    <thetext>Comment on attachment 212529
Patch

Attachment 212529 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/2174085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>932860</commentid>
    <comment_count>8</comment_count>
      <attachid>212529</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-24 19:44:40 -0700</bug_when>
    <thetext>Comment on attachment 212529
Patch

Attachment 212529 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/2190067</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933021</commentid>
    <comment_count>9</comment_count>
      <attachid>212529</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-25 08:30:32 -0700</bug_when>
    <thetext>Comment on attachment 212529
Patch

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

Awesome. Just a few nits.

&gt; Source/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp:142
&gt; +RuntimeEnabledFeatures&amp; RuntimeEnabledFeatures::sharedRuntimeEnabledFeatures()

RuntimeEnabledFeatures::sharedRuntimeEnabledFeatures() seems a bit redundant.  How about RuntimeEnabledFeatures::sharedFeatures()?

&gt; Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h:45
&gt;  class RuntimeEnabledFeatures {
&gt;  public:

You should add WTF_MAKE_NONCOPYABLE(RuntimeEnabledFeatures) here now that we have an instance.

&gt; Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h:317
&gt; +    bool isLocalStorageEnabled;
&gt; +    bool isSessionStorageEnabled;
&gt; +    bool isWebkitNotificationsEnabled;
&gt; +    bool isApplicationCacheEnabled;
&gt; +    bool isDataTransferItemsEnabled;
&gt; +    bool isGeolocationEnabled;
&gt; +    bool isIndexedDBEnabled;
&gt; +    bool isTouchEnabled;
&gt; +    bool isDeviceMotionEnabled;
&gt; +    bool isDeviceOrientationEnabled;
&gt; +    bool isSpeechInputEnabled;
&gt; +    bool isCanvasPathEnabled;
&gt; +    bool isCSSExclusionsEnabled;
&gt; +    bool isCSSShapesEnabled;
&gt; +    bool isCSSRegionsEnabled;
&gt; +    bool isCSSCompositingEnabled;
&gt; +    bool isLangAttributeAwareFormControlUIEnabled;

While we&apos;re cleaning up bad coding style, we should really make all these variables conform to WebKit Coding Style, with m_ prefixes for each.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933079</commentid>
    <comment_count>10</comment_count>
      <attachid>212601</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 10:43:41 -0700</bug_when>
    <thetext>Created attachment 212601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933093</commentid>
    <comment_count>11</comment_count>
      <attachid>212604</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 10:57:04 -0700</bug_when>
    <thetext>Created attachment 212604
Updated after removal of HTMLContentElement.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933097</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 11:01:37 -0700</bug_when>
    <thetext>Once this patch is in place we can reactivate CSS Shapes on Windows (i.e., revert Bug 121879).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933101</commentid>
    <comment_count>13</comment_count>
      <attachid>212604</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-25 11:07:29 -0700</bug_when>
    <thetext>Comment on attachment 212604
Updated after removal of HTMLContentElement.cpp

Attachment 212604 did not pass qt-wk2-ews (qt-wk2):
Output: http://webkit-queues.appspot.com/results/2212053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933111</commentid>
    <comment_count>14</comment_count>
      <attachid>212604</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-09-25 11:13:08 -0700</bug_when>
    <thetext>Comment on attachment 212604
Updated after removal of HTMLContentElement.cpp

Attachment 212604 did not pass qt-ews (qt):
Output: http://webkit-queues.appspot.com/results/2217054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933119</commentid>
    <comment_count>15</comment_count>
      <attachid>212608</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 11:19:07 -0700</bug_when>
    <thetext>Created attachment 212608
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933137</commentid>
    <comment_count>16</comment_count>
      <attachid>212608</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-25 11:51:26 -0700</bug_when>
    <thetext>Comment on attachment 212608
Patch

Attachment 212608 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/2217061</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933147</commentid>
    <comment_count>17</comment_count>
      <attachid>212612</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 12:05:19 -0700</bug_when>
    <thetext>Created attachment 212612
Removed offending WebCore.exp.in entries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933161</commentid>
    <comment_count>18</comment_count>
      <attachid>212612</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 12:26:10 -0700</bug_when>
    <thetext>Comment on attachment 212612
Removed offending WebCore.exp.in entries

Watching the mac/mac-wk2 bots. They will probably fail one more time to show me the symbol I need to add to WebCore.exp.in to support the new Singleton object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933166</commentid>
    <comment_count>19</comment_count>
      <attachid>212612</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-25 12:45:11 -0700</bug_when>
    <thetext>Comment on attachment 212612
Removed offending WebCore.exp.in entries

Attachment 212612 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/2224054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933170</commentid>
    <comment_count>20</comment_count>
      <attachid>212612</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-25 13:08:18 -0700</bug_when>
    <thetext>Comment on attachment 212612
Removed offending WebCore.exp.in entries

Attachment 212612 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/2220014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933181</commentid>
    <comment_count>21</comment_count>
      <attachid>212620</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 13:39:01 -0700</bug_when>
    <thetext>Created attachment 212620
Removed typo from WebCore.exp.in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933196</commentid>
    <comment_count>22</comment_count>
      <attachid>212620</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-25 14:11:32 -0700</bug_when>
    <thetext>Comment on attachment 212620
Removed typo from WebCore.exp.in

Attachment 212620 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/2240010</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933198</commentid>
    <comment_count>23</comment_count>
      <attachid>212625</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 14:15:24 -0700</bug_when>
    <thetext>Created attachment 212625
Updated with missing symbol in WebCore.exp.in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933200</commentid>
    <comment_count>24</comment_count>
      <attachid>212625</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-09-25 14:18:40 -0700</bug_when>
    <thetext>Comment on attachment 212625
Updated with missing symbol in WebCore.exp.in

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933219</commentid>
    <comment_count>25</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-09-25 15:18:22 -0700</bug_when>
    <thetext>Committed r156424: &lt;http://trac.webkit.org/changeset/156424&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>944439</commentid>
    <comment_count>26</comment_count>
      <attachid>212625</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-10-29 08:38:08 -0700</bug_when>
    <thetext>Comment on attachment 212625
Updated with missing symbol in WebCore.exp.in

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

&gt; Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h:419
&gt; +#ifndef CLASS_IF_GCC
&gt; +#if COMPILER(GCC)
&gt; +#define CLASS_IF_GCC class
&gt; +#else
&gt; +#define CLASS_IF_GCC
&gt; +#endif
&gt; +#endif
&gt; +    friend CLASS_IF_GCC NeverDestroyed&lt;RuntimeEnabledFeatures&gt;;

Sooooooo ugly. :-/

Is it a well-known MSVC bug? It seems we ran into the same bug in https://bugs.webkit.org/show_bug.cgi?id=123442
But I prefer a general fix for it instead of adding workarounds everywhere.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212529</attachid>
            <date>2013-09-24 18:33:21 -0700</date>
            <delta_ts>2013-09-25 10:43:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121883-20130924183309.patch</filename>
            <type>text/plain</type>
            <size>101591</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjM4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMyBAQAorMjAxMy0wOS0yNCAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0
b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgV2luZG93
cyBpcyBleHBlcmllbmNpbmcgY3Jhc2hlcyB3aGVuIGNsaWVudCBwcm9ncmFtcyAoc3VjaCBhcwor
ICAgICAgICBEdW1wUmVuZGVyVHJlZSkgYXR0ZW1wIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUg
UnVudGltZUVuYWJsZWRGZWF0dXJlcworICAgICAgICBvYmplY3QuIFRoZSBpbmxpbmVkIHN0YXRp
YyBhY2Nlc3NvciBtZXRob2RzIGFyZSBub3QgYWNjZXNzaW5nCisgICAgICAgIG1lbW9yeSBzYWZl
bHkgKHdoZW4gY29tcGlsZWQgYnkgVmlzdWFsIFN0dWRpbykgcmVzdWx0aW5nIGluCisgICAgICAg
IGNyYXNoZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOiBTd2l0Y2gg
bWV0aG9kcyB0bworICAgICAgICBjb25mb3JtIHRvIGEgc2luZ2xldG9uIHBhdHRlcm4uCisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6YXVkaW9FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Omh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxWaWRlb0VsZW1lbnRFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxTb3VyY2VF
bGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjptZWRpYUNvbnRyb2xsZXJFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnRpbWVSYW5nZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFdvcmtlckVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2ViU29ja2V0RW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFz
ZVN5bmNFbmFibGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVk
RmVhdHVyZXMuaDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmxvY2FsU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2Vzc2lvblN0b3JhZ2VFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNlc3Npb25TdG9yYWdlRW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJraXRO
b3RpZmljYXRpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXREYXRh
VHJhbnNmZXJJdGVtc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6ZGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEdlb2xvY2F0aW9uRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpnZW9sb2NhdGlvbkVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2Via2l0SW5kZXhlZERC
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRJbmRleGVkREJFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmluZGV4ZWREQkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0Q2FudmFzUGF0aEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Y2FudmFzUGF0aEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzRXhjbHVzaW9uc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTU2hh
cGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NTaGFwZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmNzc1JlZ2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NDb21wb3NpdGluZ0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Rm9udExvYWRFdmVu
dHNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZv
bnRMb2FkRXZlbnRzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0SXNGdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWRFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Q2FuY2VsRnVsbFNjcmVlbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbHNjcmVlbkVuYWJs
ZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdEZ1bGxzY3JlZW5FbGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRFeGl0RnVsbHNjcmVlbkVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0UmVxdWVzdEZ1bGxzY3JlZW5F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnRvdWNo
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRU
b3VjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0RGV2aWNlTW90aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpkZXZpY2VNb3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmRldmljZU1vdGlvbkV2ZW50RW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvbmRldmljZW1vdGlvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0RGV2aWNlT3JpZW50
YXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmRldmljZU9yaWVudGF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpkZXZpY2VPcmllbnRhdGlvbkV2ZW50RW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvbmRldmljZW9yaWVudGF0aW9uRW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTcGVlY2hJ
bnB1dEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c3BlZWNoSW5wdXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYmtpdFNwZWVjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0R3JhbW1hckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2NyaXB0ZWRTcGVlY2hFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNjcmlwdGVkU3BlZWNoRW5hYmxl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVl
Y2hSZWNvZ25pdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0U3BlZWNoUmVjb2duaXRpb25FcnJvckVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0U3BlZWNoUmVjb2duaXRpb25F
dmVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0U3BlZWNoR3JhbW1hckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0U3BlZWNoR3JhbW1hckxpc3RFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEZpbGVTeXN0ZW1FbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEphdmFTY3JpcHRJ
MThOQVBJRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjptZWRpYVN0cmVhbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0TWVkaWFTdHJlYW1FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEdldFVzZXJNZWRpYUVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0TWVkaWFTdHJlYW1FbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnBlZXJDb25uZWN0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVz
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsZWdh
Y3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0V2Via2l0R2V0R2FtZXBhZHNFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEdldEdhbWVwYWRzRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpxdW90YUVuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0UXVvdGFFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhU291
cmNlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRNZWRpYVNvdXJjZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6ZW5jcnlwdGVkTWVkaWFFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldEVuY3J5cHRlZE1lZGlhRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFkb3dET01FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldFNoYWRvd0RPTUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6YXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0QXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3VzdG9tRE9NRWxlbWVudHNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEN1c3RvbURPTUVsZW1lbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTdHlsZVNjb3BlZEVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBl
RGF0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0SW5wdXRUeXBlRGF0ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6aW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldElucHV0VHlwZURhdGVUaW1lRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlVGlt
ZUxvY2FsRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzZXRJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVNb250aEVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5wdXRUeXBlTW9udGhFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZVRp
bWVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dElucHV0VHlwZVRpbWVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlucHV0VHlwZVdlZWtFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldElucHV0VHlwZVdlZWtFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0
eVBvbGljeUZlYXR1cmVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2VhbWxl
c3NJRnJhbWVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRy
aWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q1NT
UHJvcGVydHlOYW1lUHJlZml4KTogVXNlIHNpbmdsZXRvbiBhY2Nlc3NvcnMuCisgICAgICAgIChX
ZWJDb3JlOjpjc3NQcm9wZXJ0eUlERm9ySlNDU1NQcm9wZXJ0eU5hbWUpOiBEaXR0by4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdldFJ1
bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUpOiBHZW5lcmF0ZSBzaW5nbGV0b24gdmVyc2lvbiBvZgor
ICAgICAgICBhY2Nlc3NvcnMuCisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpmb250TG9hZGVkKTogVXNlIHNpbmdsZXRvbiBhY2Nl
c3NvcnMuCisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Z2V0Rm9udERhdGEpOiBEaXR0
by4KKyAgICAgICAgKiBjc3MvQ1NTRm9udFNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKTogRGl0dG8uCisgICAgICAgICogY3Nz
L0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppc1NpbXBsZUxlbmd0aFByb3BlcnR5
SUQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpyZXdyaXRlU3BlY2lmaWVycyk6CisgICAgICAgICogY3Nz
L0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlZ21lbnRl
ZEZvbnRGYWNlOjpmb250TG9hZGVkKTogRGl0dG8uCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmVuc3VyZVNjb3BlUmVzb2x2
ZXIpOiBEaXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNzc1JlZ2lvbnNFbmFibGVkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Y3NzQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzaG91bGREaXNwbGF5U2VhbWxlc3NseVdpdGhQYXJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmdldENhY2hlZExvY2FsZSk6CisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y3JlYXRlU2hhZG93Um9vdCk6IERpdHRv
LgorICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlv
bjo6UG9zaXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpmaW5kUGFy
ZW50KToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRy
ZWVTY29wZTo6Z2V0U2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgICogZG9tL21ha2VfbmFtZXMu
cGw6CisgICAgICAgIChwcmludENvbnN0cnVjdG9ySW50ZXJpb3IpOiBHZW5lcmF0ZSBzaW5nbGV0
b24gdmVyc2lvbiBvZiBhY2Nlc3NvcnMuCisgICAgICAgIChwcmludFdyYXBwZXJGdW5jdGlvbnMp
OiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6aXNTcGVlY2hFbmFibGVkKTogVXNlIHNpbmdsZXRv
biBhY2Nlc3NvcnMuCisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERh
dGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMpOiBEaXR0by4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZmluaXNo
UGFyc2luZ0NoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpzY2hlZHVsZURlbGF5ZWRBY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6bG9hZFRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6cHJlcGFyZUZvckxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bG9hZEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNl
dFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6cGxheWJh
Y2tQcm9ncmVzc1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dGV4dFRyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
Ojp2aWRlb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRB
ZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVt
b3ZlVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyVGltZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
dXNlckNhbmNlbGxlZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
aGFzQ2xvc2VkQ2FwdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmNvbmZpZ3VyZVRleHRUcmFja0Rpc3BsYXkpOgorICAgICAgICAqIGh0bWwvSFRNTFN0
eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6
c2NvcGVkQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVt
ZW50Ojp1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxT
dHlsZUVsZW1lbnQ6OnNjb3BlZCk6CisgICAgICAgICogaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6Y2FuTG9hZFVybCk6CisgICAg
ICAgICogaHRtbC9JbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSW5wdXRU
eXBlRmFjdG9yeU1hcCk6IERpdHRvLgorICAgICAgICAqIGh0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29udGVudEVsZW1lbnQ6OmNvbnRl
bnRUYWdOYW1lKTogRGl0dG8uCisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpleHBlcmltZW50
YWxGZWF0dXJlc0VuYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOiBEaXR0by4K
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MpOiBEaXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6
QmFja3VwOjpCYWNrdXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGlu
Z3M6OkJhY2t1cDo6cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGlu
Z3M6OnNldFNoYWRvd0RPTUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0
aW5nczo6c2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldENTU1NoYXBlc0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOgorCiAyMDEzLTA5LTI0ICBCZW5qYW1pbiBQb3VsYWlu
ICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgYSBjb250cmFkaWN0aW9u
IGZyb20gU2VsZWN0b3JDaGVja2VyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJldmlzaW9u
IDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJs
ZWRGZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCIKICNp
bmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAog
I2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKQEAg
LTQyLDQ0ICs0MywxMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlzTG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGZh
bHNlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNEYXRhVHJhbnNmZXJJ
dGVtc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0dlb2xv
Y2F0aW9uRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5k
ZXhlZERCRW5hYmxlZCA9IGZhbHNlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1Rv
dWNoRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2aWNl
TW90aW9uRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2
aWNlT3JpZW50YXRpb25FbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aXNTcGVlY2hJbnB1dEVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0NhbnZhc1BhdGhFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0NTU1NoYXBlc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0NTU1JlZ2lvbnNFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzQ1NTQ29tcG9zaXRpbmdFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQgPSBmYWxzZTsKLQorUnVudGltZUVuYWJsZWRGZWF0dXJlczo6UnVudGltZUVuYWJsZWRGZWF0
dXJlcygpCisgICAgOiBpc0xvY2FsU3RvcmFnZUVuYWJsZWQodHJ1ZSkKKyAgICAsIGlzU2Vzc2lv
blN0b3JhZ2VFbmFibGVkKHRydWUpCisgICAgLCBpc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVk
KGZhbHNlKQorICAgICwgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCh0cnVlKQorICAgICwgaXNE
YXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQodHJ1ZSkKKyAgICAsIGlzR2VvbG9jYXRpb25FbmFibGVk
KHRydWUpCisgICAgLCBpc0luZGV4ZWREQkVuYWJsZWQoZmFsc2UpCisgICAgLCBpc1RvdWNoRW5h
YmxlZCh0cnVlKQorICAgICwgaXNEZXZpY2VNb3Rpb25FbmFibGVkKHRydWUpCisgICAgLCBpc0Rl
dmljZU9yaWVudGF0aW9uRW5hYmxlZCh0cnVlKQorICAgICwgaXNTcGVlY2hJbnB1dEVuYWJsZWQo
dHJ1ZSkKKyAgICAsIGlzQ2FudmFzUGF0aEVuYWJsZWQoZmFsc2UpCisgICAgLCBpc0NTU0V4Y2x1
c2lvbnNFbmFibGVkKHRydWUpCisgICAgLCBpc0NTU1NoYXBlc0VuYWJsZWQodHJ1ZSkKKyAgICAs
IGlzQ1NTUmVnaW9uc0VuYWJsZWQoZmFsc2UpCisgICAgLCBpc0NTU0NvbXBvc2l0aW5nRW5hYmxl
ZChmYWxzZSkKKyAgICAsIGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQo
ZmFsc2UpCiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKLWJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQgPSBmYWxzZTsKKyAgICAsIGlzU2NyaXB0
ZWRTcGVlY2hFbmFibGVkKGZhbHNlKQogI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc01lZGlhU3RyZWFtRW5hYmxlZCA9IHRy
dWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzUGVlckNvbm5lY3Rpb25FbmFibGVk
ID0gdHJ1ZTsKKyAgICAsIGlzTWVkaWFTdHJlYW1FbmFibGVkKHRydWUpCisgICAgLCBpc1BlZXJD
b25uZWN0aW9uRW5hYmxlZCh0cnVlKQogI2VuZGlmCi0KICNpZiBFTkFCTEUoTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVMpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzTGVnYWN5Q1NT
VmVuZG9yUHJlZml4ZXNFbmFibGVkID0gZmFsc2U7CisgICAgLCBpc0xlZ2FjeUNTU1ZlbmRvclBy
ZWZpeGVzRW5hYmxlZChmYWxzZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi1ib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzR2FtZXBhZEVuYWJsZWQgPSBmYWxzZTsKKyAgICAs
IGlzR2FtZXBhZEVuYWJsZWQoZmFsc2UpCiAjZW5kaWYKLQogI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNGaWxlU3lzdGVtRW5hYmxlZCA9IGZh
bHNlOworICAgICwgaXNGaWxlU3lzdGVtRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0kxOE5fQVBJKQorICAgICwgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQo
ZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoUVVPVEEpCisgICAgLCBpc1F1b3RhRW5hYmxlZChm
YWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAsIGlzRnVsbFNj
cmVlbkFQSUVuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCisg
ICAgLCBpc01lZGlhU291cmNlRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShWSURF
T19UUkFDSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JN
KFFUKQorICAgICwgaXNWaWRlb1RyYWNrRW5hYmxlZCh0cnVlKQorI2Vsc2UKKyAgICAsIGlzVmlk
ZW9UcmFja0VuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNlbmRpZgorI2lmIEVOQUJMRShFTkNSWVBU
RURfTUVESUEpCisgICAgLCBpc0VuY3J5cHRlZE1lZGlhRW5hYmxlZChmYWxzZSkKKyNlbmRpZgor
I2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICwgaXNTaGFkb3dET01FbmFibGVkKGZhbHNlKQor
ICAgICwgaXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChmYWxzZSkKKyNlbmRp
ZgorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAgLCBpc0N1c3RvbURPTUVsZW1lbnRz
RW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCisgICAgLCBp
c1N0eWxlU2NvcGVkRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0RBVEUpCisgICAgLCBpc0lucHV0VHlwZURhdGVFbmFibGVkKHRydWUpCisjZW5kaWYKKyNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQorICAgICwgaXNJbnB1dFR5cGVE
YXRlVGltZUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRF
VElNRUxPQ0FMKQorICAgICwgaXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCh0cnVlKQor
I2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfTU9OVEgpCisgICAgLCBpc0lucHV0VHlwZU1v
bnRoRW5hYmxlZCh0cnVlKQorI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfVElNRSkKKyAg
ICAsIGlzSW5wdXRUeXBlVGltZUVuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBV
VF9UWVBFX1dFRUspCisgICAgLCBpc0lucHV0VHlwZVdlZWtFbmFibGVkKHRydWUpCisjZW5kaWYK
KyNpZiBFTkFCTEUoQ1NQX05FWFQpCisgICAgLCBhcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJp
dHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSUZSQU1F
X1NFQU1MRVNTKQorICAgICwgYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZChmYWxzZSkKKyNlbmRp
ZgorI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQorICAgICwgaXNGb250TG9hZEV2ZW50c0Vu
YWJsZWQoZmFsc2UpCisjZW5kaWYKK3sKK30KKworUnVudGltZUVuYWJsZWRGZWF0dXJlcyYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+IHJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM7CiAKKyAgICByZXR1cm4gcnVudGltZUVuYWJsZWRGZWF0dXJlczsKK30K
KworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
ZmlsZVN5c3RlbUVuYWJsZWQoKQogewogICAgIHJldHVybiBpc0ZpbGVTeXN0ZW1FbmFibGVkICYm
IEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKTsKQEAgLTg3LDggKzE1NCw2IEBAIGJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZmlsZVN5c3RlbUUKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSmF2
YVNjcmlwdEkxOE5BUElFbmFibGVkID0gZmFsc2U7Ci0KIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVkKCkKIHsKICAgICByZXR1cm4gaXNKYXZhU2Ny
aXB0STE4TkFQSUVuYWJsZWQ7CkBAIC05NiwxNDcgKzE2MSw3MSBAQCBib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmphdmFTY3JpcHRJCiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKLQot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKQorYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRp
YVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpodG1sTWVkaWFFbGVtZW50RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
Omh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gTWVkaWFQbGF5
ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRt
bEF1ZGlvRWxlbWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
QXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjpp
c0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxWaWRl
b0VsZW1lbnRFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFZpZGVv
RWxlbWVudEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFp
bGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNlRWxl
bWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNlRWxl
bWVudEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFi
bGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUNvbnRyb2xsZXJF
bmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5h
YmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwog
fQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkKK2Jv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQoKSBjb25zdAogewog
ICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp0aW1lUmFuZ2VzRW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQVJFRF9X
T1JLRVJTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3JrZXJFbmFibGVk
KCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZhaWxhYmxlKCk7
CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2ViU29ja2V0RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYlNvY2tldEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBXZWJTb2NrZXQ6Omlz
QXZhaWxhYmxlKCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi1ib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQorYm9vbCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVkKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKTsKIH0KIAotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpCitib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZVN5bmNFbmFibGVkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKTsK
IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFFVT1RBKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc1F1b3RhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRnVsbFNjcmVlbkFQSUVu
YWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc01lZGlhU291cmNlRW5hYmxlZCA9IGZhbHNlOwotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExB
VEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkKLSAgICBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQgPSB0cnVlOwotI2Vsc2UKLSAgICBib29sIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotI2Vu
ZGlmCi0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotYm9vbCBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppc0VuY3J5cHRlZE1lZGlhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNTaGFkb3dE
T01FbmFibGVkID0gZmFsc2U7Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNBdXRo
b3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0N1
c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1RZ
TEVfU0NPUEVEKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1N0eWxlU2NvcGVkRW5h
YmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZURhdGVFbmFibGVkID0gdHJ1ZTsK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKLWJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQgPSBm
YWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLWJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxl
ZCA9IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX01PTlRIKQotYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9IHRydWU7Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCi1ib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lu
cHV0VHlwZVdlZWtFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENTUF9ORVhU
KQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphcmVFeHBlcmltZW50YWxDb250ZW50U2Vj
dXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KElGUkFNRV9TRUFNTEVTUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXJlU2VhbWxl
c3NJRnJhbWVzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRk9OVF9MT0FE
X0VWRU5UUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNGb250TG9hZEV2ZW50c0Vu
YWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMyLDYg
KzMzLDcgQEAKICNkZWZpbmUgUnVudGltZUVuYWJsZWRGZWF0dXJlc19oCiAKICNpbmNsdWRlICJQ
bGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQxLDM3MCArNDMsMzczIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUnVudGltZUVuYWJsZWRGZWF0dXJlcyB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0xv
Y2FsU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBsb2NhbFN0
b3JhZ2VFbmFibGVkKCkgeyByZXR1cm4gaXNMb2NhbFN0b3JhZ2VFbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTG9jYWxTdG9yYWdl
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgbG9jYWxTdG9yYWdlRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQg
c2V0U2Vzc2lvblN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU2Vzc2lvblN0b3Jh
Z2VFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgc2Vzc2lvblN0b3JhZ2VF
bmFibGVkKCkgeyByZXR1cm4gaXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dFNlc3Npb25TdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1Nlc3Npb25TdG9yYWdl
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc2Vzc2lvblN0b3JhZ2VFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gaXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7IH0KIAotICAgIHN0YXRpYyB2
b2lkIHNldFdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzV2Vi
a2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3
ZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCgpIHsgcmV0dXJuIGlzV2Via2l0Tm90aWZpY2F0aW9u
c0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGlzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIHdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNX
ZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0QXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKCkgeyByZXR1cm4gaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0
QXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNBcHBsaWNhdGlvbkNh
Y2hlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgYXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOyB9CiAKLSAgICBz
dGF0aWMgdm9pZCBzZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
aXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9v
bCBkYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoKSB7IHJldHVybiBpc0RhdGFUcmFuc2Zlckl0ZW1z
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IGlzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAg
Ym9vbCBkYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0RhdGFUcmFu
c2Zlckl0ZW1zRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0R2VvbG9jYXRpb25FbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzR2VvbG9jYXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9
Ci0gICAgc3RhdGljIGJvb2wgZ2VvbG9jYXRpb25FbmFibGVkKCkgeyByZXR1cm4gaXNHZW9sb2Nh
dGlvbkVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEdlb2xvY2F0aW9uRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBpc0dlb2xvY2F0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZ2Vv
bG9jYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNHZW9sb2NhdGlvbkVuYWJsZWQ7IH0K
IAotICAgIHN0YXRpYyB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgaXNJbmRleGVkREJFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wg
d2Via2l0SW5kZXhlZERCRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5kZXhlZERCRW5hYmxlZDsgfQot
ICAgIHN0YXRpYyBib29sIGluZGV4ZWREQkVuYWJsZWQoKSB7IHJldHVybiBpc0luZGV4ZWREQkVu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgaXNJbmRleGVkREJFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRJ
bmRleGVkREJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNJbmRleGVkREJFbmFibGVkOyB9Cisg
ICAgYm9vbCBpbmRleGVkREJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNJbmRleGVkREJFbmFi
bGVkOyB9CiAKICNpZiBFTkFCTEUoQ0FOVkFTX1BBVEgpCi0gICAgc3RhdGljIHZvaWQgc2V0Q2Fu
dmFzUGF0aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDYW52YXNQYXRoRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkgeyByZXR1cm4g
aXNDYW52YXNQYXRoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q2FudmFzUGF0aEVuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgaXNDYW52YXNQYXRoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJv
b2wgY2FudmFzUGF0aEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0NhbnZhc1BhdGhFbmFibGVk
OyB9CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIHNldENhbnZhc1BhdGhFbmFibGVkKGJvb2wpIHsg
fQotICAgIHN0YXRpYyBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2b2lkIHNldENhbnZhc1BhdGhFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY2FudmFz
UGF0aEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ1NTX0VYQ0xVU0lPTlMpCi0gICAgc3RhdGljIHZvaWQgc2V0Q1NTRXhjbHVzaW9uc0VuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NFeGNsdXNpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIGNzc0V4Y2x1c2lvbnNFbmFibGVkKCkgeyByZXR1cm4gaXNDU1NF
eGNsdXNpb25zRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgaXNDU1NFeGNsdXNpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAg
IGJvb2wgY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0NTU0V4Y2x1c2lv
bnNFbmFibGVkOyB9CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIHNldENTU0V4Y2x1c2lvbnNFbmFi
bGVkKGJvb2wpIHsgfQotICAgIHN0YXRpYyBib29sIGNzc0V4Y2x1c2lvbnNFbmFibGVkKCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldENTU0V4Y2x1c2lvbnNFbmFibGVkKGJvb2wpIHsg
fQorICAgIGJvb2wgY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICBzdGF0aWMgdm9pZCBzZXRD
U1NTaGFwZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzQ1NTU2hhcGVzRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGNzc1NoYXBlc0VuYWJsZWQoKSB7IHJldHVybiBp
c0NTU1NoYXBlc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENTU1NoYXBlc0VuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNDU1NTaGFwZXNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBj
c3NTaGFwZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNDU1NTaGFwZXNFbmFibGVkOyB9CiAj
ZWxzZQotICAgIHN0YXRpYyB2b2lkIHNldENTU1NoYXBlc0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAg
c3RhdGljIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9p
ZCBzZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzU2hhcGVzRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0NTU1JlZ2lvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wg
Y3NzUmVnaW9uc0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU1JlZ2lvbnNFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0NTU1JlZ2lvbnNF
bmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGlzQ1NTUmVnaW9uc0VuYWJsZWQ7IH0KICNlbHNlCi0gICAgc3RhdGljIHZvaWQg
c2V0Q1NTUmVnaW9uc0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzUmVnaW9u
c0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTUmVnaW9uc0VuYWJs
ZWQoYm9vbCkgeyB9CisgICAgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAjZW5kaWYKIAotICAgIHN0YXRpYyB2b2lkIHNldENTU0NvbXBvc2l0aW5nRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0NTU0NvbXBvc2l0aW5nRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIGNzc0NvbXBvc2l0aW5nRW5hYmxlZCgpIHsgcmV0dXJuIGlz
Q1NTQ29tcG9zaXRpbmdFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDU1NDb21wb3NpdGluZ0VuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NDb21wb3NpdGluZ0VuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KKyAgICBib29sIGNzc0NvbXBvc2l0aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ1NT
Q29tcG9zaXRpbmdFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAg
ICBzdGF0aWMgdm9pZCBzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
aXNGb250TG9hZEV2ZW50c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBm
b250TG9hZEV2ZW50c0VuYWJsZWQoKSB7IHJldHVybiBpc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsg
fQorICAgIHZvaWQgc2V0Rm9udExvYWRFdmVudHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlz
Rm9udExvYWRFdmVudHNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBmb250TG9hZEV2
ZW50c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsgfQog
I2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCkgeyB9
Ci0gICAgc3RhdGljIGJvb2wgZm9udExvYWRFdmVudHNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2b2lkIHNldEZvbnRMb2FkRXZlbnRzRW5hYmxlZChib29sKSB7IH0KKyAgICBib29s
IGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAvLyBNb3ppbGxhIHZlcnNpb24KLSAgICBzdGF0
aWMgYm9vbCB3ZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVl
bkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRGdWxsU2NyZWVuQVBJRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0Z1bGxTY3JlZW5BUElFbmFibGVkID0gaXNFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5FbmFibGVkKCkgeyBy
ZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdElz
RnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9Ci0g
ICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2VkRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW5F
bmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Vi
a2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9CisgICAgdm9pZCBzZXRXZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBpc0Z1bGxTY3JlZW5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9v
bCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0Z1bGxT
Y3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5FbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0
RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2VkRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlz
RnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVu
RWxlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9
CisgICAgYm9vbCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KIAogICAgIC8vIFczQyB2ZXJzaW9uCi0gICAgc3Rh
dGljIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVuYWJsZWRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxs
U2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbGVt
ZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgYm9vbCB3ZWJraXRFeGl0RnVsbHNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW5F
bmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Vi
a2l0RnVsbHNjcmVlbkVuYWJsZWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNGdWxsU2NyZWVu
QVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0
RXhpdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5h
YmxlZDsgfQorICAgIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
VklERU8pCi0gICAgc3RhdGljIGJvb2wgYXVkaW9FbmFibGVkKCk7Ci0gICAgc3RhdGljIGJvb2wg
aHRtbE1lZGlhRWxlbWVudEVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBodG1sQXVkaW9FbGVt
ZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIGh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCk7
Ci0gICAgc3RhdGljIGJvb2wgaHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCk7Ci0gICAgc3RhdGlj
IGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIG1lZGlhRXJy
b3JFbmFibGVkKCk7Ci0gICAgc3RhdGljIGJvb2wgdGltZVJhbmdlc0VuYWJsZWQoKTsKKyAgICBi
b29sIGF1ZGlvRW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgaHRtbE1lZGlhRWxlbWVudEVuYWJs
ZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKCkgY29uc3Q7Cisg
ICAgYm9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgaHRtbFNv
dXJjZUVsZW1lbnRFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBtZWRpYUNvbnRyb2xsZXJFbmFi
bGVkKCkgY29uc3Q7CisgICAgYm9vbCBtZWRpYUVycm9yRW5hYmxlZCgpIGNvbnN0OworICAgIGJv
b2wgdGltZVJhbmdlc0VuYWJsZWQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKQotICAgIHN0YXRpYyBib29sIHNoYXJlZFdvcmtlckVuYWJsZWQoKTsKKyAgICBi
b29sIHNoYXJlZFdvcmtlckVuYWJsZWQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFdF
Ql9TT0NLRVRTKQotICAgIHN0YXRpYyBib29sIHdlYlNvY2tldEVuYWJsZWQoKTsKKyAgICBib29s
IHdlYlNvY2tldEVuYWJsZWQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNRTF9EQVRB
QkFTRSkKLSAgICBzdGF0aWMgYm9vbCBvcGVuRGF0YWJhc2VFbmFibGVkKCk7Ci0gICAgc3RhdGlj
IGJvb2wgb3BlbkRhdGFiYXNlU3luY0VuYWJsZWQoKTsKKyAgICBib29sIG9wZW5EYXRhYmFzZUVu
YWJsZWQoKSBjb25zdDsKKyAgICBib29sIG9wZW5EYXRhYmFzZVN5bmNFbmFibGVkKCkgY29uc3Q7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgc3RhdGljIGJvb2wgdG91
Y2hFbmFibGVkKCkgeyByZXR1cm4gaXNUb3VjaEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRUb3VjaEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNUb3VjaEVuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KKyAgICBib29sIHRvdWNoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzVG91Y2hFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRUb3VjaEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNUb3Vj
aEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCi0gICAgc3RhdGljIHZvaWQgc2V0RGV2
aWNlTW90aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0RldmljZU1vdGlvbkVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBkZXZpY2VNb3Rpb25FbmFibGVkKCkgeyBy
ZXR1cm4gaXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNlTW90
aW9uRXZlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9Ci0gICAg
c3RhdGljIGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VNb3Rp
b25FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlvbkVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQoKSB7IHJldHVy
biBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGRldmljZU9y
aWVudGF0aW9uRXZlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBvbmRldmljZW9yaWVudGF0aW9uRW5hYmxlZCgpIHsgcmV0
dXJuIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRT
cGVlY2hJbnB1dEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNTcGVlY2hJbnB1dEVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBzcGVlY2hJbnB1dEVuYWJsZWQoKSB7IHJl
dHVybiBpc1NwZWVjaElucHV0RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFNwZWVj
aEVuYWJsZWQoKSB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIHdlYmtpdEdyYW1tYXJFbmFibGVkKCkgeyByZXR1cm4gaXNTcGVlY2hJbnB1dEVuYWJsZWQ7
IH0KKyAgICB2b2lkIHNldERldmljZU1vdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNE
ZXZpY2VNb3Rpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBkZXZpY2VNb3Rpb25F
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9CisgICAgYm9v
bCBkZXZpY2VNb3Rpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0RldmljZU1vdGlv
bkVuYWJsZWQ7IH0KKyAgICBib29sIG9uZGV2aWNlbW90aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQorCisgICAgdm9pZCBzZXREZXZpY2VPcmllbnRh
dGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9CisgICAgYm9vbCBkZXZpY2VP
cmllbnRhdGlvbkV2ZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzRGV2aWNlT3JpZW50YXRp
b25FbmFibGVkOyB9CisgICAgYm9vbCBvbmRldmljZW9yaWVudGF0aW9uRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9CisKKyAgICB2b2lkIHNldFNw
ZWVjaElucHV0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1NwZWVjaElucHV0RW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc3BlZWNoSW5wdXRFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gaXNTcGVlY2hJbnB1dEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0
R3JhbW1hckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxlZDsgfQog
CiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKLSAgICBzdGF0aWMgdm9pZCBzZXRTY3JpcHRl
ZFNwZWVjaEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBzY3JpcHRlZFNwZWVjaEVuYWJsZWQoKSB7
IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtp
dFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFi
bGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FcnJvckVuYWJs
ZWQoKSB7IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRXZlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRl
ZFNwZWVjaEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyRW5h
YmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJv
b2wgd2Via2l0U3BlZWNoR3JhbW1hckxpc3RFbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRlZFNw
ZWVjaEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNjcmlwdGVkU3BlZWNoRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJv
b2wgc2NyaXB0ZWRTcGVlY2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNTY3JpcHRlZFNwZWVj
aEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRT
cGVlY2hSZWNvZ25pdGlvbkVycm9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzU2NyaXB0ZWRT
cGVlY2hFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbkV2ZW50RW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9CisgICAgYm9v
bCB3ZWJraXRTcGVlY2hHcmFtbWFyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzU2NyaXB0ZWRT
cGVlY2hFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgc3RhdGljIGJvb2wgZmlsZVN5c3RlbUVuYWJsZWQo
KTsKLSAgICBzdGF0aWMgdm9pZCBzZXRGaWxlU3lzdGVtRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBpc0ZpbGVTeXN0ZW1FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBmaWxlU3lzdGVt
RW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RmlsZVN5c3RlbUVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9JMThOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBqYXZhU2NyaXB0
STE4TkFQSUVuYWJsZWQoKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRKYXZhU2NyaXB0STE4TkFQSUVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KKyAgICBib29sIGphdmFTY3JpcHRJMThOQVBJRW5hYmxlZCgpIGNvbnN0OworICAg
IHZvaWQgc2V0SmF2YVNjcmlwdEkxOE5BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSmF2
YVNjcmlwdEkxOE5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgc3RhdGljIGJvb2wgbWVkaWFTdHJlYW1FbmFibGVkKCkgeyBy
ZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVN0
cmVhbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVkKCkgeyBy
ZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRNZWRp
YVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQotCi0gICAg
c3RhdGljIGJvb2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVh
bUVuYWJsZWQgJiYgaXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNQZWVyQ29ubmVjdGlv
bkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTsgfQorICAg
IGJvb2wgbWVkaWFTdHJlYW1FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBpc01lZGlhU3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0R2V0
VXNlck1lZGlhRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9
CisgICAgYm9vbCB3ZWJraXRNZWRpYVN0cmVhbUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc01l
ZGlhU3RyZWFtRW5hYmxlZDsgfQorCisgICAgYm9vbCBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZCAmJiBpc1BlZXJDb25uZWN0aW9uRW5h
YmxlZDsgfQorICAgIHZvaWQgc2V0UGVlckNvbm5lY3Rpb25FbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IGlzUGVlckNvbm5lY3Rpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBwZWVyQ29ubmVjdGlv
bkVuYWJsZWQoKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJF
RklYRVMpCi0gICAgc3RhdGljIHZvaWQgc2V0TGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkID0gaXNF
bmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgbGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVk
KCkgeyByZXR1cm4gaXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQ7IH0KKyAgICB2b2lk
IHNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0xl
Z2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgbGVn
YWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNMZWdhY3lDU1NW
ZW5kb3JQcmVmaXhlc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0g
ICAgc3RhdGljIHZvaWQgc2V0V2Via2l0R2V0R2FtZXBhZHNFbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IGlzR2FtZXBhZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJr
aXRHZXRHYW1lcGFkc0VuYWJsZWQoKSB7IHJldHVybiBpc0dhbWVwYWRFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRXZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNHYW1l
cGFkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0R2V0R2FtZXBhZHNFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gaXNHYW1lcGFkRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoUVVPVEEpCi0gICAgc3RhdGljIGJvb2wgcXVvdGFFbmFibGVkKCkgeyByZXR1cm4gaXNR
dW90YUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRRdW90YUVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNRdW90YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHF1b3RhRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzUXVvdGFFbmFibGVkOyB9CisgICAgdm9pZCBzZXRRdW90
YUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNRdW90YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBzdGF0aWMgYm9vbCBtZWRp
YVNvdXJjZUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU291cmNlRW5hYmxlZDsgfQotICAgIHN0
YXRpYyB2b2lkIHNldE1lZGlhU291cmNlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc01lZGlh
U291cmNlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgbWVkaWFTb3VyY2VFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gaXNNZWRpYVNvdXJjZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldE1l
ZGlhU291cmNlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc01lZGlhU291cmNlRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotICAg
IHN0YXRpYyBib29sIGVuY3J5cHRlZE1lZGlhRW5hYmxlZCgpIHsgcmV0dXJuIGlzRW5jcnlwdGVk
TWVkaWFFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0RW5jcnlwdGVkTWVkaWFFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzRW5jcnlwdGVkTWVkaWFFbmFibGVkID0gaXNFbmFibGVkOyB9
CisgICAgYm9vbCBlbmNyeXB0ZWRNZWRpYUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0VuY3J5
cHRlZE1lZGlhRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RW5jcnlwdGVkTWVkaWFFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IGlzRW5jcnlwdGVkTWVkaWFFbmFibGVkID0gaXNFbmFibGVkOyB9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpIHsgcmV0dXJuIGlzVmlkZW9UcmFja0VuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgdm9pZCBzZXRXZWJraXRWaWRlb1RyYWNrRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c1ZpZGVvVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzVmlkZW9UcmFja0VuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldFdlYmtpdFZpZGVvVHJhY2tFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzVmlkZW9U
cmFja0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCi0gICAgc3RhdGljIGJvb2wgc2hhZG93RE9NRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2hhZG93
RE9NRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNTaGFkb3dET01FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBz
aGFkb3dET01FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNTaGFkb3dET01FbmFibGVkOyB9Cisg
ICAgdm9pZCBzZXRTaGFkb3dET01FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU2hhZG93RE9N
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIGJvb2wgYXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQoKSB7IHJldHVybiBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVs
ZW1lbnRFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0QXV0aG9yU2hhZG93RE9NRm9yQW55
RWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNBdXRob3JTaGFkb3dET01Gb3JBbnlF
bGVtZW50RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgYXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBpc0F1dGhvclNoYWRvd0RPTUZvckFu
eUVsZW1lbnRFbmFibGVkOyB9CisgICAgdm9pZCBzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVt
ZW50RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1l
bnRFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCi0gICAgc3RhdGljIGJvb2wgY3VzdG9tRE9NRWxlbWVudHNFbmFibGVkKCkgeyByZXR1
cm4gaXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRDdXN0
b21ET01FbGVtZW50cyhib29sIGlzRW5hYmxlZCkgeyBpc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgY3VzdG9tRE9NRWxlbWVudHNFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gaXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEN1
c3RvbURPTUVsZW1lbnRzKGJvb2wgaXNFbmFibGVkKSB7IGlzQ3VzdG9tRE9NRWxlbWVudHNFbmFi
bGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi0g
ICAgc3RhdGljIGJvb2wgc3R5bGVTY29wZWRFbmFibGVkKCkgeyByZXR1cm4gaXNTdHlsZVNjb3Bl
ZEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNTdHlsZVNjb3BlZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29s
IHN0eWxlU2NvcGVkRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGlzU3R5bGVTY29wZWRFbmFibGVk
OyB9CisgICAgdm9pZCBzZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNT
dHlsZVNjb3BlZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfREFURSkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRlRW5hYmxlZCgpIHsg
cmV0dXJuIGlzSW5wdXRUeXBlRGF0ZUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRJbnB1
dFR5cGVEYXRlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZURhdGVFbmFibGVk
ID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVEYXRlRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGlzSW5wdXRUeXBlRGF0ZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldElucHV0VHlwZURh
dGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlRGF0ZUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoKSB7IHJldHVy
biBpc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0
VHlwZURhdGVUaW1lRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZURhdGVUaW1l
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gaXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQ7IH0KKyAgICB2b2lk
IHNldElucHV0VHlwZURhdGVUaW1lRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlw
ZURhdGVUaW1lRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9EQVRFVElNRUxPQ0FMKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlwZURhdGVUaW1l
TG9jYWxFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsg
fQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KKyAgICBib29sIGlucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gaXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRU
eXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbnB1dFR5cGVEYXRl
VGltZUxvY2FsRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9NT05USCkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVNb250aEVuYWJsZWQoKSB7
IHJldHVybiBpc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElu
cHV0VHlwZU1vbnRoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZU1vbnRoRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlTW9udGhFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gaXNJbnB1dFR5cGVNb250aEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldElucHV0
VHlwZU1vbnRoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZU1vbnRoRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQot
ICAgIHN0YXRpYyBib29sIGlucHV0VHlwZVRpbWVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5
cGVUaW1lRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZVRpbWVFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIGlucHV0VHlwZVRpbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNJbnB1dFR5
cGVUaW1lRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlVGltZUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNJbnB1dFR5cGVUaW1lRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlw
ZVdlZWtFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVXZWVrRW5hYmxlZDsgfQotICAgIHN0
YXRpYyB2b2lkIHNldElucHV0VHlwZVdlZWtFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5w
dXRUeXBlV2Vla0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGlucHV0VHlwZVdlZWtF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gaXNJbnB1dFR5cGVXZWVrRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0SW5wdXRUeXBlV2Vla0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbnB1dFR5cGVX
ZWVrRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NQX05FWFQp
Ci0gICAgc3RhdGljIGJvb2wgZXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVy
ZXNFbmFibGVkKCkgeyByZXR1cm4gYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5
RmVhdHVyZXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0RXhwZXJpbWVudGFsQ29udGVu
dFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGFyZUV4cGVy
aW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQorICAgIGJvb2wgZXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5
RmVhdHVyZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJp
dHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgYXJlRXhwZXJpbWVudGFs
Q29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgc3RhdGljIGJvb2wgc2VhbWxl
c3NJRnJhbWVzRW5hYmxlZCgpIHsgcmV0dXJuIGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgdm9pZCBzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHNl
YW1sZXNzSUZyYW1lc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBhcmVTZWFtbGVzc0lGcmFtZXNF
bmFibGVkOyB9CisgICAgdm9pZCBzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgog
Ci0gICAgc3RhdGljIGJvb2wgbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQo
KSB7IHJldHVybiBpc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkOyB9Cisg
ICAgYm9vbCBsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7IH0KICAgICAv
LyBUaGUgbGFuZyBhdHRyaWJ1dGUgc3VwcG9ydCBpcyBpbmNvbXBsZXRlIGFuZCBzaG91bGQgb25s
eSBiZSB0dXJuZWQgb24gZm9yIHRlc3RzLgotICAgIHN0YXRpYyB2b2lkIHNldExhbmdBdHRyaWJ1
dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTGFuZ0F0dHJp
YnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7
IGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KworICAgIHN0YXRpYyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzJiBzaGFyZWRSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzKCk7CiAKIHByaXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCi0gICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlcygpIHsgfQorICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMo
KTsKIAotICAgIHN0YXRpYyBib29sIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBzdGF0aWMg
Ym9vbCBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1dlYmtpdE5v
dGlmaWNhdGlvbnNFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7Ci0gICAg
c3RhdGljIGJvb2wgaXNHZW9sb2NhdGlvbkVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNJbmRl
eGVkREJFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzVG91Y2hFbmFibGVkOwotICAgIHN0YXRp
YyBib29sIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0RldmljZU9y
aWVudGF0aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1NwZWVjaElucHV0RW5hYmxlZDsK
LSAgICBzdGF0aWMgYm9vbCBpc0NhbnZhc1BhdGhFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlz
Q1NTRXhjbHVzaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNDU1NTaGFwZXNFbmFibGVk
OwotICAgIHN0YXRpYyBib29sIGlzQ1NTUmVnaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wg
aXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7Ci0gICAgV0VCQ09SRV9URVNUSU5HIHN0YXRpYyBib29s
IGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgYm9vbCBpc0xv
Y2FsU3RvcmFnZUVuYWJsZWQ7CisgICAgYm9vbCBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsKKyAg
ICBib29sIGlzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQ7CisgICAgYm9vbCBpc0FwcGxpY2F0
aW9uQ2FjaGVFbmFibGVkOworICAgIGJvb2wgaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7Cisg
ICAgYm9vbCBpc0dlb2xvY2F0aW9uRW5hYmxlZDsKKyAgICBib29sIGlzSW5kZXhlZERCRW5hYmxl
ZDsKKyAgICBib29sIGlzVG91Y2hFbmFibGVkOworICAgIGJvb2wgaXNEZXZpY2VNb3Rpb25FbmFi
bGVkOworICAgIGJvb2wgaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7CisgICAgYm9vbCBpc1Nw
ZWVjaElucHV0RW5hYmxlZDsKKyAgICBib29sIGlzQ2FudmFzUGF0aEVuYWJsZWQ7CisgICAgYm9v
bCBpc0NTU0V4Y2x1c2lvbnNFbmFibGVkOworICAgIGJvb2wgaXNDU1NTaGFwZXNFbmFibGVkOwor
ICAgIGJvb2wgaXNDU1NSZWdpb25zRW5hYmxlZDsKKyAgICBib29sIGlzQ1NTQ29tcG9zaXRpbmdF
bmFibGVkOworICAgIGJvb2wgaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxl
ZDsKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQotICAgIHN0YXRpYyBib29sIGlzU2NyaXB0
ZWRTcGVlY2hFbmFibGVkOworICAgIGJvb2wgaXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7CiAjZW5k
aWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgc3RhdGljIGJvb2wgaXNGaWxlU3lzdGVt
RW5hYmxlZDsKKyAgICBib29sIGlzRmlsZVN5c3RlbUVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0kxOE5fQVBJKQotICAgIHN0YXRpYyBib29sIGlzSmF2YVNjcmlwdEkx
OE5BUElFbmFibGVkOworICAgIGJvb2wgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgc3RhdGljIGJvb2wgaXNNZWRpYVN0
cmVhbUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7Cisg
ICAgYm9vbCBpc01lZGlhU3RyZWFtRW5hYmxlZDsKKyAgICBib29sIGlzUGVlckNvbm5lY3Rpb25F
bmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBzdGF0aWMgYm9vbCBp
c0dhbWVwYWRFbmFibGVkOworICAgIGJvb2wgaXNHYW1lcGFkRW5hYmxlZDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotICAgIHN0YXRpYyBib29sIGlz
TGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkOworICAgIGJvb2wgaXNMZWdhY3lDU1NWZW5k
b3JQcmVmaXhlc0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShRVU9UQSkKLSAgICBzdGF0
aWMgYm9vbCBpc1F1b3RhRW5hYmxlZDsKKyAgICBib29sIGlzUXVvdGFFbmFibGVkOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgc3RhdGljIGJvb2wgaXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZDsKKyAgICBib29sIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgc3RhdGljIGJvb2wgaXNNZWRpYVNvdXJj
ZUVuYWJsZWQ7CisgICAgYm9vbCBpc01lZGlhU291cmNlRW5hYmxlZDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICBzdGF0aWMgYm9vbCBpc0VuY3J5cHRlZE1lZGlh
RW5hYmxlZDsKKyAgICBib29sIGlzRW5jcnlwdGVkTWVkaWFFbmFibGVkOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgc3RhdGljIGJvb2wgaXNWaWRlb1RyYWNrRW5hYmxl
ZDsKKyAgICBib29sIGlzVmlkZW9UcmFja0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShT
SEFET1dfRE9NKQotICAgIHN0YXRpYyBib29sIGlzU2hhZG93RE9NRW5hYmxlZDsKKyAgICBib29s
IGlzU2hhZG93RE9NRW5hYmxlZDsKIAotICAgIHN0YXRpYyBib29sIGlzQXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQ7CisgICAgYm9vbCBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVs
ZW1lbnRFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQotICAg
IHN0YXRpYyBib29sIGlzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkOworICAgIGJvb2wgaXNDdXN0
b21ET01FbGVtZW50c0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQp
Ci0gICAgc3RhdGljIGJvb2wgaXNTdHlsZVNjb3BlZEVuYWJsZWQ7CisgICAgYm9vbCBpc1N0eWxl
U2NvcGVkRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURSkKLSAg
ICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZURhdGVFbmFibGVkOworICAgIGJvb2wgaXNJbnB1dFR5
cGVEYXRlRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVf
SU5DT01QTEVURSkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsK
KyAgICBib29sIGlzSW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBl
RGF0ZVRpbWVMb2NhbEVuYWJsZWQ7CisgICAgYm9vbCBpc0lucHV0VHlwZURhdGVUaW1lTG9jYWxF
bmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKLSAgICBzdGF0
aWMgYm9vbCBpc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsKKyAgICBib29sIGlzSW5wdXRUeXBlTW9u
dGhFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAgIHN0
YXRpYyBib29sIGlzSW5wdXRUeXBlVGltZUVuYWJsZWQ7CisgICAgYm9vbCBpc0lucHV0VHlwZVRp
bWVFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIHN0
YXRpYyBib29sIGlzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7CisgICAgYm9vbCBpc0lucHV0VHlwZVdl
ZWtFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgc3RhdGljIGJv
b2wgYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkOwor
ICAgIGJvb2wgYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFi
bGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIHN0YXRpYyBi
b29sIGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQ7CisgICAgYm9vbCBhcmVTZWFtbGVzc0lGcmFt
ZXNFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBz
dGF0aWMgYm9vbCBpc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsKKyAgICBib29sIGlzRm9udExvYWRF
dmVudHNFbmFibGVkOwogI2VuZGlmCiAKKyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8UnVudGlt
ZUVuYWJsZWRGZWF0dXJlcz47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNs
YXJhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgUHJvcGVydHlOYW1lUHJlZml4IGdldENTU1Byb3Bl
cnR5CiAgICAgc3dpdGNoIChmaXJzdENoYXIpIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5E
T1JfUFJFRklYRVMpCiAgICAgY2FzZSAnYSc6Ci0gICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpsZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSAmJiBtYXRjaGVzQ1NTUHJv
cGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikpCisgICAgICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkubGVnYWN5
Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZp
eChwcm9wZXJ0eU5hbWUsICJhcHBsZSIpKQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFt
ZVByZWZpeEFwcGxlOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtMTMwLDcgKzEzMCw3IEBA
IHN0YXRpYyBQcm9wZXJ0eU5hbWVQcmVmaXggZ2V0Q1NTUHJvcGVydHkKICAgICAgICAgYnJlYWs7
CiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQogICAgIGNhc2UgJ2snOgot
ICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4
ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUs
ICJraHRtbCIpKQorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVu
dGltZUVuYWJsZWRGZWF0dXJlcygpLmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpICYm
IG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAia2h0bWwiKSkKICAg
ICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXhLSFRNTDsKICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1By
b3BlcnR5SURGb3JKCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQogICAg
IGNhc2UgUHJvcGVydHlOYW1lUHJlZml4QXBwbGU6CiAgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVm
aXhLSFRNTDoKLSAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNT
U1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQ
cmVmaXhlc0VuYWJsZWQoKSk7CiAgICAgICAgIHdyaXRlV2ViS2l0UHJlZml4KGJ1ZmZlclB0cik7
CiAgICAgICAgIGkgKz0gNTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTU2
MzM1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwNiBB
bmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA2
IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+Ci0jIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9u
IE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMp
IDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCkBAIC0x
NDQ0LDExICsxNDQ0LDExIEBAIHN1YiBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lCiB7CiAg
ICAgbXkgJHNpZ25hdHVyZSA9IHNoaWZ0OwogCi0gICAgIyBJZiBhIHBhcmFtZXRlciBpcyBnaXZl
biAoZS5nLiAiRW5hYmxlZEF0UnVudGltZT1GZWF0dXJlTmFtZSIpIHJldHVybiB0aGUgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6e0ZlYXR1cmVOYW1lfUVuYWJsZWQoKSBtZXRob2QuCi0gICAgcmV0
dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoiIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1cmUt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0pIC4gIkVuYWJsZWQiIGlm
ICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9ICYm
ICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0gbmUg
IlZBTFVFX0lTX01JU1NJTkciKTsKKyAgICAjIElmIGEgcGFyYW1ldGVyIGlzIGdpdmVuIChlLmcu
ICJFbmFibGVkQXRSdW50aW1lPUZlYXR1cmVOYW1lIikgcmV0dXJuIHRoZSBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkue0ZlYXR1cmVOYW1lfUVu
YWJsZWQoKSBtZXRob2QuCisgICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuIiAuIFRvTWV0aG9kTmFtZSgkc2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSAuICJFbmFibGVkIiBpZiAo
JHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSAmJiAk
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9IG5lICJW
QUxVRV9JU19NSVNTSU5HIik7CiAKLSAgICAjIE90aGVyd2lzZSByZXR1cm4gYSBmdW5jdGlvbiBu
YW1lZCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp7bWV0aG9kTmFtZX1FbmFibGVkKCkuCi0gICAg
cmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoiIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1
cmUtPm5hbWUpIC4gIkVuYWJsZWQiOworICAgICMgT3RoZXJ3aXNlIHJldHVybiBhIGZ1bmN0aW9u
IG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMoKS57bWV0aG9kTmFtZX1FbmFibGVkKCkuCisgICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuIiAuIFRvTWV0aG9kTmFtZSgk
c2lnbmF0dXJlLT5uYW1lKSAuICJFbmFibGVkIjsKIH0KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAkocmV2aXNpb24gMTU2MzM1
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTAsNyArOTAsNyBAQCB2b2lkIENTU0ZvbnRGYWNlOjpmb250TG9hZGVkKENTU0ZvbnRGYWNl
CiAgICAgZm9udFNlbGVjdG9yLT5mb250TG9hZGVkKCk7CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FE
X0VWRU5UUykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNF
bmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZykgeworICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVu
dHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZykgewogICAgICAgICBpZiAoc291
cmNlLT5lbnN1cmVGb250RGF0YSgpKQogICAgICAgICAgICAgbm90aWZ5Rm9udExvYWRlcihMb2Fk
ZWQpOwogICAgICAgICBlbHNlIGlmICghaXNWYWxpZCgpKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZv
aWQgQ1NTRm9udEZhY2U6OmZvbnRMb2FkZWQoQ1NTRm9udEZhY2UKICAgICAgICAgKCppdCktPmZv
bnRMb2FkZWQodGhpcyk7CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkpCisgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5m
b250TG9hZEV2ZW50c0VuYWJsZWQoKSkKICAgICAgICAgbm90aWZ5TG9hZGluZ0RvbmUoKTsKICNl
bmRpZgogfQpAQCAtMTE4LDcgKzExOCw3IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IENT
U0ZvbnRGYWNlOjoKICAgICBDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciA9ICgqbV9zZWdt
ZW50ZWRGb250RmFjZXMuYmVnaW4oKSktPmZvbnRTZWxlY3RvcigpOwogCiAjaWYgRU5BQkxFKEZP
TlRfTE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2Fk
RXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IE5vdExvYWRlZCkKKyAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLmZvbnRM
b2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IE5vdExvYWRlZCkKICAgICAgICAg
bm90aWZ5Rm9udExvYWRlcihMb2FkaW5nKTsKICNlbmRpZgogCkBAIC0xMjcsNyArMTI3LDcgQEAg
UGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NTRm9udEZhY2U6OgogICAgICAgICBpZiAoUmVm
UHRyPFNpbXBsZUZvbnREYXRhPiByZXN1bHQgPSBtX3NvdXJjZXNbaV0tPmdldEZvbnREYXRhKGZv
bnREZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3ludGhldGljSXRhbGljLCBmb250U2VsZWN0
b3IpKSB7CiAgICAgICAgICAgICBtX2FjdGl2ZVNvdXJjZSA9IG1fc291cmNlc1tpXS5nZXQoKTsK
ICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICAgICAgICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBM
b2FkaW5nICYmIG1fc291cmNlc1tpXS0+aXNMb2FkZWQoKSkgeworICAgICAgICAgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5mb250
TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nICYmIG1fc291cmNl
c1tpXS0+aXNMb2FkZWQoKSkgewogICAgICAgICAgICAgICAgIG5vdGlmeUZvbnRMb2FkZXIoTG9h
ZGVkKTsKICAgICAgICAgICAgICAgICBub3RpZnlMb2FkaW5nRG9uZSgpOwogICAgICAgICAgICAg
fQpAQCAtMTM3LDcgKzEzNyw3IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IENTU0ZvbnRG
YWNlOjoKICAgICB9CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3Rh
dGUgPT0gTG9hZGluZykgeworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRS
dW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2Fk
U3RhdGUgPT0gTG9hZGluZykgewogICAgICAgICBub3RpZnlGb250TG9hZGVyKEVycm9yKTsKICAg
ICAgICAgbm90aWZ5TG9hZGluZ0RvbmUoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udFNlbGVjdG9yLmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNSw3ICsyMzUsNyBA
QCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKGNvCiAgICAgICAgICAgICBS
ZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlOwogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRT
KQogICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTIxMTYgLSBUaGlzIENTU0ZvbnRGYWNlUnVsZSBoYXMgbm8gcGFyZW50LgotICAg
ICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxl
ZCgpKQorICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKICAgICAgICAgICAg
ICAgICBydWxlID0gc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NGb250RmFjZVJ1bGU+KGZvbnRGYWNl
UnVsZS0+Y3JlYXRlQ1NTT01XcmFwcGVyKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBmb250RmFj
ZSA9IENTU0ZvbnRGYWNlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KHRyYWl0
c01hc2spLCBydWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAx
NTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTg2LDcgKzU4Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFBy
b3BlcnQKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVNYXJnaW46CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFNoYXBlUGFkZGluZzoKICAgICAgICAgYWNjZXB0c05lZ2F0aXZlTnVt
YmVycyA9IGZhbHNlOwotICAgICAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3Nz
U2hhcGVzRW5hYmxlZCgpOworICAgICAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKTsKICNlbmRp
ZgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6
CkBAIC0xMDMxLDEzICsxMDMxLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29y
ZFByb3BlcnQKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKLSAgICAgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxlZCgpKQorICAgICAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5jc3NFeGNs
dXNpb25zRW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAo
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdGggfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZU1heGltdW0gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNsZWFyKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRXcmFwVGhyb3VnaDoKLSAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NFeGNsdXNpb25zRW5hYmxlZCgpKQorICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5jc3NFeGNsdXNpb25zRW5hYmxlZCgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZVdyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTMwMDQsNyArMzAwNCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENT
U1Byb3BlcnR5SUQKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0U2hhcGVJbnNpZGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlT3V0c2lk
ZToKLSAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTaGFwZXNFbmFibGVk
KCkpCisgICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVu
YWJsZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTMwMTksNyArMzAxOSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKENTU1Byb3BlcnR5SUQKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZVBh
ZGRpbmc6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc1NoYXBlc0VuYWJsZWQoKSAmJiAhaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwg
Rk5vbk5lZykpOworICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuY3NzU2hhcGVzRW5hYmxlZCgpICYm
ICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnKSk7CiAgICAgICAgIGJy
ZWFrOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKQEAgLTEyMTky
LDcgKzEyMTkyLDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJRChjb25zdAog
I2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICAgICAgLy8gSWYgdGhl
IHByZWZpeCBpcyAtYXBwbGUtIG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0byAtd2Via2l0LS4KICAg
ICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0ZXIgbG9uZ2VyLgotICAg
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNF
bmFibGVkKCkKKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKQogICAg
ICAgICAgICAgJiYgKGhhc1ByZWZpeChidWZmZXIsIGxlbmd0aCwgIi1hcHBsZS0iKSB8fCBoYXNQ
cmVmaXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpKSB7CiAgICAgICAgICAgICBtZW1tb3Zl
KGJ1ZmZlciArIDcsIGJ1ZmZlciArIDYsIGxlbmd0aCArIDEgLSA2KTsKICAgICAgICAgICAgIG1l
bWNweShidWZmZXIsICItd2Via2l0IiwgNyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U2VnbWVudGVkRm9udEZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTZWdtZW50ZWRGb250RmFjZS5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcg
Kzc1LDcgQEAgdm9pZCBDU1NTZWdtZW50ZWRGb250RmFjZTo6Zm9udExvYWRlZChDUwogICAgIHBy
dW5lVGFibGUoKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiAhaXNMb2FkaW5n
KCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJs
ZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmICFpc0xvYWRpbmcoKSkgewog
ICAgICAgICBWZWN0b3I8UmVmUHRyPExvYWRGb250Q2FsbGJhY2s+ID4gY2FsbGJhY2tzOwogICAg
ICAgICBtX2NhbGxiYWNrcy5zd2FwKGNhbGxiYWNrcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBjYWxsYmFja3Muc2l6ZSgpOyArK2luZGV4KSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwxMiArMjA5LDEy
IEBAIHB1YmxpYzoKICAgICB7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKLSAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRv
d0RPTUVuYWJsZWQoKSB8fCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNjb3BlZEVuYWJs
ZWQoKSk7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50
aW1lRW5hYmxlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpIHx8IFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJs
ZWQoKSk7CiAjZWxzZQotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5
bGVTY29wZWRFbmFibGVkKCkpOworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsK
ICNlbmRpZgogI2Vsc2UKLSAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YWRvd0RPTUVuYWJsZWQoKSk7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKTsKICNl
bmRpZgogICAgICAgICBpZiAoIW1fc2NvcGVSZXNvbHZlcikKICAgICAgICAgICAgIG1fc2NvcGVS
ZXNvbHZlciA9IGFkb3B0UHRyKG5ldyBTdHlsZVNjb3BlUmVzb2x2ZXIoKSk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDgsMTIgKzExNDgsMTIgQEAgYm9v
bCBEb2N1bWVudDo6Y3NzU3RpY2t5UG9zaXRpb25FbmFibGVkKAogCiBib29sIERvY3VtZW50Ojpj
c3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmNzc1JlZ2lvbnNFbmFibGVkKCk7IAorICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuY3NzUmVnaW9uc0VuYWJsZWQo
KTsgCiB9CiAKIGJvb2wgRG9jdW1lbnQ6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0NvbXBvc2l0aW5nRW5hYmxl
ZCgpOworICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5h
YmxlZEZlYXR1cmVzKCkuY3NzQ29tcG9zaXRpbmdFbmFibGVkKCk7CiB9CiAKIGJvb2wgRG9jdW1l
bnQ6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgY29uc3QKQEAgLTU2OTksNyArNTY5OSw3IEBAIEhU
TUxJRnJhbWVFbGVtZW50KiBEb2N1bWVudDo6c2VhbWxlc3NQYXIKIGJvb2wgRG9jdW1lbnQ6OnNo
b3VsZERpc3BsYXlTZWFtbGVzc2x5V2l0aFBhcmVudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKElG
UkFNRV9TRUFNTEVTUykKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNlYW1sZXNz
SUZyYW1lc0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5zZWFtbGVzc0lGcmFtZXNFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVu
dCA9IHRoaXMtPm93bmVyRWxlbWVudCgpOwogICAgIGlmICghb3duZXJFbGVtZW50KQpAQCAtNTk3
Niw3ICs1OTc2LDcgQEAgYm9vbCBEb2N1bWVudDo6aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgYwog
TG9jYWxlJiBEb2N1bWVudDo6Z2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9j
YWxlKQogewogICAgIEF0b21pY1N0cmluZyBsb2NhbGVLZXkgPSBsb2NhbGU7Ci0gICAgaWYgKGxv
Y2FsZS5pc0VtcHR5KCkgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVB
d2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCisgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkgfHwg
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5s
YW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQogICAgICAgICBsb2NhbGVL
ZXkgPSBkZWZhdWx0TGFuZ3VhZ2UoKTsKICAgICBMb2NhbGVJZGVudGlmaWVyVG9Mb2NhbGVNYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX2xvY2FsZUNhY2hlLmFkZChsb2NhbGVLZXksIG51bGxwdHIp
OwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ3NSw3ICsxNDc1LDcgQEAgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBF
bGVtZW50OjpjcmVhdGVTaAogICAgICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CiAK
ICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
YXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoKSkgeworICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuYXV0aG9yU2hh
ZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoKSkgewogICAgICAgICBhZGRTaGFkb3dSb290KFNo
YWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCgpLCBTaGFkb3dSb290OjpBdXRob3JTaGFkb3dSb290
KSk7CiAgICAgICAgIHJldHVybiBzaGFkb3dSb290KCk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIFBvc2l0aW9uOjpQb3Np
dGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2gKICAgICAsIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRp
b24odHJ1ZSkKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBBU1NFUlQoKG1fYW5jaG9y
Tm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpIHx8ICFt
X2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JO
b2RlID09IGNvbnRhaW5lck5vZGUoKSk7CisgICAgQVNTRVJUKChtX2FuY2hvck5vZGUgJiYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLnNoYWRv
d0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRv
d1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKICNlbHNlCiAgICAg
QVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwg
bV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5vZGUoKSk7CiAjZW5kaWYKQEAgLTExMSw3ICsxMTEs
NyBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNoCiAgICAgLCBtX2lz
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGZhbHNlKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQot
ICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRv
d0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRv
d1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKKyAgICBBU1NFUlQo
KG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5h
YmxlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKSB8fCAhbV9hbmNob3JOb2RlIHx8ICFt
X2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpIHx8IG1fYW5jaG9yTm9kZSA9PSBjb250YWluZXJO
b2RlKCkpOwogI2Vsc2UKICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2Rl
LT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKICNl
bmRpZgpAQCAtMTMwLDcgKzEzMCw3IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5v
ZGU+IGFuY2gKICAgICAsIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CiAjaWYg
RU5BQkxFKFNIQURPV19ET00pCi0gICAgQVNTRVJUKChtX2FuY2hvck5vZGUgJiYgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKQorICAgIEFTU0VSVCgobV9hbmNob3JO
b2RlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMoKS5zaGFkb3dET01FbmFibGVkKCkpCiAgICAgICAgICAgIHx8ICFtX2FuY2hvck5vZGUgfHwg
IWVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkpIHx8ICFtX2FuY2hvck5v
ZGUtPmlzU2hhZG93Um9vdCgpKTsKICNlbHNlCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwg
IWVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkpIHx8ICFtX2FuY2hvck5v
ZGUtPmlzU2hhZG93Um9vdCgpKTsKQEAgLTg3NSw3ICs4NzUsNyBAQCBDb250YWluZXJOb2RlKiBQ
b3NpdGlvbjo6ZmluZFBhcmVudChjb25zCiAgICAgLy8gRklYTUU6IFNlZSBodHRwOi8vd2ViLnVn
LzgyNjk3CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGUuY3BwCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIERPTVNl
bGVjdGlvbiogVHJlZVNjb3BlOjpnZXRTZWxlY3Rpb24oKQogICAgIC8vIGFzIGEgY29udGFpbmVy
LiBJdCBpcyBub3cgZW5hYmxlZCBvbmx5IGlmIHJ1bnRpbWUgU2hhZG93IERPTSBmZWF0dXJlIGlz
IGVuYWJsZWQuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04MjY5NwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQo
KSkgewogICAgICAgICBtX3NlbGVjdGlvbiA9IERPTVNlbGVjdGlvbjo6Y3JlYXRlKHRoaXMpOwog
ICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L21ha2VfbmFtZXMucGwJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9t
YWtlX25hbWVzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsNyArNDEwLDcgQEAgRU5ECiAgICAg
bXkgJHJ1bnRpbWVDb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17cnVudGltZUNv
bmRpdGlvbmFsfTsKICAgICBpZiAoJHJ1bnRpbWVDb25kaXRpb25hbCkgewogICAgICAgICBwcmlu
dCBGIDw8RU5ECi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoke3J1bnRpbWVDb25k
aXRpb25hbH1FbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuJHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgp
KQogICAgICAgICByZXR1cm4gMDsKIEVORAogOwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgRU5ECiAg
ICAgICAgICAgICBwcmludCBGIDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUke0pT
SW50ZXJmYWNlTmFtZX1XcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4g
ZWxlbWVudCkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiR7cnVudGltZUNv
bmRpdGlvbmFsfUVuYWJsZWQoKSkgeworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJs
ZWQoKSkgewogICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgZWxlbWVudC0+aXMkcGFyYW1ldGVy
c3tmYWxsYmFja0ludGVyZmFjZU5hbWV9KCkpOwogICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9X
UkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7ZmFsbGJhY2tKU0ludGVyZmFj
ZU5hbWV9LCBlbGVtZW50LmdldCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NDYsNyArMTY0
Niw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNTdGVwcGFibGUoKSBjb24KIGJvb2wgSFRN
TElucHV0RWxlbWVudDo6aXNTcGVlY2hFbmFibGVkKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
QWRkIHN1cHBvcnQgZm9yIFJBTkdFLCBFTUFJTCwgVVJMLCBDT0xPUiBhbmQgREFURS9USU1FIGlu
cHV0IHR5cGVzLgotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdFNwZWVjaEF0
dHJpYnV0ZSgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNwZWVjaElucHV0RW5hYmxlZCgp
ICYmIGhhc0F0dHJpYnV0ZSh3ZWJraXRzcGVlY2hBdHRyKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5
cGUtPnNob3VsZFJlc3BlY3RTcGVlY2hBdHRyaWJ1dGUoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc3BlZWNoSW5wdXRFbmFibGVkKCkg
JiYgaGFzQXR0cmlidXRlKHdlYmtpdHNwZWVjaEF0dHIpOwogfQogCiAjZW5kaWYKQEAgLTE5NTAs
NyArMTk1MCw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob28KICAg
ICBwYXJhbWV0ZXJzLm1pbmltdW0gPSBtaW5pbXVtKCk7CiAgICAgcGFyYW1ldGVycy5tYXhpbXVt
ID0gbWF4aW11bSgpOwogICAgIHBhcmFtZXRlcnMucmVxdWlyZWQgPSBpc1JlcXVpcmVkKCk7Ci0g
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
UnVudGltZUVuYWJsZWRGZWF0dXJlcygpLmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlF
bmFibGVkKCkpCiAgICAgICAgIHBhcmFtZXRlcnMubG9jYWxlID0gZGVmYXVsdExhbmd1YWdlKCk7
CiAgICAgZWxzZSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBjb21wdXRlZExvY2FsZSA9IGNvbXB1
dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzUsNyArNTM1LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbAogI2VuZGlmCiAgICAgCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHRyYWNrRGVzY2VuZGFudHMgPSBkZXNjZW5k
YW50c09mVHlwZTxIVE1MVHJhY2tFbGVtZW50Pih0aGlzKTsKQEAgLTY2OSw3ICs2NjksNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVsYXllZEFjCiAgICAgfQogCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpICYmIChhY3Rpb25UeXBlICYgQ29uZmlndXJlVGV4dFRyYWNrcykp
CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChhY3Rpb25UeXBlICYgQ29uZmln
dXJlVGV4dFRyYWNrcykpCiAgICAgICAgIHNldEZsYWdzKG1fcGVuZGluZ0FjdGlvbkZsYWdzLCBD
b25maWd1cmVUZXh0VHJhY2tzKTsKICNlbmRpZgogCkBAIC03MDYsNyArNzA2LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaQogICAgIFJlZjxIVE1MTWVkaWFFbGVt
ZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gbG9hZE5leHRTb3VyY2VDaGlsZCBtYXkgZmlyZSAnYmVm
b3JlbG9hZCcsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogCiAjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChtX3BlbmRpbmdBY3Rpb25GbGFncyAmIENvbmZpZ3Vy
ZVRleHRUcmFja3MpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50
aW1lRW5hYmxlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSAmJiAobV9wZW5k
aW5nQWN0aW9uRmxhZ3MgJiBDb25maWd1cmVUZXh0VHJhY2tzKSkKICAgICAgICAgY29uZmlndXJl
VGV4dFRyYWNrcygpOwogI2VuZGlmCiAKQEAgLTcxOCw3ICs3MTgsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpCiAgICAgfQogCiAjaWYgVVNFKFBMQVRGT1JNX1RF
WFRfVFJBQ0tfTUVOVSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSAmJiAobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBUZXh0VHJhY2tDaGFu
Z2VzTm90aWZpY2F0aW9uKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
UnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKG1f
cGVuZGluZ0FjdGlvbkZsYWdzICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNhdGlvbikpCiAgICAg
ICAgIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CiAjZW5kaWYKIApAQCAt
ODMzLDcgKzgzMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQog
ICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQpOwogICAgICAg
ICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAg
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KQorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJs
ZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgICAgICB1cGRh
dGVBY3RpdmVUZXh0VHJhY2tDdWVzKDApOwogI2VuZGlmCiAgICAgfQpAQCAtODk4LDcgKzg5OCw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKIAogICAgIC8vIEhUTUxN
ZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NBcmVSZWFkeSB3aWxsIG5lZWQgIi4uLiB0aGUgdGV4dCB0
cmFja3Mgd2hvc2UgbW9kZSB3YXMgbm90IGluIHRoZQogICAgIC8vIGRpc2FibGVkIHN0YXRlIHdo
ZW4gdGhlIGVsZW1lbnQncyByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtIGxhc3Qgc3RhcnRl
ZCIuCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVu
YWJsZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKICAgICAgICAgbV90
ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4uY2xlYXIoKTsKICAgICAgICAgaWYg
KG1fdGV4dFRyYWNrcykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewpAQCAtMTgyMiw3ICsxODIyLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZAogICAgIFJlYWR5U3RhdGUgbmV3U3Rh
dGUgPSBzdGF0aWNfY2FzdDxSZWFkeVN0YXRlPihzdGF0ZSk7CiAKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCi0gICAgYm9vbCB0cmFja3NBcmVSZWFkeSA9ICFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHx8IHRleHRUcmFja3NBcmVSZWFkeSgpOworICAg
IGJvb2wgdHJhY2tzQXJlUmVhZHkgPSAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVu
dGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgfHwgdGV4dFRy
YWNrc0FyZVJlYWR5KCk7CiAKICAgICBpZiAobmV3U3RhdGUgPT0gb2xkU3RhdGUgJiYgbV90cmFj
a3NBcmVSZWFkeSA9PSB0cmFja3NBcmVSZWFkeSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkyNyw3
ICsxOTI3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZAogICAg
IHVwZGF0ZVBsYXlTdGF0ZSgpOwogICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogI2lmIEVO
QUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAg
ICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiAjZW5kaWYK
IH0KQEAgLTI4MTAsNyArMjgxMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQ
cm9ncmVzc1QKICAgICAgICAgbWVkaWFDb250cm9scygpLT5wbGF5YmFja1Byb2dyZXNzZWQoKTsK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7
CiAjZW5kaWYKIH0KQEAgLTI4NjIsNyArMjg2Miw3IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50
OjpwZXJjZW50TG9hZGVkKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRp
ZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7
Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJs
ZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKSk7
CkBAIC0yODcwLDcgKzI4NzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVy
RGlkQWRkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJh
Y2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKLSAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1
cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAog
ICAgIC8vIDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAgLTI5MDUs
NyArMjkwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGQKIAog
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1Jl
ZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFkZFZpZGVvVHJhY2so
VmlkZW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKSk7CkBAIC0zMDEwLDcgKzMwMTAsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNsb3NlQ2FwdGlvblRyYWNrCiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6YWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrKQog
ewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdWRpb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOwpAQCAtMzAxOCw3ICszMDE4LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFBhcwogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCiB7
Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJs
ZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHRleHRUcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKQEAgLTMwMjgsNyArMzAyOCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFBhc3MKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2spCiB7
Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJs
ZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIHZpZGVvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7CkBAIC0zMDM2LDcgKzMwMzYsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soUGFzCiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKiB0cmFjaykKIHsKLSAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1
cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9hdWRpb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKQEAgLTMwNDQsNyArMzA0NCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjaygKIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkud2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhY2tEaXNw
bGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CkBAIC0zMDU5LDcgKzMwNTksNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkud2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV92aWRlb1Ry
YWNrcy0+cmVtb3ZlKHRyYWNrKTsKQEAgLTMwODYsNyArMzA4Niw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHIKIAogUGFzc1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxN
ZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIC8vIDQuOC4xMC4xMi40IFRleHQgdHJhY2sgQVBJCkBAIC0zMTIzLDcgKzMxMjMsNyBA
QCBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6CiAKIEF1ZGlvVHJhY2tM
aXN0KiBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcygpCiB7Ci0gICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX2F1
ZGlvVHJhY2tzKQpAQCAtMzEzNCw3ICszMTM0LDcgQEAgQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRp
YUVsZW1lbnQ6OmF1ZGlvVAogCiBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0
VHJhY2tzKCkgCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
UnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX3RleHRUcmFja3MpCkBAIC0zMTQ1LDcgKzMxNDUs
NyBAQCBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhCiAKIFZpZGVvVHJh
Y2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1RyYWNrcygpCiB7Ci0gICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFt
X3ZpZGVvVHJhY2tzKQpAQCAtMzE1OCw3ICszMTU4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaWRBZGRUZXh0VHJhY2soSAogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05h
bWUodHJhY2tUYWcpKTsKIAotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFu
ZCB0ZXh0IHRyYWNrcwpAQCAtMzE4NCw3ICszMTg0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpkaWRSZW1vdmVUZXh0VHJhYwogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05h
bWUodHJhY2tUYWcpKTsKIAotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICNpZiAhTE9HX0RJU0FCTEVECkBAIC0zNjI2LDcgKzM2MjYsNyBA
QCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoCiAgICAgTE9HKE1lZGlh
LCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCIpOwogCiAjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAg
ICAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKICNlbmRpZgog
CkBAIC00MTE3LDcgKzQxMTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxs
ZWRMb2FkCiAgICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOwogICAgIHVwZGF0ZU1lZGlh
Q29udHJvbGxlcigpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoMCk7
CiAjZW5kaWYKIH0KQEAgLTQ0ODMsNyArNDQ4Myw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6
aGFzQ2xvc2VkQ2FwdGlvbnMKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpIHx8ICFtX3RleHRUcmFja3MpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSB8fCAhbV90ZXh0VHJhY2tzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKSB7CkBA
IC00NTI3LDcgKzQ1MjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRp
b25zCiAgICAgbV9wbGF5ZXItPnNldENsb3NlZENhcHRpb25zVmlzaWJsZShjbG9zZWRDYXB0aW9u
VmlzaWJsZSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpIHsKICAgICAgICAgbWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNr
c0FzVW5jb25maWd1cmVkKEltbWVkaWF0ZWx5KTsKICAgICAgICAgdXBkYXRlVGV4dFRyYWNrRGlz
cGxheSgpOwogICAgIH0KQEAgLTQ3MjcsNyArNDcyNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6Y29uZmlndXJlVGV4dFRyYWMKIAogICAgIG1lZGlhQ29udHJvbHMoKS0+Y2hhbmdlZENsb3Nl
ZENhcHRpb25zVmlzaWJpbGl0eSgpOwogICAgIAotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKSB7CiAgICAgICAgIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKICAgICAgICAg
dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjMzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjbwogICAgIGlmIChuYW1lID09IHRpdGxlQXR0ciAmJiBzaGVldCgpKQogICAgICAgICBzaGVl
dCgpLT5zZXRUaXRsZSh2YWx1ZSk7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICBlbHNl
IGlmIChuYW1lID09IHNjb3BlZEF0dHIgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVT
Y29wZWRFbmFibGVkKCkpCisgICAgZWxzZSBpZiAobmFtZSA9PSBzY29wZWRBdHRyICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5zdHlsZVNj
b3BlZEVuYWJsZWQoKSkKICAgICAgICAgc2NvcGVkQXR0cmlidXRlQ2hhbmdlZCghdmFsdWUuaXNO
dWxsKCkpOwogI2VuZGlmCiAgICAgZWxzZSBpZiAobmFtZSA9PSBtZWRpYUF0dHIpIHsKQEAgLTEw
MSw3ICsxMDEsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsCiAj
aWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6c2NvcGVkQXR0
cmlidXRlQ2hhbmdlZChib29sIHNjb3BlZCkKIHsKLSAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkpOworICAgIEFTU0VSVChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFi
bGVkKCkpOwogCiAgICAgaWYgKCFpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1
OSw3ICsxNTksNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aFNjb3BpCiAK
IHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY29waW5nTm9kZShDb250YWlu
ZXJOb2RlKiBzY29wZSkKIHsKLSAgICBBU1NFUlQobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0
YXRlICE9IE5vdFJlZ2lzdGVyZWQgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2Nv
cGVkRW5hYmxlZCgpKTsKKyAgICBBU1NFUlQobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRl
ICE9IE5vdFJlZ2lzdGVyZWQgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSk7CiAgICAgaWYgKCFpc1Jl
Z2lzdGVyZWRBc1Njb3BlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3Nyw3ICsxNzcsNyBA
QCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoU2NvCiAKIGJvb2wgSFRNTFN0
eWxlRWxlbWVudDo6c2NvcGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkgJiYgZmFzdEhhc0F0dHJpYnV0ZShzY29wZWRB
dHRyKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVu
YWJsZWRGZWF0dXJlcygpLnN0eWxlU2NvcGVkRW5hYmxlZCgpICYmIGZhc3RIYXNBdHRyaWJ1dGUo
c2NvcGVkQXR0cik7CiB9CiAKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6c2V0U2NvcGVkKGJvb2wg
c2NvcGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5j
cHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBIVE1MVHJhY2tF
bGVtZW50OjpyZW1vdmVkRnJvbShDb250YQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7Ci0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVu
dGltZUVuYWJsZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKICAgICAg
ICAgaWYgKG5hbWUgPT0gc3JjQXR0cikgewogICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCk7CkBAIC0xOTYsNyArMTk2LDcgQEAg
dm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQogICAgIGlmIChtX2xvYWRUaW1l
ci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gMi4gSWYgdGhlIHRleHQg
dHJhY2sncyB0ZXh0IHRyYWNrIG1vZGUgaXMgbm90IHNldCB0byBvbmUgb2YgaGlkZGVuIG9yIHNo
b3dpbmcsIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgSFRNTFRy
YWNrRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGkKIAogYm9vbCBIVE1MVHJhY2tFbGVtZW50Ojpj
YW5Mb2FkVXJsKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSFRNTE1lZGlhRWxlbWVu
dCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
Y3BwCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDE1ICs5OSwxNSBAQCBzdGF0aWMgT3duUHRyPElucHV0
VHlwZUZhY3RvcnlNYXA+IGNyZWF0CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmNvbG9y
KCksICZDb2xvcklucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0RBVEUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVF
bmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMoKS5pbnB1dFR5cGVEYXRlRW5hYmxlZCgpKQogICAgICAgICBtYXAtPmFk
ZChJbnB1dFR5cGVOYW1lczo6ZGF0ZSgpLCAmRGF0ZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpCi0gICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCgpKQorICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCku
aW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKCkpCiAgICAgICAgIG1hcC0+YWRkKElucHV0VHlwZU5h
bWVzOjpkYXRldGltZSgpLCAmRGF0ZVRpbWVJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKQotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgpKQorICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuaW5wdXRU
eXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFt
ZXM6OmRhdGV0aW1lbG9jYWwoKSwgJkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmNyZWF0ZSk7CiAj
ZW5kaWYKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZW1haWwoKSwgJkVtYWlsSW5wdXRU
eXBlOjpjcmVhdGUpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBPd25QdHI8SW5wdXRUeXBl
RmFjdG9yeU1hcD4gY3JlYXQKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6aGlkZGVuKCks
ICZIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZSk7CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6
OmltYWdlKCksICZJbWFnZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9NT05USCkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlTW9udGhF
bmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMoKS5pbnB1dFR5cGVNb250aEVuYWJsZWQoKSkKICAgICAgICAgbWFwLT5h
ZGQoSW5wdXRUeXBlTmFtZXM6Om1vbnRoKCksICZNb250aElucHV0VHlwZTo6Y3JlYXRlKTsKICNl
bmRpZgogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpudW1iZXIoKSwgJk51bWJlcklucHV0
VHlwZTo6Y3JlYXRlKTsKQEAgLTEyNywxMiArMTI3LDEyIEBAIHN0YXRpYyBPd25QdHI8SW5wdXRU
eXBlRmFjdG9yeU1hcD4gY3JlYXQKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6c3VibWl0
KCksICZTdWJtaXRJbnB1dFR5cGU6OmNyZWF0ZSk7CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFt
ZXM6OnRlbGVwaG9uZSgpLCAmVGVsZXBob25lSW5wdXRUeXBlOjpjcmVhdGUpOwogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX1RJTUUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0
VHlwZVRpbWVFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5pbnB1dFR5cGVUaW1lRW5hYmxlZCgpKQogICAgICAg
ICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dGltZSgpLCAmVGltZUlucHV0VHlwZTo6Y3JlYXRl
KTsKICNlbmRpZgogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjp1cmwoKSwgJlVSTElucHV0
VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVXZWVrRW5hYmxlZCgpKQorICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuaW5wdXRU
eXBlV2Vla0VuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OndlZWso
KSwgJldlZWtJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYKICAgICAvLyBObyBuZWVkIHRvIHJl
Z2lzdGVyICJ0ZXh0IiBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IHR5cGUuCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50RWxlbWVudC5jcHAJKHJl
dmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hUTUxDb250ZW50
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgdXNpbmcgSFRNTE5h
bWVzOjpzZWxlY3RBdHRyOwogCiBjb25zdCBRdWFsaWZpZWROYW1lJiBIVE1MQ29udGVudEVsZW1l
bnQ6OmNvbnRlbnRUYWdOYW1lKERvY3VtZW50JikKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiBIVE1MTmFtZXM6OndlYmtpdFNoYWRvd0NvbnRlbnRUYWc7CiAgICAg
cmV0dXJuIEhUTUxOYW1lczo6Y29udGVudFRhZzsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTkwNSw3ICsxOTA1LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9y
dEJsb2NrZQogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmV4cGVyaW1lbnRhbEZlYXR1cmVz
RW5hYmxlZCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKENTUF9ORVhUKQotICAgIHJldHVybiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0
dXJlc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
UnVudGltZUVuYWJsZWRGZWF0dXJlcygpLmV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGlj
eUZlYXR1cmVzRW5hYmxlZCgpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyNCwxMCAr
MTYyNCwxMCBAQCBib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBCiAgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCAmJiBh
bGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIGFkZEJlZm9yZVVubG9h
ZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50ICYm
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmljZU1vdGlvbkVuYWJsZWQoKSkgeworICAgIGVs
c2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQgJiYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLmRldmlj
ZU1vdGlvbkVuYWJsZWQoKSkgewogICAgICAgICBpZiAoRGV2aWNlTW90aW9uQ29udHJvbGxlciog
Y29udHJvbGxlciA9IERldmljZU1vdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSgpKSkKICAgICAg
ICAgICAgIGNvbnRyb2xsZXItPmFkZERldmljZUV2ZW50TGlzdGVuZXIodGhpcyk7Ci0gICAgfSBl
bHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQg
JiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkpIHsK
KyAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRp
b25FdmVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZl
YXR1cmVzKCkuZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkpIHsKICAgICAgICAgaWYgKERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IERldmljZU9yaWVudGF0aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlKCkpKQogICAgICAgICAgICAgY29udHJvbGxlci0+YWRkRGV2aWNl
RXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3NjYsNyArMjc2Niw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpw
ZXJmb3JtUG9zdExheW91dFRhc2tzKCkKICAgICAgICAgZnJhbWUoKS5sb2FkZXIoKS5kaWRMYXlv
dXQobWlsZXN0b25lc0FjaGlldmVkKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQot
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSkK
KyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0
dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpKQogICAgICAgICBmcmFtZSgpLmRvY3VtZW50
KCktPmZvbnRsb2FkZXIoKS0+ZGlkTGF5b3V0KCk7CiAjZW5kaWYKICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkocmV2aXNpb24gMTU2MzM1
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsMTUgKzY2LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmdzJiBzZXR0aW5ncykKLSAgICA6IG1f
b3JpZ2luYWxDU1NFeGNsdXNpb25zRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NF
eGNsdXNpb25zRW5hYmxlZCgpKQotICAgICwgbV9vcmlnaW5hbENTU1NoYXBlc0VuYWJsZWQoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCgpKQorICAgIDogbV9vcmlnaW5h
bENTU0V4Y2x1c2lvbnNFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMoKS5jc3NFeGNsdXNpb25zRW5hYmxlZCgpKQorICAgICwgbV9vcmln
aW5hbENTU1NoYXBlc0VuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKSkKICAgICAsIG1fb3JpZ2luYWxD
U1NWYXJpYWJsZXNFbmFibGVkKHNldHRpbmdzLmNzc1ZhcmlhYmxlc0VuYWJsZWQoKSkKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLSAgICAsIG1fb3JpZ2luYWxTaGFkb3dET01FbmFibGVkKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkKLSAgICAsIG1fb3JpZ2luYWxB
dXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjphdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpKQorICAgICwgbV9vcmlnaW5h
bFNoYWRvd0RPTUVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVu
YWJsZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkKKyAgICAsIG1fb3JpZ2luYWxBdXRo
b3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuYXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVu
dEVuYWJsZWQoKSkKICNlbmRpZgogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi0gICAgLCBtX29y
aWdpbmFsU3R5bGVTY29wZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFi
bGVkKCkpCisgICAgLCBtX29yaWdpbmFsU3R5bGVTY29wZWQoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLnN0eWxlU2NvcGVkRW5hYmxlZCgpKQog
I2VuZGlmCiAgICAgLCBtX29yaWdpbmFsRWRpdGluZ0JlaGF2aW9yKHNldHRpbmdzLmVkaXRpbmdC
ZWhhdmlvclR5cGUoKSkKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtODUsNyArODUs
NyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChTZXR0aW5nCiAgICAgLCBtX29y
aWdpbmFsTWVkaWFUeXBlT3ZlcnJpZGUoc2V0dGluZ3MubWVkaWFUeXBlT3ZlcnJpZGUoKSkKICAg
ICAsIG1fb3JpZ2luYWxDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKHNldHRpbmdzLmNhbnZh
c1VzZXNBY2NlbGVyYXRlZERyYXdpbmcoKSkKICAgICAsIG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFy
c0VuYWJsZWQoc2V0dGluZ3MubW9ja1Njcm9sbGJhcnNFbmFibGVkKCkpCi0gICAgLCBtX2xhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCisgICAgLCBtX2xhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZCgpKQogICAgICwgbV9pbWFnZXNFbmFibGVkKHNldHRpbmdzLmFyZUltYWdl
c0VuYWJsZWQoKSkKICAgICAsIG1fbWluaW11bVRpbWVySW50ZXJ2YWwoc2V0dGluZ3MubWluRE9N
VGltZXJJbnRlcnZhbCgpKQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTEwMiwxNSArMTAy
LDE1IEBAIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmcKIAogdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3MpCiB7
Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQobV9v
cmlnaW5hbENTU0V4Y2x1c2lvbnNFbmFibGVkKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzZXRDU1NTaGFwZXNFbmFibGVkKG1fb3JpZ2luYWxDU1NTaGFwZXNFbmFibGVkKTsKKyAgICBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQobV9vcmlnaW5hbENTU0V4Y2x1c2lvbnNFbmFibGVkKTsKKyAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCku
c2V0Q1NTU2hhcGVzRW5hYmxlZChtX29yaWdpbmFsQ1NTU2hhcGVzRW5hYmxlZCk7CiAgICAgc2V0
dGluZ3Muc2V0Q1NTVmFyaWFibGVzRW5hYmxlZChtX29yaWdpbmFsQ1NTVmFyaWFibGVzRW5hYmxl
ZCk7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0U2hhZG93RE9NRW5hYmxlZChtX29yaWdpbmFsU2hhZG93RE9NRW5hYmxlZCk7Ci0gICAgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJs
ZWQobV9vcmlnaW5hbEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKTsKKyAgICBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc2V0
U2hhZG93RE9NRW5hYmxlZChtX29yaWdpbmFsU2hhZG93RE9NRW5hYmxlZCk7CisgICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygpLnNldEF1dGhv
clNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKG1fb3JpZ2luYWxBdXRob3JTaGFkb3dET01G
b3JBbnlFbGVtZW50RW5hYmxlZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQot
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChtX29yaWdp
bmFsU3R5bGVTY29wZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMoKS5zZXRTdHlsZVNjb3BlZEVuYWJsZWQobV9vcmlnaW5hbFN0eWxl
U2NvcGVkKTsKICNlbmRpZgogICAgIHNldHRpbmdzLnNldEVkaXRpbmdCZWhhdmlvclR5cGUobV9v
cmlnaW5hbEVkaXRpbmdCZWhhdmlvcik7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAg
LTEyMSw3ICsxMjEsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRv
CiAgICAgc2V0dGluZ3Muc2V0TWVkaWFUeXBlT3ZlcnJpZGUobV9vcmlnaW5hbE1lZGlhVHlwZU92
ZXJyaWRlKTsKICAgICBzZXR0aW5ncy5zZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKG1f
b3JpZ2luYWxDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKTsKICAgICBzZXR0aW5ncy5zZXRN
b2NrU2Nyb2xsYmFyc0VuYWJsZWQobV9vcmlnaW5hbE1vY2tTY3JvbGxiYXJzRW5hYmxlZCk7Ci0g
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRy
b2xVSUVuYWJsZWQobV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk7Cisg
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygp
LnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKG1fbGFuZ0F0dHJpYnV0
ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOwogICAgIHNldHRpbmdzLnNldEltYWdlc0VuYWJs
ZWQobV9pbWFnZXNFbmFibGVkKTsKICAgICBzZXR0aW5ncy5zZXRNaW5ET01UaW1lckludGVydmFs
KG1fbWluaW11bVRpbWVySW50ZXJ2YWwpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTIx
NSw3ICsyMTUsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFNoYWRvd0RPTUVuYWJsCiAg
ICAgfQogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc2V0U2hhZG93RE9NRW5hYmxlZChl
bmFibGVkKTsKICNlbHNlCiAgICAgLy8gRXZlbiBTSEFET1dfRE9NIGlzIG9mZiwgSW50ZXJuYWxT
ZXR0aW5ncyBhbGxvd3Mgc2V0U2hhZG93RE9NRW5hYmxlZChmYWxzZSkgdG8KICAgICAvLyBoYXZl
IGJyb2FkZXIgdGVzdCBjb3ZlcmFnZS4gQnV0IGl0IGNhbm5vdCBiZSBzZXRTaGFkb3dET01FbmFi
bGVkKHRydWUpLgpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0
U2hhZG93RE9NRW5hYmwKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0QXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNIQURP
V19ET00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0QXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQoaXNFbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc2V0QXV0aG9yU2hhZG93RE9NRm9yQW55
RWxlbWVudEVuYWJsZWQoaXNFbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGlzRW5h
YmxlZCk7CiAjZW5kaWYKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6
OnNldEF1dGhvclNoYWRvd0RPCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFN0eWxlU2NvcGVk
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQoZW5hYmxlZCk7Cisg
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJsZWRGZWF0dXJlcygp
LnNldFN0eWxlU2NvcGVkRW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGVuYWJsZWQpOwogI2VuZGlmCkBAIC0zNDYsMTMgKzM0NiwxMyBAQCB2b2lkIEludGVybmFsU2V0
dGluZ3M6OnNldFRleHRBdXRvc2l6aW5nCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldENTU0V4
Y2x1c2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKGVjKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NFeGNs
dXNpb25zRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkuc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQoZW5hYmxl
ZCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0Q1NTU2hhcGVzRW5hYmxlZChib29s
IGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0g
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTU2hhcGVzRW5hYmxlZChlbmFibGVkKTsK
KyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVz
KCkuc2V0Q1NTU2hhcGVzRW5hYmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBJbnRlcm5hbFNldHRp
bmdzOjpzZXRDU1NWYXJpYWJsZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRTdG9yYWdl
QmxvY2tpbgogCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZv
cm1Db250cm9sVUlFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChlbmFibGVk
KTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1
cmVzKCkuc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoZW5hYmxlZCk7
CiB9CiAKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjM4MCkKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDktMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dpbmRvd3NdIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgU2luZ2xldG9u
IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW46Cisg
ICAgICAgIEV4cG9zZSBzaW5nbGV0b24gYWNjZXNzb3IgZm9yIERMTCBjbGllbnRzLgorCiAyMDEz
LTA5LTIzICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCiAgICAgICAg
IENsZWFudXAgQ01ha2UgZmlsZXMgaW4gV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktp
dC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVy
YXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dl
YktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5k
ZWYuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIzNyw4ICsyMzcsNiBAQCBFWFBPUlRTCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxl
ckBXZWJDb3JlQEBRQUVYWFosID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxl
ckBXZWJDb3JlQEBRRUFBWFhaKQogI2VuZGlmCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9p
c0FjdGl2ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFosID9pc0FjdGl2
ZUluc2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QRUJWTm9kZUAxQEBaKQotICAgICAgICA/aXND
U1NFeGNsdXNpb25zRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEK
LSAgICAgICAgP2lzQ1NTU2hhcGVzRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNv
cmVAQDBfTkEKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2lzUHJlbG9hZGVkQENhY2hlZFJl
c291cmNlTG9hZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFosID9pc1ByZWxvYWRl
ZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRRUJBX05BRUJWU3RyaW5nQFdURkBAQFop
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1
ZUBKU0NAQFBBVkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0
ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWiwgP2pzQXJyYXlAV2ViQ29yZUBAWUE/
QVZKU1ZhbHVlQEpTQ0BAUEVBVkV4ZWNTdGF0ZUAzQFBFQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/
JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFopCiAgICAgICAgIHN5
bWJvbFdpdGhQb2ludGVyKD9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnRAV2ViQ29yZUBAUUJFX05YWiwgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRRUJBX05YWikKQEAgLTI5OSw2ICsyOTcsNyBA
QCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zZXRQc2V1ZG9ARWxlbWVudEBX
ZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAQFosID9zZXRQc2V1ZG9ARWxlbWVudEBX
ZWJDb3JlQEBRRUFBWEFFQlZBdG9taWNTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP3NldE1lZGlhVHlwZU92ZXJyaWRlQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZT
dHJpbmdAV1RGQEBAWiwgP3NldE1lZGlhVHlwZU92ZXJyaWRlQFNldHRpbmdzQFdlYkNvcmVAQFFF
QUFYQUVCVlN0cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0dGlu
Z3NARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWiwgP3NldHRpbmdzQERvY3Vt
ZW50QFdlYkNvcmVAQFFFQkFQRUFWU2V0dGluZ3NAMkBYWikKKyAgICAgICAgP3NoYXJlZFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXNAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEBTQUFBVjEy
QFhaCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zdWJzdHJpbmdAU3RyaW5nQFdURkBAUUJF
P0FWMTJASUlAWiwgP3N1YnN0cmluZ0BTdHJpbmdAV1RGQEBRRUJBP0FWMTJASUlAWikKICAgICAg
ICAgc3ltYm9sV2l0aFBvaW50ZXIoP3N1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2Vi
Q29yZUBAUUJFQUJWU3RyaW5nQFdURkBAWFosID9zdWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVt
ZW50QFdlYkNvcmVAQFFFQkFBRUJWU3RyaW5nQFdURkBAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQ
b2ludGVyKD90YXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFQUJWU3RyaW5nQFdURkBAWFos
ID90YXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUVCQUFFQlZTdHJpbmdAV1RGQEBYWikKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjM4MCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA5LTI0ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBS
ZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6IFVzZSBzaW5nbGV0b24g
YWNjZXNzb3IKKwogMjAxMy0wOS0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBbV2luZG93c10gVW5yZXZpZXdlZCBjcmFzaCBmaXggYWZ0ZXIgcjE1NjMy
MS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc4MywxMiArNDc4Mywx
MiBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAgaHIgPSBw
cmVmZXJlbmNlcy0+aXNDU1NSZWdpb25zRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxF
RChocikpCiAgICAgICAgIHJldHVybiBocjsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRDU1NSZWdpb25zRW5hYmxlZCghIWVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZCgh
IWVuYWJsZWQpOwogCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+YXJlU2VhbWxlc3NJRnJhbWVzRW5h
YmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsK
LSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKCEh
ZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkUnVudGltZUVuYWJs
ZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoISFlbmFibGVkKTsKIAogICAg
IGhyID0gcHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoJmVuYWJsZWQpOwogICAg
IGlmIChGQUlMRUQoaHIpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212601</attachid>
            <date>2013-09-25 10:43:41 -0700</date>
            <delta_ts>2013-09-25 10:57:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121883-20130925104326.patch</filename>
            <type>text/plain</type>
            <size>128196</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzNSBAQAorMjAxMy0wOS0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0
b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgV2luZG93
cyBpcyBleHBlcmllbmNpbmcgY3Jhc2hlcyB3aGVuIGNsaWVudCBwcm9ncmFtcyAoc3VjaCBhcwor
ICAgICAgICBEdW1wUmVuZGVyVHJlZSkgYXR0ZW1wIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUg
UnVudGltZUVuYWJsZWRGZWF0dXJlcworICAgICAgICBvYmplY3QuIFRoZSBpbmxpbmVkIHN0YXRp
YyBhY2Nlc3NvciBtZXRob2RzIGFyZSBub3QgYWNjZXNzaW5nCisgICAgICAgIG1lbW9yeSBzYWZl
bHkgKHdoZW4gY29tcGlsZWQgYnkgVmlzdWFsIFN0dWRpbykgcmVzdWx0aW5nIGluCisgICAgICAg
IGNyYXNoZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOiBTd2l0Y2gg
bWV0aG9kcyB0bworICAgICAgICBjb25mb3JtIHRvIGEgc2luZ2xldG9uIHBhdHRlcm4uCisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1ZGlvRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sTWVkaWFFbGVtZW50RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sQXVkaW9FbGVtZW50
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
VmlkZW9FbGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpodG1sU291cmNlRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUVycm9yRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp0aW1lUmFuZ2VzRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3JrZXJF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYlNv
Y2tldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
b3BlbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsb2NhbFN0b3JhZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlc3Npb25TdG9y
YWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0QXBwbGljYXRpb25D
YWNoZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
YXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRHZW9sb2NhdGlvbkVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Z2VvbG9j
YXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0SW5kZXhlZERCRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbmRleGVkREJFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENhbnZhc1BhdGhFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNhbnZhc1BhdGhFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc0V4Y2x1c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldENTU1NoYXBlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NSZWdpb25zRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGluZ0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzQ29t
cG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldEZvbnRMb2FkRXZlbnRzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2Via2l0RnVsbFNj
cmVlbkFQSUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdElzRnVsbFNjcmVlbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbFNjcmVlbktleWJv
YXJkSW5wdXRBbGxvd2VkRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdENhbmNlbEZ1bGxTY3Jl
ZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RXhpdEZ1bGxzY3JlZW5F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp0b3VjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0VG91Y2hFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldERldmljZU1vdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VNb3Rpb25FdmVudEVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b25kZXZp
Y2Vtb3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldERldmljZU9yaWVudGF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FdmVudEVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b25kZXZp
Y2VvcmllbnRhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0U3BlZWNoSW5wdXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNwZWVjaElucHV0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEdyYW1tYXJFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNjcmlwdGVkU3Bl
ZWNoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
Y3JpcHRlZFNwZWVjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaFJlY29nbml0aW9uRXJyb3JF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFNwZWVjaFJlY29nbml0aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaEdyYW1tYXJFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaEdyYW1tYXJMaXN0
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRG
aWxlU3lzdGVtRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFTdHJlYW1FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU3RyZWFtRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRHZXRVc2VyTWVkaWFF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dE1lZGlhU3RyZWFtRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpwZWVyQ29ubmVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0UGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMZWdh
Y3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdldEdhbWVwYWRzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRH
ZXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6cXVvdGFFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldFF1b3RhRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjptZWRpYVNvdXJjZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0TWVkaWFTb3VyY2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmVuY3J5cHRlZE1lZGlhRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRFbmNyeXB0ZWRNZWRpYUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0V2Via2l0VmlkZW9UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1dGhvclNoYWRvd0RPTUZvckFueUVs
ZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmN1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDdXN0b21ET01FbGVt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNj
b3BlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0U3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlucHV0VHlwZURhdGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldElucHV0VHlwZURhdGVFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVE
YXRlVGltZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlTW9udGhF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldElu
cHV0VHlwZU1vbnRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppbnB1dFR5cGVUaW1lRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVUaW1lRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVXZWVrRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVXZWVrRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpleHBlcmlt
ZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldENTU1Byb3BlcnR5TmFtZVByZWZpeCk6IFVzZSBzaW5nbGV0b24gYWNj
ZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlO
YW1lKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKTogR2VuZXJhdGUgc2lu
Z2xldG9uIHZlcnNpb24gb2YKKyAgICAgICAgYWNjZXNzb3JzLgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udExvYWRlZCk6
IFVzZSBzaW5nbGV0b24gYWNjZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6
OmdldEZvbnREYXRhKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZSk6IERp
dHRvLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNT
aW1wbGVMZW5ndGhQcm9wZXJ0eUlEKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
S2V5d29yZFByb3BlcnR5QW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmll
cnMpOgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Zm9udExvYWRlZCk6IERpdHRvLgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjplbnN1cmVTY29wZVJlc29sdmVyKTogRGl0dG8uCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjc3NSZWdpb25zRW5hYmxlZCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hvdWxkRGlzcGxheVNlYW1sZXNzbHlXaXRoUGFy
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDYWNoZWRMb2NhbGUpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0
ZVNoYWRvd1Jvb3QpOiBEaXR0by4KKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6ZmluZFBhcmVudCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmdldFNlbGVjdGlvbik6IERpdHRvLgorICAgICAg
ICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnRDb25zdHJ1Y3RvckludGVyaW9y
KTogR2VuZXJhdGUgc2luZ2xldG9uIHZlcnNpb24gb2YgYWNjZXNzb3JzLgorICAgICAgICAocHJp
bnRXcmFwcGVyRnVuY3Rpb25zKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzU3BlZWNoRW5h
YmxlZCk6IFVzZSBzaW5nbGV0b24gYWNjZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVEZWxheWVkQWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFk
ZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVk
aW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KToKKyAg
ICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFN0eWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFN0eWxlRWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY29waW5nTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpzY29wZWQpOgorICAgICAgICAqIGh0bWwv
SFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxl
bWVudDo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6
OmNhbkxvYWRVcmwpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXApOiBEaXR0by4KKyAgICAgICAgKiBodG1s
L3NoYWRvdy9IVE1MQ29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENv
bnRlbnRFbGVtZW50Ojpjb250ZW50VGFnTmFtZSk6IERpdHRvLgorICAgICAgICAqIHBhZ2UvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0
eVBvbGljeTo6ZXhwZXJpbWVudGFsRmVhdHVyZXNFbmFibGVkKTogRGl0dG8uCisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjphZGRFdmVu
dExpc3RlbmVyKTogRGl0dG8uCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKTogRGl0dG8uCisg
ICAgICAgICogdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTaGFkb3dET01FbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldFN0eWxlU2Nv
cGVkRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRDU1NF
eGNsdXNpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpz
ZXRDU1NTaGFwZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6
OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKToKKwogMjAxMy0wOS0y
NSAgQWxiZXJ0byBHYXJjaWEgIDxiZXJ0b0BpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCB3YXJu
aW5nIGluIG1ha2Vwcm9wLnBsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJldmlzaW9uIDE1
NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzUsNiArMzYsNyBAQAogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUg
IldlYlNvY2tldC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgpAQCAtNDIsMjAx
ICs0NCwxODkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlzTG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOwot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkID0g
dHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNEYXRhVHJhbnNmZXJJdGVtc0Vu
YWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0dlb2xvY2F0aW9u
RW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5kZXhlZERC
RW5hYmxlZCA9IGZhbHNlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1RvdWNoRW5h
YmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2aWNlTW90aW9u
RW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2aWNlT3Jp
ZW50YXRpb25FbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNT
cGVlY2hJbnB1dEVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpp
c0NhbnZhc1BhdGhFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0NTU1NoYXBlc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0NTU1JlZ2lvbnNFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzQ1NTQ29tcG9zaXRpbmdFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBm
YWxzZTsKLQorUnVudGltZUVuYWJsZWRGZWF0dXJlczo6UnVudGltZUVuYWJsZWRGZWF0dXJlcygp
CisgICAgOiBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1Nlc3Npb25T
dG9yYWdlRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVk
KGZhbHNlKQorICAgICwgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHRydWUpCisgICAgLCBt
X2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzR2VvbG9jYXRpb25F
bmFibGVkKHRydWUpCisgICAgLCBtX2lzSW5kZXhlZERCRW5hYmxlZChmYWxzZSkKKyAgICAsIG1f
aXNUb3VjaEVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkKHRydWUp
CisgICAgLCBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkKHRydWUpCisgICAgLCBtX2lzU3Bl
ZWNoSW5wdXRFbmFibGVkKHRydWUpCisgICAgLCBtX2lzQ2FudmFzUGF0aEVuYWJsZWQoZmFsc2Up
CisgICAgLCBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNDU1NTaGFw
ZXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzQ1NTUmVnaW9uc0VuYWJsZWQoZmFsc2UpCisgICAg
LCBtX2lzQ1NTQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKQorICAgICwgbV9pc0xhbmdBdHRyaWJ1
dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGZhbHNlKQogI2lmIEVOQUJMRShTQ1JJUFRFRF9T
UEVFQ0gpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzU2NyaXB0ZWRTcGVlY2hFbmFi
bGVkID0gZmFsc2U7CisgICAgLCBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkKGZhbHNlKQogI2Vu
ZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc01lZGlhU3RyZWFtRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzUGVlckNvbm5lY3Rpb25FbmFibGVkID0gdHJ1ZTsKKyAgICAsIG1faXNNZWRpYVN0
cmVhbUVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQodHJ1ZSkK
ICNlbmRpZgotCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9
IGZhbHNlOworICAgICwgbV9pc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChmYWxzZSkK
ICNlbmRpZgotCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlzR2FtZXBhZEVuYWJsZWQgPSBmYWxzZTsKKyAgICAsIG1faXNHYW1lcGFkRW5hYmxlZChm
YWxzZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppc0ZpbGVTeXN0ZW1FbmFibGVkID0gZmFsc2U7CisgICAgLCBtX2lzRmls
ZVN5c3RlbUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9JMThO
X0FQSSkKKyAgICAsIG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoZmFsc2UpCisjZW5kaWYK
KyNpZiBFTkFCTEUoUVVPVEEpCisgICAgLCBtX2lzUXVvdGFFbmFibGVkKGZhbHNlKQorI2VuZGlm
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICwgbV9pc0Z1bGxTY3JlZW5BUElFbmFi
bGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgICwgbV9pc01l
ZGlhU291cmNlRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCBQ
TEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQorICAg
ICwgbV9pc1ZpZGVvVHJhY2tFbmFibGVkKHRydWUpCisjZWxzZQorICAgICwgbV9pc1ZpZGVvVHJh
Y2tFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01F
RElBKQorICAgICwgbV9pc0VuY3J5cHRlZE1lZGlhRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lm
IEVOQUJMRShTSEFET1dfRE9NKQorICAgICwgbV9pc1NoYWRvd0RPTUVuYWJsZWQoZmFsc2UpCisg
ICAgLCBtX2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoZmFsc2UpCisjZW5k
aWYKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgICwgbV9pc0N1c3RvbURPTUVsZW1l
bnRzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCisgICAg
LCBtX2lzU3R5bGVTY29wZWRFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxFKElOUFVU
X1RZUEVfREFURSkKKyAgICAsIG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZCh0cnVlKQorI2VuZGlm
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKKyAgICAsIG1faXNJ
bnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKQorICAgICwgbV9pc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFi
bGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKKyAgICAsIG1f
aXNJbnB1dFR5cGVNb250aEVuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9U
WVBFX1RJTUUpCisgICAgLCBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQodHJ1ZSkKKyNlbmRpZgor
I2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCisgICAgLCBtX2lzSW5wdXRUeXBlV2Vla0VuYWJs
ZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShDU1BfTkVYVCkKKyAgICAsIG1fYXJlRXhwZXJp
bWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGZhbHNlKQorI2VuZGlm
CisjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKKyAgICAsIG1fYXJlU2VhbWxlc3NJRnJhbWVz
RW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQorICAg
ICwgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgoreworfQorCitSdW50
aW1lRW5hYmxlZEZlYXR1cmVzJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+
IHJ1bnRpbWVFbmFibGVkRmVhdHVyZXM7CiAKKyAgICByZXR1cm4gcnVudGltZUVuYWJsZWRGZWF0
dXJlczsKK30KKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIGJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQoKQogewotICAgIHJldHVybiBpc0ZpbGVTeXN0ZW1F
bmFibGVkICYmIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gbV9p
c0ZpbGVTeXN0ZW1FbmFibGVkICYmIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKTsKIH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCi1ib29sIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkID0gZmFsc2U7Ci0KIGJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVkKCkKIHsK
LSAgICByZXR1cm4gaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CisgICAgcmV0dXJuIG1faXNK
YXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykK
LQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKQorYm9vbCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBN
ZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpodG1sTWVkaWFFbGVtZW50RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6Omh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpo
dG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVy
Ojppc0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxW
aWRlb0VsZW1lbnRFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFZp
ZGVvRWxlbWVudEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNB
dmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNl
RWxlbWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNl
RWxlbWVudEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFp
bGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUNvbnRyb2xs
ZXJFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVy
RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgp
OwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkK
K2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQoKSBjb25zdAog
ewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp0aW1lUmFuZ2VzRW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gTWVk
aWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQVJF
RF9XT1JLRVJTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3JrZXJFbmFi
bGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZhaWxhYmxl
KCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2ViU29ja2V0RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYlNvY2tldEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBXZWJTb2NrZXQ6
OmlzQXZhaWxhYmxlKCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi1i
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQorYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKTsKIH0KIAot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpCiti
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZVN5bmNFbmFibGVkKCkgY29u
c3QKIHsKICAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUo
KTsKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFFVT1RBKQotYm9vbCBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppc1F1b3RhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRnVsbFNjcmVlbkFQ
SUVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc01lZGlhU291cmNlRW5hYmxlZCA9IGZhbHNlOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQ
TEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwg
UExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkKLSAgICBib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQgPSB0cnVlOwotI2Vsc2UKLSAgICBib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0VuY3J5cHRlZE1lZGlhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNTaGFk
b3dET01FbmFibGVkID0gZmFsc2U7Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNB
dXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpp
c0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
U1RZTEVfU0NPUEVEKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1N0eWxlU2NvcGVk
RW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZURhdGVFbmFibGVkID0gdHJ1
ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkK
LWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQg
PSBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkK
LWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5h
YmxlZCA9IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX01PTlRIKQotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9IHRydWU7
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCi1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpp
c0lucHV0VHlwZVdlZWtFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENTUF9O
RVhUKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphcmVFeHBlcmltZW50YWxDb250ZW50
U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKElGUkFNRV9TRUFNTEVTUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXJlU2Vh
bWxlc3NJRnJhbWVzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRk9OVF9M
T0FEX0VWRU5UUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNGb250TG9hZEV2ZW50
c0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMy
LDYgKzMzLDcgQEAKICNkZWZpbmUgUnVudGltZUVuYWJsZWRGZWF0dXJlc19oCiAKICNpbmNsdWRl
ICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDM3MSArNDIsMzc0IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIC8vIGdlbmVyYXRpb24gdG8gd29yayBwcm9wZXJseS4KIAogY2xhc3MgUnVu
dGltZUVuYWJsZWRGZWF0dXJlcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVudGltZUVu
YWJsZWRGZWF0dXJlcyk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0TG9jYWxTdG9yYWdl
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0xvY2FsU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgeyByZXR1cm4gaXNM
b2NhbFN0b3JhZ2VFbmFibGVkOyB9CisgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gaXNFbmFibGVkOyB9Cisg
ICAgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xvY2FsU3Rv
cmFnZUVuYWJsZWQ7IH0KIAotICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb25TdG9yYWdlRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIHNlc3Npb25TdG9yYWdlRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2Vz
c2lvblN0b3JhZ2VFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgbV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQorICAgIGJvb2wgc2Vzc2lvblN0b3JhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Nl
c3Npb25TdG9yYWdlRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0V2Via2l0Tm90aWZp
Y2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNXZWJraXROb3RpZmljYXRpb25zRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdE5vdGlmaWNhdGlvbnNF
bmFibGVkKCkgeyByZXR1cm4gaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1dl
YmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRO
b3RpZmljYXRpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJraXROb3RpZmljYXRp
b25zRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZUVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgeyByZXR1cm4g
aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkID0g
aXNFbmFibGVkOyB9CisgICAgYm9vbCBhcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQg
c2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRGF0YVRyYW5z
ZmVySXRlbXNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGF0YVRyYW5z
ZmVySXRlbXNFbmFibGVkKCkgeyByZXR1cm4gaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBt
X2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBkYXRh
VHJhbnNmZXJJdGVtc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGF0YVRyYW5zZmVySXRl
bXNFbmFibGVkOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRHZW9sb2NhdGlvbkVuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgaXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgYm9vbCBnZW9sb2NhdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0dlb2xvY2F0aW9uRW5h
YmxlZDsgfQorICAgIHZvaWQgc2V0R2VvbG9jYXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7
IG1faXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGdlb2xvY2F0
aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvbkVuYWJsZWQ7IH0KIAot
ICAgIHN0YXRpYyB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgaXNJbmRleGVkREJFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Vi
a2l0SW5kZXhlZERCRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5kZXhlZERCRW5hYmxlZDsgfQotICAg
IHN0YXRpYyBib29sIGluZGV4ZWREQkVuYWJsZWQoKSB7IHJldHVybiBpc0luZGV4ZWREQkVuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0luZGV4ZWREQkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdElu
ZGV4ZWREQkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5kZXhlZERCRW5hYmxlZDsgfQor
ICAgIGJvb2wgaW5kZXhlZERCRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmRleGVkREJF
bmFibGVkOyB9CiAKICNpZiBFTkFCTEUoQ0FOVkFTX1BBVEgpCi0gICAgc3RhdGljIHZvaWQgc2V0
Q2FudmFzUGF0aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDYW52YXNQYXRoRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkgeyByZXR1
cm4gaXNDYW52YXNQYXRoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q2FudmFzUGF0aEVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgbV9pc0NhbnZhc1BhdGhFbmFibGVkID0gaXNFbmFibGVkOyB9Cisg
ICAgYm9vbCBjYW52YXNQYXRoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDYW52YXNQYXRo
RW5hYmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBzZXRDYW52YXNQYXRoRW5hYmxlZChi
b29sKSB7IH0KLSAgICBzdGF0aWMgYm9vbCBjYW52YXNQYXRoRW5hYmxlZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBzZXRDYW52YXNQYXRoRW5hYmxlZChib29sKSB7IH0KKyAgICBib29s
IGNhbnZhc1BhdGhFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAj
aWYgRU5BQkxFKENTU19FWENMVVNJT05TKQotICAgIHN0YXRpYyB2b2lkIHNldENTU0V4Y2x1c2lv
bnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIHsgcmV0dXJu
IGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENTU0V4Y2x1c2lvbnNFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NFeGNsdXNpb25zRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIGJvb2wgY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
Q1NTRXhjbHVzaW9uc0VuYWJsZWQ7IH0KICNlbHNlCi0gICAgc3RhdGljIHZvaWQgc2V0Q1NTRXhj
bHVzaW9uc0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzRXhjbHVzaW9uc0Vu
YWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTRXhjbHVzaW9uc0VuYWJs
ZWQoYm9vbCkgeyB9CisgICAgYm9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIHN0YXRp
YyB2b2lkIHNldENTU1NoYXBlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NTaGFwZXNF
bmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgp
IHsgcmV0dXJuIGlzQ1NTU2hhcGVzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTU2hhcGVzRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQ1NTU2hhcGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQorICAgIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDU1NTaGFw
ZXNFbmFibGVkOyB9CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIHNldENTU1NoYXBlc0VuYWJsZWQo
Ym9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdm9pZCBzZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wg
Y3NzU2hhcGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc0NTU1JlZ2lvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0g
ICAgc3RhdGljIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU1JlZ2lvbnNF
bmFibGVkOyB9CisgICAgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX2lzQ1NTUmVnaW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNzc1JlZ2lv
bnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NTU1JlZ2lvbnNFbmFibGVkOyB9CiAjZWxz
ZQotICAgIHN0YXRpYyB2b2lkIHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wpIHsgfQotICAgIHN0
YXRpYyBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lk
IHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzUmVnaW9uc0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBz
ZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NDb21wb3NpdGlu
Z0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NDb21wb3NpdGluZ0Vu
YWJsZWQoKSB7IHJldHVybiBpc0NTU0NvbXBvc2l0aW5nRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0
Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NDb21wb3NpdGlu
Z0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNzc0NvbXBvc2l0aW5nRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7IH0KIAogI2lmIEVOQUJM
RShGT05UX0xPQURfRVZFTlRTKQotICAgIHN0YXRpYyB2b2lkIHNldEZvbnRMb2FkRXZlbnRzRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIHsgcmV0dXJuIGlz
Rm9udExvYWRFdmVudHNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRGb250TG9hZEV2ZW50c0VuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIGJvb2wgZm9udExvYWRFdmVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBzZXRGb250
TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgZm9udExvYWRFdmVu
dHNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldEZvbnRMb2FkRXZlbnRz
RW5hYmxlZChib29sKSB7IH0KKyAgICBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAv
LyBNb3ppbGxhIHZlcnNpb24KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2NyZWVuQVBJRW5h
YmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9p
ZCBzZXRXZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0Z1bGxT
Y3JlZW5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIHdlYmtpdElzRnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBp
c0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbFNjcmVl
bktleWJvYXJkSW5wdXRBbGxvd2VkRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRF
bmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVu
QVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtp
dEZ1bGxTY3JlZW5BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGdWxsU2NyZWVuQVBJ
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5F
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAg
Ym9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxT
Y3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1
dEFsbG93ZWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVk
OyB9CisgICAgYm9vbCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRD
YW5jZWxGdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJ
RW5hYmxlZDsgfQogCiAgICAgLy8gVzNDIHZlcnNpb24KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRG
dWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVkKCkgeyBy
ZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdEV4
aXRGdWxsc2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgYm9vbCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQoKSB7IHJldHVy
biBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRW5h
YmxlZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0K
KyAgICBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RXhpdEZ1bGxzY3Jl
ZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9Cisg
ICAgYm9vbCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQot
ICAgIHN0YXRpYyBib29sIGF1ZGlvRW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIGh0bWxNZWRp
YUVsZW1lbnRFbmFibGVkKCk7Ci0gICAgc3RhdGljIGJvb2wgaHRtbEF1ZGlvRWxlbWVudEVuYWJs
ZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpOwotICAgIHN0
YXRpYyBib29sIGh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIG1l
ZGlhQ29udHJvbGxlckVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBtZWRpYUVycm9yRW5hYmxl
ZCgpOwotICAgIHN0YXRpYyBib29sIHRpbWVSYW5nZXNFbmFibGVkKCk7CisgICAgYm9vbCBhdWRp
b0VuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCkgY29u
c3Q7CisgICAgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wg
aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxTb3VyY2VFbGVt
ZW50RW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxlZCgpIGNv
bnN0OworICAgIGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIHRpbWVS
YW5nZXNFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VS
UykKLSAgICBzdGF0aWMgYm9vbCBzaGFyZWRXb3JrZXJFbmFibGVkKCk7CisgICAgYm9vbCBzaGFy
ZWRXb3JrZXJFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKLSAgICBzdGF0aWMgYm9vbCB3ZWJTb2NrZXRFbmFibGVkKCk7CisgICAgYm9vbCB3ZWJTb2Nr
ZXRFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0g
ICAgc3RhdGljIGJvb2wgb3BlbkRhdGFiYXNlRW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIG9w
ZW5EYXRhYmFzZVN5bmNFbmFibGVkKCk7CisgICAgYm9vbCBvcGVuRGF0YWJhc2VFbmFibGVkKCkg
Y29uc3Q7CisgICAgYm9vbCBvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHN0YXRpYyBib29sIHRvdWNoRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzVG91Y2hFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0VG91Y2hF
bmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzVG91Y2hFbmFibGVkID0gaXNFbmFibGVkOyB9Cisg
ICAgYm9vbCB0b3VjaEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVG91Y2hFbmFibGVkOyB9
CisgICAgdm9pZCBzZXRUb3VjaEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1RvdWNoRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBzZXREZXZpY2VN
b3Rpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRGV2aWNlTW90aW9uRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGRldmljZU1vdGlvbkVuYWJsZWQoKSB7IHJldHVy
biBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBkZXZpY2VNb3Rpb25F
dmVudEVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgYm9vbCBvbmRldmljZW1vdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1vdGlvbkVu
YWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldERldmljZU9yaWVudGF0aW9uRW5hYmxlZChi
b29sIGlzRW5hYmxlZCkgeyBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlz
RGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNlT3JpZW50
YXRpb25FdmVudEVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIG9uZGV2aWNlb3JpZW50YXRpb25FbmFibGVkKCkgeyByZXR1cm4g
aXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldFNwZWVj
aElucHV0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1NwZWVjaElucHV0RW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHNwZWVjaElucHV0RW5hYmxlZCgpIHsgcmV0dXJu
IGlzU3BlZWNoSW5wdXRFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoRW5h
YmxlZCgpIHsgcmV0dXJuIGlzU3BlZWNoSW5wdXRFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wg
d2Via2l0R3JhbW1hckVuYWJsZWQoKSB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0RGV2aWNlTW90aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRGV2
aWNlTW90aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZGV2aWNlTW90aW9uRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9CisgICAgYm9v
bCBkZXZpY2VNb3Rpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlTW90
aW9uRW5hYmxlZDsgfQorICAgIGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0RGV2aWNlT3Jp
ZW50YXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNEZXZpY2VPcmllbnRhdGlvbkVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KKyAgICBib29s
IGRldmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Rldmlj
ZU9yaWVudGF0aW9uRW5hYmxlZDsgfQorICAgIGJvb2wgb25kZXZpY2VvcmllbnRhdGlvbkVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9CisKKyAg
ICB2b2lkIHNldFNwZWVjaElucHV0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzU3BlZWNo
SW5wdXRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzcGVlY2hJbnB1dEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzU3BlZWNoSW5wdXRFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJr
aXRTcGVlY2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NwZWVjaElucHV0RW5hYmxlZDsg
fQorICAgIGJvb2wgd2Via2l0R3JhbW1hckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3Bl
ZWNoSW5wdXRFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQotICAgIHN0
YXRpYyB2b2lkIHNldFNjcmlwdGVkU3BlZWNoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1Nj
cmlwdGVkU3BlZWNoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHNjcmlw
dGVkU3BlZWNoRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9Ci0g
ICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKCkgeyByZXR1cm4g
aXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hS
ZWNvZ25pdGlvbkVycm9yRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FdmVudEVuYWJsZWQo
KSB7IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdl
YmtpdFNwZWVjaEdyYW1tYXJFbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRlZFNwZWVjaEVuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJsZWQoKSB7
IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2NyaXB0ZWRT
cGVlY2hFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHNjcmlwdGVkU3BlZWNoRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVj
aFJlY29nbml0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVu
YWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRXJyb3JFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIGJvb2wgd2Vi
a2l0U3BlZWNoUmVjb2duaXRpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2Ny
aXB0ZWRTcGVlY2hFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAgICBib29s
IHdlYmtpdFNwZWVjaEdyYW1tYXJMaXN0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3Jp
cHRlZFNwZWVjaEVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
ICAgIHN0YXRpYyBib29sIGZpbGVTeXN0ZW1FbmFibGVkKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0
RmlsZVN5c3RlbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZmlsZVN5c3RlbUVuYWJsZWQoKSBjb25zdDsKKyAgICB2
b2lkIHNldEZpbGVTeXN0ZW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGaWxlU3lzdGVt
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9J
MThOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBqYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoKTsKLSAg
ICBzdGF0aWMgdm9pZCBzZXRKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGph
dmFTY3JpcHRJMThOQVBJRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SmF2YVNjcmlwdEkx
OE5BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAg
ICBzdGF0aWMgYm9vbCBtZWRpYVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFt
RW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBpc01lZGlhU3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRp
YyBib29sIHdlYmtpdEdldFVzZXJNZWRpYUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFt
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdE1lZGlhU3RyZWFtRW5hYmxlZCgpIHsg
cmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgYm9vbCBwZWVyQ29u
bmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZCAmJiBpc1BlZXJD
b25uZWN0aW9uRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldFBlZXJDb25uZWN0aW9uRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1BlZXJDb25uZWN0aW9uRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpIHsg
cmV0dXJuIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CisgICAgYm9vbCBtZWRpYVN0cmVhbUVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1FbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRNZWRpYVN0cmVhbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc01lZGlhU3RyZWFt
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0R2V0VXNlck1lZGlhRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKyAgICBib29sIHdl
YmtpdE1lZGlhU3RyZWFtRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVu
YWJsZWQ7IH0KKworICAgIGJvb2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc01lZGlhU3RyZWFtRW5hYmxlZCAmJiBtX2lzUGVlckNvbm5lY3Rpb25FbmFibGVkOyB9
CisgICAgdm9pZCBzZXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c1BlZXJDb25uZWN0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0UlRD
UGVlckNvbm5lY3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gcGVlckNvbm5lY3Rpb25FbmFi
bGVkKCk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVT
KQotICAgIHN0YXRpYyB2b2lkIHNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBpc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyBib29sIGxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpIHsg
cmV0dXJuIGlzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRM
ZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0xlZ2Fj
eUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgbGVnYWN5
Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xlZ2FjeUNTU1Zl
bmRvclByZWZpeGVzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKLSAg
ICBzdGF0aWMgdm9pZCBzZXRXZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgaXNHYW1lcGFkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtp
dEdldEdhbWVwYWRzRW5hYmxlZCgpIHsgcmV0dXJuIGlzR2FtZXBhZEVuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldFdlYmtpdEdldEdhbWVwYWRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzR2Ft
ZXBhZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEdldEdhbWVwYWRzRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHYW1lcGFkRW5hYmxlZDsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoUVVPVEEpCi0gICAgc3RhdGljIGJvb2wgcXVvdGFFbmFibGVkKCkgeyByZXR1cm4g
aXNRdW90YUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRRdW90YUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNRdW90YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHF1b3Rh
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNRdW90YUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dFF1b3RhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzUXVvdGFFbmFibGVkID0gaXNFbmFi
bGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgc3RhdGljIGJv
b2wgbWVkaWFTb3VyY2VFbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVNvdXJjZUVuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVNvdXJjZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
aXNNZWRpYVNvdXJjZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIG1lZGlhU291cmNl
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVNvdXJjZUVuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldE1lZGlhU291cmNlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTWVkaWFTb3Vy
Y2VFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUEpCi0gICAgc3RhdGljIGJvb2wgZW5jcnlwdGVkTWVkaWFFbmFibGVkKCkgeyByZXR1cm4g
aXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRFbmNyeXB0ZWRN
ZWRpYUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KKyAgICBib29sIGVuY3J5cHRlZE1lZGlhRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuY3J5cHRlZE1l
ZGlhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRW5jcnlwdGVkTWVkaWFFbmFibGVkID0g
aXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBzdGF0
aWMgYm9vbCB3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHsgcmV0dXJuIGlzVmlkZW9UcmFja0Vu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRWaWRlb1RyYWNrRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBpc1ZpZGVvVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9v
bCB3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaWRlb1RyYWNr
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0V2Via2l0VmlkZW9UcmFja0VuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgbV9pc1ZpZGVvVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIHN0YXRpYyBib29sIHNoYWRvd0RPTUVuYWJsZWQo
KSB7IHJldHVybiBpc1NoYWRvd0RPTUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTaGFk
b3dET01FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU2hhZG93RE9NRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgc2hhZG93RE9NRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
aGFkb3dET01FbmFibGVkOyB9CisgICAgdm9pZCBzZXRTaGFkb3dET01FbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IG1faXNTaGFkb3dET01FbmFibGVkID0gaXNFbmFibGVkOyB9CiAKLSAgICBzdGF0
aWMgYm9vbCBhdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlz
QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAg
Ym9vbCBhdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0
QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0gICAgc3RhdGljIGJvb2wgY3VzdG9t
RE9NRWxlbWVudHNFbmFibGVkKCkgeyByZXR1cm4gaXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7
IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRDdXN0b21ET01FbGVtZW50cyhib29sIGlzRW5hYmxlZCkg
eyBpc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgY3Vz
dG9tRE9NRWxlbWVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0N1c3RvbURPTUVsZW1l
bnRzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRE9NRWxlbWVudHMoYm9vbCBpc0VuYWJs
ZWQpIHsgbV9pc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIHN0YXRpYyBib29sIHN0eWxlU2NvcGVk
RW5hYmxlZCgpIHsgcmV0dXJuIGlzU3R5bGVTY29wZWRFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZv
aWQgc2V0U3R5bGVTY29wZWRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU3R5bGVTY29wZWRF
bmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzdHlsZVNjb3BlZEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzU3R5bGVTY29wZWRFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTdHlsZVNj
b3BlZEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1N0eWxlU2NvcGVkRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQotICAgIHN0
YXRpYyBib29sIGlucHV0VHlwZURhdGVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVEYXRl
RW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlRGF0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBi
b29sIGlucHV0VHlwZURhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZURh
dGVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVEYXRlRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBtX2lzSW5wdXRUeXBlRGF0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKLSAgICBzdGF0aWMg
Ym9vbCBpbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoKSB7IHJldHVybiBpc0lucHV0VHlwZURhdGVU
aW1lRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVUaW1lRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0
ZVRpbWVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlVGltZUVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgp
IHsgcmV0dXJuIGlzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
dm9pZCBzZXRJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBp
bnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5
cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0ZVRpbWVM
b2NhbEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZURhdGVUaW1lTG9jYWxF
bmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX01P
TlRIKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlwZU1vbnRoRW5hYmxlZCgpIHsgcmV0dXJuIGlz
SW5wdXRUeXBlTW9udGhFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5wdXRUeXBlTW9u
dGhFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlTW9udGhFbmFibGVkID0gaXNF
bmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVNb250aEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzSW5wdXRUeXBlTW9udGhFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVNb250
aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAgIHN0
YXRpYyBib29sIGlucHV0VHlwZVRpbWVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVUaW1l
RW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZVRpbWVFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBi
b29sIGlucHV0VHlwZVRpbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZVRp
bWVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVUaW1lRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVX
ZWVrRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgdm9pZCBzZXRJbnB1dFR5cGVXZWVrRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0
VHlwZVdlZWtFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVXZWVrRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVXZWVrRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0SW5wdXRUeXBlV2Vla0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlw
ZVdlZWtFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1BfTkVY
VCkKLSAgICBzdGF0aWMgYm9vbCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0
dXJlc0VuYWJsZWQoKSB7IHJldHVybiBhcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xp
Y3lGZWF0dXJlc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRFeHBlcmltZW50YWxDb250
ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgYXJlRXhw
ZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBv
bGljeUZlYXR1cmVzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RXhwZXJpbWVudGFsQ29udGVudFNl
Y3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fYXJlRXhwZXJp
bWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFibGVkOyB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgc3RhdGljIGJvb2wg
c2VhbWxlc3NJRnJhbWVzRW5hYmxlZCgpIHsgcmV0dXJuIGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBi
b29sIHNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZVNlYW1sZXNz
SUZyYW1lc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgbV9hcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkID0gaXNFbmFibGVkOyB9
CiAjZW5kaWYKIAotICAgIHN0YXRpYyBib29sIGxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9s
VUlFbmFibGVkKCkgeyByZXR1cm4gaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZDsgfQorICAgIGJvb2wgbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQ7IH0KICAgICAvLyBUaGUgbGFuZyBhdHRyaWJ1dGUgc3VwcG9ydCBpcyBpbmNvbXBsZXRlIGFu
ZCBzaG91bGQgb25seSBiZSB0dXJuZWQgb24gZm9yIHRlc3RzLgotICAgIHN0YXRpYyB2b2lkIHNl
dExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7
IGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorCisgICAgc3RhdGljIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMmIHNoYXJl
ZEZlYXR1cmVzKCk7CiAKIHByaXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCi0gICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlcygpIHsgfQorICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMo
KTsKIAotICAgIHN0YXRpYyBib29sIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBzdGF0aWMg
Ym9vbCBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1dlYmtpdE5v
dGlmaWNhdGlvbnNFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7Ci0gICAg
c3RhdGljIGJvb2wgaXNHZW9sb2NhdGlvbkVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNJbmRl
eGVkREJFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzVG91Y2hFbmFibGVkOwotICAgIHN0YXRp
YyBib29sIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0RldmljZU9y
aWVudGF0aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1NwZWVjaElucHV0RW5hYmxlZDsK
LSAgICBzdGF0aWMgYm9vbCBpc0NhbnZhc1BhdGhFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlz
Q1NTRXhjbHVzaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNDU1NTaGFwZXNFbmFibGVk
OwotICAgIHN0YXRpYyBib29sIGlzQ1NTUmVnaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wg
aXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7Ci0gICAgV0VCQ09SRV9URVNUSU5HIHN0YXRpYyBib29s
IGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgYm9vbCBtX2lz
TG9jYWxTdG9yYWdlRW5hYmxlZDsKKyAgICBib29sIG1faXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7
CisgICAgYm9vbCBtX2lzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lz
QXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzRGF0YVRyYW5zZmVySXRlbXNF
bmFibGVkOworICAgIGJvb2wgbV9pc0dlb2xvY2F0aW9uRW5hYmxlZDsKKyAgICBib29sIG1faXNJ
bmRleGVkREJFbmFibGVkOworICAgIGJvb2wgbV9pc1RvdWNoRW5hYmxlZDsKKyAgICBib29sIG1f
aXNEZXZpY2VNb3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9pc0RldmljZU9yaWVudGF0aW9uRW5h
YmxlZDsKKyAgICBib29sIG1faXNTcGVlY2hJbnB1dEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzQ2Fu
dmFzUGF0aEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7CisgICAg
Ym9vbCBtX2lzQ1NTU2hhcGVzRW5hYmxlZDsKKyAgICBib29sIG1faXNDU1NSZWdpb25zRW5hYmxl
ZDsKKyAgICBib29sIG1faXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzTGFu
Z0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CiAjaWYgRU5BQkxFKFNDUklQVEVE
X1NQRUVDSCkKLSAgICBzdGF0aWMgYm9vbCBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsKKyAgICBi
b29sIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7CiAjZW5kaWYKICNpZiBFTkFCTEUoRklMRV9T
WVNURU0pCi0gICAgc3RhdGljIGJvb2wgaXNGaWxlU3lzdGVtRW5hYmxlZDsKKyAgICBib29sIG1f
aXNGaWxlU3lzdGVtRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4
Tl9BUEkpCi0gICAgc3RhdGljIGJvb2wgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CisgICAg
Ym9vbCBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFTdHJlYW1FbmFibGVkOwotICAg
IHN0YXRpYyBib29sIGlzUGVlckNvbm5lY3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9pc01lZGlh
U3RyZWFtRW5hYmxlZDsKKyAgICBib29sIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShHQU1FUEFEKQotICAgIHN0YXRpYyBib29sIGlzR2FtZXBhZEVuYWJs
ZWQ7CisgICAgYm9vbCBtX2lzR2FtZXBhZEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShM
RUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICBzdGF0aWMgYm9vbCBpc0xlZ2FjeUNTU1Zl
bmRvclByZWZpeGVzRW5hYmxlZDsKKyAgICBib29sIG1faXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhl
c0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShRVU9UQSkKLSAgICBzdGF0aWMgYm9vbCBp
c1F1b3RhRW5hYmxlZDsKKyAgICBib29sIG1faXNRdW90YUVuYWJsZWQ7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBpc0Z1bGxTY3JlZW5BUElF
bmFibGVkOworICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFTb3VyY2VFbmFi
bGVkOworICAgIGJvb2wgbV9pc01lZGlhU291cmNlRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICBzdGF0aWMgYm9vbCBpc0VuY3J5cHRlZE1lZGlhRW5h
YmxlZDsKKyAgICBib29sIG1faXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICBzdGF0aWMgYm9vbCBpc1ZpZGVvVHJhY2tFbmFibGVk
OworICAgIGJvb2wgbV9pc1ZpZGVvVHJhY2tFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKLSAgICBzdGF0aWMgYm9vbCBpc1NoYWRvd0RPTUVuYWJsZWQ7Ci0KLSAgICBz
dGF0aWMgYm9vbCBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkOworICAgIGJv
b2wgbV9pc1NoYWRvd0RPTUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzQXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMp
Ci0gICAgc3RhdGljIGJvb2wgaXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7CisgICAgYm9vbCBt
X2lzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1RZTEVf
U0NPUEVEKQotICAgIHN0YXRpYyBib29sIGlzU3R5bGVTY29wZWRFbmFibGVkOworICAgIGJvb2wg
bV9pc1N0eWxlU2NvcGVkRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
REFURSkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZURhdGVFbmFibGVkOworICAgIGJvb2wg
bV9pc0lucHV0VHlwZURhdGVFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBlRGF0ZVRp
bWVFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBzdGF0aWMgYm9v
bCBpc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlw
ZURhdGVUaW1lTG9jYWxFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9N
T05USCkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsKKyAgICBib29s
IG1faXNJbnB1dFR5cGVNb250aEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX1RJTUUpCi0gICAgc3RhdGljIGJvb2wgaXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsKKyAgICBi
b29sIG1faXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfV0VFSykKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZVdlZWtFbmFibGVkOworICAg
IGJvb2wgbV9pc0lucHV0VHlwZVdlZWtFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NQ
X05FWFQpCi0gICAgc3RhdGljIGJvb2wgYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9s
aWN5RmVhdHVyZXNFbmFibGVkOworICAgIGJvb2wgbV9hcmVFeHBlcmltZW50YWxDb250ZW50U2Vj
dXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJRlJBTUVf
U0VBTUxFU1MpCi0gICAgc3RhdGljIGJvb2wgYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZDsKKyAg
ICBib29sIG1fYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgc3RhdGljIGJvb2wgaXNGb250TG9hZEV2ZW50c0VuYWJs
ZWQ7CisgICAgYm9vbCBtX2lzRm9udExvYWRFdmVudHNFbmFibGVkOwogI2VuZGlmCiAKKyAgICBm
cmllbmQgTmV2ZXJEZXN0cm95ZWQ8UnVudGltZUVuYWJsZWRGZWF0dXJlcz47CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDE1
NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyMCw3
ICsxMjAsNyBAQCBzdGF0aWMgUHJvcGVydHlOYW1lUHJlZml4IGdldENTU1Byb3BlcnR5CiAgICAg
c3dpdGNoIChmaXJzdENoYXIpIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklY
RVMpCiAgICAgY2FzZSAnYSc6Ci0gICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjps
ZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSAmJiBtYXRjaGVzQ1NTUHJvcGVydHlOYW1l
UHJlZml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikpCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAiYXBwbGUi
KSkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBsZTsKICAgICAgICAg
YnJlYWs7CiAjZW5kaWYKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgUHJvcGVydHlOYW1lUHJl
Zml4IGdldENTU1Byb3BlcnR5CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShMRUdBQ1lfQ1NT
X1ZFTkRPUl9QUkVGSVhFUykKICAgICBjYXNlICdrJzoKLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpICYmIG1hdGNoZXND
U1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAia2h0bWwiKSkKKyAgICAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9y
UHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0
eU5hbWUsICJraHRtbCIpKQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeEtI
VE1MOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyBD
U1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckoKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19W
RU5ET1JfUFJFRklYRVMpCiAgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBsZToKICAgICBj
YXNlIFByb3BlcnR5TmFtZVByZWZpeEtIVE1MOgotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkpOworICAgICAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NW
ZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSk7CiAgICAgICAgIHdyaXRlV2ViS2l0UHJlZml4KGJ1ZmZl
clB0cik7CiAgICAgICAgIGkgKz0gNTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNp
b24gMTU2MzM1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoQykg
MjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+CiAjIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KICMgQ29weXJpZ2h0IChD
KSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+Ci0jIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBD
YW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICMgQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmln
aHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CkBAIC0xNDQ0LDExICsxNDQ0LDExIEBAIHN1YiBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1l
CiB7CiAgICAgbXkgJHNpZ25hdHVyZSA9IHNoaWZ0OwogCi0gICAgIyBJZiBhIHBhcmFtZXRlciBp
cyBnaXZlbiAoZS5nLiAiRW5hYmxlZEF0UnVudGltZT1GZWF0dXJlTmFtZSIpIHJldHVybiB0aGUg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6e0ZlYXR1cmVOYW1lfUVuYWJsZWQoKSBtZXRob2QuCi0g
ICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoiIC4gVG9NZXRob2ROYW1lKCRzaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0pIC4gIkVuYWJs
ZWQiIGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGlt
ZSJ9ICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1l
In0gbmUgIlZBTFVFX0lTX01JU1NJTkciKTsKKyAgICAjIElmIGEgcGFyYW1ldGVyIGlzIGdpdmVu
IChlLmcuICJFbmFibGVkQXRSdW50aW1lPUZlYXR1cmVOYW1lIikgcmV0dXJuIHRoZSBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLntGZWF0dXJlTmFtZX1FbmFibGVkKCkg
bWV0aG9kLgorICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJF
bmFibGVkQXRSdW50aW1lIn0pIC4gIkVuYWJsZWQiIGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9ICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0gbmUgIlZBTFVFX0lTX01JU1NJTkciKTsKIAot
ICAgICMgT3RoZXJ3aXNlIHJldHVybiBhIGZ1bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnttZXRob2ROYW1lfUVuYWJsZWQoKS4KLSAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OiIgLiBUb01ldGhvZE5hbWUoJHNpZ25hdHVyZS0+bmFtZSkgLiAiRW5hYmxlZCI7
CisgICAgIyBPdGhlcndpc2UgcmV0dXJuIGEgZnVuY3Rpb24gbmFtZWQgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS57bWV0aG9kTmFtZX1FbmFibGVkKCkuCisgICAgcmV0
dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIgLiBUb01ldGhv
ZE5hbWUoJHNpZ25hdHVyZS0+bmFtZSkgLiAiRW5hYmxlZCI7CiB9CiAKIHN1YiBHZW5lcmF0ZUlt
cGxlbWVudGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAJKHJldmlzaW9u
IDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDU1NGb250
RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZQogICAgIGZvbnRTZWxlY3Rvci0+Zm9udExvYWRl
ZCgpOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IExv
YWRpbmcpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nKSB7CiAg
ICAgICAgIGlmIChzb3VyY2UtPmVuc3VyZUZvbnREYXRhKCkpCiAgICAgICAgICAgICBub3RpZnlG
b250TG9hZGVyKExvYWRlZCk7CiAgICAgICAgIGVsc2UgaWYgKCFpc1ZhbGlkKCkpCkBAIC0xMDMs
NyArMTAzLDcgQEAgdm9pZCBDU1NGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZQogICAg
ICAgICAoKml0KS0+Zm9udExvYWRlZCh0aGlzKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZF
TlRTKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJs
ZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5m
b250TG9hZEV2ZW50c0VuYWJsZWQoKSkKICAgICAgICAgbm90aWZ5TG9hZGluZ0RvbmUoKTsKICNl
bmRpZgogfQpAQCAtMTE4LDcgKzExOCw3IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IENT
U0ZvbnRGYWNlOjoKICAgICBDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciA9ICgqbV9zZWdt
ZW50ZWRGb250RmFjZXMuYmVnaW4oKSktPmZvbnRTZWxlY3RvcigpOwogCiAjaWYgRU5BQkxFKEZP
TlRfTE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2Fk
RXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IE5vdExvYWRlZCkKKyAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJs
ZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBOb3RMb2FkZWQpCiAgICAgICAgIG5vdGlmeUZvbnRMb2Fk
ZXIoTG9hZGluZyk7CiAjZW5kaWYKIApAQCAtMTI3LDcgKzEyNyw3IEBAIFBhc3NSZWZQdHI8U2lt
cGxlRm9udERhdGE+IENTU0ZvbnRGYWNlOjoKICAgICAgICAgaWYgKFJlZlB0cjxTaW1wbGVGb250
RGF0YT4gcmVzdWx0ID0gbV9zb3VyY2VzW2ldLT5nZXRGb250RGF0YShmb250RGVzY3JpcHRpb24s
IHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udFNlbGVjdG9yKSkgewogICAgICAg
ICAgICAgbV9hY3RpdmVTb3VyY2UgPSBtX3NvdXJjZXNbaV0uZ2V0KCk7CiAjaWYgRU5BQkxFKEZP
TlRfTE9BRF9FVkVOVFMpCi0gICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZyAmJiBtX3Nv
dXJjZXNbaV0tPmlzTG9hZGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9h
ZFN0YXRlID09IExvYWRpbmcgJiYgbV9zb3VyY2VzW2ldLT5pc0xvYWRlZCgpKSB7CiAgICAgICAg
ICAgICAgICAgbm90aWZ5Rm9udExvYWRlcihMb2FkZWQpOwogICAgICAgICAgICAgICAgIG5vdGlm
eUxvYWRpbmdEb25lKCk7CiAgICAgICAgICAgICB9CkBAIC0xMzcsNyArMTM3LDcgQEAgUGFzc1Jl
ZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NTRm9udEZhY2U6OgogICAgIH0KIAogI2lmIEVOQUJMRShG
T05UX0xPQURfRVZFTlRTKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9h
ZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nKSB7CisgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFi
bGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZykgewogICAgICAgICBub3RpZnlGb250TG9h
ZGVyKEVycm9yKTsKICAgICAgICAgbm90aWZ5TG9hZGluZ0RvbmUoKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAg
KEMpIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6
OmFkZEZvbnRGYWNlUnVsZShjbwogICAgICAgICAgICAgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4g
cnVsZTsKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKICAgICAgICAgICAgIC8vIEZJWE1F
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTE2IC0gVGhpcyBD
U1NGb250RmFjZVJ1bGUgaGFzIG5vIHBhcmVudC4KLSAgICAgICAgICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5h
YmxlZCgpKQogICAgICAgICAgICAgICAgIHJ1bGUgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PENTU0Zv
bnRGYWNlUnVsZT4oZm9udEZhY2VSdWxlLT5jcmVhdGVDU1NPTVdyYXBwZXIoKSk7CiAjZW5kaWYK
ICAgICAgICAgICAgIGZvbnRGYWNlID0gQ1NTRm9udEZhY2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxG
b250VHJhaXRzTWFzaz4odHJhaXRzTWFzayksIHJ1bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA1
IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKLSAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIw
MDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IE5pY2hvbGFz
IFNoYW5rcyA8d2Via2l0QG5pY2tzaGFua3MuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVy
aWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1wbGVMZW5n
dGhQcm9wZXJ0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZVBhZGRpbmc6CiAgICAgICAgIGFjY2VwdHNOZWdhdGl2
ZU51bWJlcnMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc1NoYXBlc0VuYWJsZWQoKTsKKyAgICAgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzU2hhcGVzRW5hYmxlZCgpOwogI2VuZGlmCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUJvdHRvbToKICAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKQEAgLTEwMzEs
MTMgKzEwMzEsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRLZXl3b3JkUHJvcGVydAog
ICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFdyYXBGbG93OgotICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmNzc0V4Y2x1c2lvbnNFbmFibGVkKCkpCisgICAgICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NFeGNsdXNpb25zRW5hYmxlZCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8g
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdGggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1heGltdW0gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUNsZWFyKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaDoKLSAgICAg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxlZCgpKQor
ICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3Nz
RXhjbHVzaW9uc0VuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
aWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDA0LDcgKzMwMDQsNyBAQCBib29sIENTU1Bh
cnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlECiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlSW5zaWRlOgogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRTaGFwZU91dHNpZGU6Ci0gICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6Y3NzU2hhcGVzRW5hYmxlZCgpKQorICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzU2hhcGVzRW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMzAxOSw3ICszMDE5LDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRAogICAgICAgICBicmVhazsKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0U2hhcGVNYXJnaW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNo
YXBlUGFkZGluZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCgpICYmICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5n
dGggfCBGTm9uTmVnKSk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzU2hhcGVzRW5hYmxlZCgpICYmICFpZCAmJiB2
YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnKSk7CiAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKQEAgLTEyMTkyLDcgKzEyMTky
LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJRChjb25zdAogI2lmIEVOQUJM
RShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICAgICAgLy8gSWYgdGhlIHByZWZpeCBp
cyAtYXBwbGUtIG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0byAtd2Via2l0LS4KICAgICAgICAgLy8g
VGhpcyBtYWtlcyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0ZXIgbG9uZ2VyLgotICAgICAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkK
KyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVn
YWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkKICAgICAgICAgICAgICYmIChoYXNQcmVmaXgo
YnVmZmVyLCBsZW5ndGgsICItYXBwbGUtIikgfHwgaGFzUHJlZml4KGJ1ZmZlciwgbGVuZ3RoLCAi
LWtodG1sLSIpKSkgewogICAgICAgICAgICAgbWVtbW92ZShidWZmZXIgKyA3LCBidWZmZXIgKyA2
LCBsZW5ndGggKyAxIC0gNik7CiAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCAiLXdlYmtpdCIs
IDcpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3Bw
CShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgQ1NTU2VnbWVudGVk
Rm9udEZhY2U6OmZvbnRMb2FkZWQoQ1MKICAgICBwcnVuZVRhYmxlKCk7CiAKICNpZiBFTkFCTEUo
Rk9OVF9MT0FEX0VWRU5UUykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExv
YWRFdmVudHNFbmFibGVkKCkgJiYgIWlzTG9hZGluZygpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYg
IWlzTG9hZGluZygpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4g
PiBjYWxsYmFja3M7CiAgICAgICAgIG1fY2FsbGJhY2tzLnN3YXAoY2FsbGJhY2tzKTsKICAgICAg
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNhbGxiYWNrcy5zaXplKCk7ICsraW5k
ZXgpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAkocmV2aXNpb24gMTU2MzM1
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtMjA5LDEyICsyMDksMTIgQEAgcHVibGljOgogICAgIHsKICNpZiBFTkFCTEUoU1RZTEVfU0NP
UEVEKQogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpIHx8IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpIHx8IFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpOwogI2Vs
c2UKLSAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5h
YmxlZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpOwogI2VuZGlmCiAjZWxzZQotICAgICAgICBB
U1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKTsKKyAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93
RE9NRW5hYmxlZCgpKTsKICNlbmRpZgogICAgICAgICBpZiAoIW1fc2NvcGVSZXNvbHZlcikKICAg
ICAgICAgICAgIG1fc2NvcGVSZXNvbHZlciA9IGFkb3B0UHRyKG5ldyBTdHlsZVNjb3BlUmVzb2x2
ZXIoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDgs
MTIgKzExNDgsMTIgQEAgYm9vbCBEb2N1bWVudDo6Y3NzU3RpY2t5UG9zaXRpb25FbmFibGVkKAog
CiBib29sIERvY3VtZW50Ojpjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1JlZ2lvbnNFbmFibGVkKCk7IAorICAgIHJldHVy
biBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1JlZ2lvbnNFbmFi
bGVkKCk7IAogfQogCiBib29sIERvY3VtZW50Ojpjc3NDb21wb3NpdGluZ0VuYWJsZWQoKSBjb25z
dAogewotICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NDb21wb3NpdGluZ0Vu
YWJsZWQoKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5jc3NDb21wb3NpdGluZ0VuYWJsZWQoKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6Y3NzR3Jp
ZExheW91dEVuYWJsZWQoKSBjb25zdApAQCAtNTY5OSw3ICs1Njk5LDcgQEAgSFRNTElGcmFtZUVs
ZW1lbnQqIERvY3VtZW50OjpzZWFtbGVzc1BhcgogYm9vbCBEb2N1bWVudDo6c2hvdWxkRGlzcGxh
eVNlYW1sZXNzbHlXaXRoUGFyZW50KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1M
RVNTKQotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2VhbWxlc3NJRnJhbWVzRW5h
YmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5zZWFtbGVzc0lGcmFtZXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVudCgp
OwogICAgIGlmICghb3duZXJFbGVtZW50KQpAQCAtNTk3Niw3ICs1OTc2LDcgQEAgYm9vbCBEb2N1
bWVudDo6aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgYwogTG9jYWxlJiBEb2N1bWVudDo6Z2V0Q2Fj
aGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogewogICAgIEF0b21pY1N0cmlu
ZyBsb2NhbGVLZXkgPSBsb2NhbGU7Ci0gICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkgfHwgIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVk
KCkpCisgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQo
KSkKICAgICAgICAgbG9jYWxlS2V5ID0gZGVmYXVsdExhbmd1YWdlKCk7CiAgICAgTG9jYWxlSWRl
bnRpZmllclRvTG9jYWxlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9sb2NhbGVDYWNoZS5hZGQo
bG9jYWxlS2V5LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NzUsNyArMTQ3NSw3IEBAIFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6Y3JlYXRlU2gKICAgICAgICAgZW5zdXJlVXNlckFn
ZW50U2hhZG93Um9vdCgpOwogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKCkp
IHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdXRo
b3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpKSB7CiAgICAgICAgIGFkZFNoYWRvd1Jv
b3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCksIFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRv
d1Jvb3QpKTsKICAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QoKTsKICAgICB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTk3LDcgKzk3LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9k
ZT4gYW5jaAogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbih0cnVlKQogewogI2lmIEVO
QUJMRShTSEFET1dfRE9NKQotICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYmIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9h
bmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9k
ZSgpKTsKKyAgICBBU1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8
fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFp
bmVyTm9kZSgpKTsKICNlbHNlCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9y
Tm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5vZGUoKSk7
CiAjZW5kaWYKQEAgLTExMSw3ICsxMTEsNyBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0
cjxOb2RlPiBhbmNoCiAgICAgLCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGZhbHNlKQogewog
I2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8
fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFp
bmVyTm9kZSgpKTsKKyAgICBBU1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9y
Tm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0g
Y29udGFpbmVyTm9kZSgpKTsKICNlbHNlCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1f
YW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5v
ZGUoKSk7CiAjZW5kaWYKQEAgLTEzMCw3ICsxMzAsNyBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFz
c1JlZlB0cjxOb2RlPiBhbmNoCiAgICAgLCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGZhbHNl
KQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYm
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkKKyAgICBBU1NFUlQo
KG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNoYWRvd0RPTUVuYWJsZWQoKSkKICAgICAgICAgICAgfHwgIW1fYW5jaG9yTm9kZSB8fCAhZWRp
dGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+
aXNTaGFkb3dSb290KCkpOwogI2Vsc2UKICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhZWRp
dGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+
aXNTaGFkb3dSb290KCkpOwpAQCAtODc1LDcgKzg3NSw3IEBAIENvbnRhaW5lck5vZGUqIFBvc2l0
aW9uOjpmaW5kUGFyZW50KGNvbnMKICAgICAvLyBGSVhNRTogU2VlIGh0dHA6Ly93ZWIudWcvODI2
OTcKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFkb3dET01FbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbm9k
ZS0+cGFyZW50Tm9kZSgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3Bw
CShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIERPTVNlbGVjdGlvbiogVHJlZVNjb3Bl
OjpnZXRTZWxlY3Rpb24oKQogICAgIC8vIGFzIGEgY29udGFpbmVyLiBJdCBpcyBub3cgZW5hYmxl
ZCBvbmx5IGlmIHJ1bnRpbWUgU2hhZG93IERPTSBmZWF0dXJlIGlzIGVuYWJsZWQuCiAgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjY5NwogI2lmIEVO
QUJMRShTSEFET1dfRE9NKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dE
T01FbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkpIHsKICAgICAgICAgbV9zZWxlY3Rpb24gPSBET01T
ZWxlY3Rpb246OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uLmdldCgp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAxNTYzMzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAt
NDEwLDcgKzQxMCw3IEBAIEVORAogICAgIG15ICRydW50aW1lQ29uZGl0aW9uYWwgPSAkZW5hYmxl
ZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVDb25kaXRpb25hbH07CiAgICAgaWYgKCRydW50aW1lQ29u
ZGl0aW9uYWwpIHsKICAgICAgICAgcHJpbnQgRiA8PEVORAotICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6JHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgpKQorICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4ke3J1bnRpbWVDb25kaXRpb25h
bH1FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogRU5ECiA7CkBAIC0xMDk2LDcgKzEwOTYs
NyBAQCBFTkQKICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKIHN0YXRpYyBKU0RPTVdyYXBwZXIq
IGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1FbGVtZW50PiBlbGVtZW50KQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
JHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgpKSB7CisgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJsZWQo
KSkgewogICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgZWxlbWVudC0+aXMkcGFyYW1ldGVyc3tm
YWxsYmFja0ludGVyZmFjZU5hbWV9KCkpOwogICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQ
UEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7ZmFsbGJhY2tKU0ludGVyZmFjZU5h
bWV9LCBlbGVtZW50LmdldCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAg
ICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFr
b3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChz
YW1Ad2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgpAQCAtMTY0Niw3ICsxNjQ2LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50
Ojppc1N0ZXBwYWJsZSgpIGNvbgogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1NwZWVjaEVuYWJs
ZWQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgUkFOR0UsIEVNQUlM
LCBVUkwsIENPTE9SIGFuZCBEQVRFL1RJTUUgaW5wdXQgdHlwZXMuCi0gICAgcmV0dXJuIG1faW5w
dXRUeXBlLT5zaG91bGRSZXNwZWN0U3BlZWNoQXR0cmlidXRlKCkgJiYgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c3BlZWNoSW5wdXRFbmFibGVkKCkgJiYgaGFzQXR0cmlidXRlKHdlYmtpdHNwZWVj
aEF0dHIpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdFNwZWVjaEF0dHJp
YnV0ZSgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3BlZWNo
SW5wdXRFbmFibGVkKCkgJiYgaGFzQXR0cmlidXRlKHdlYmtpdHNwZWVjaEF0dHIpOwogfQogCiAj
ZW5kaWYKQEAgLTE5NTAsNyArMTk1MCw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2V0dXBE
YXRlVGltZUNob28KICAgICBwYXJhbWV0ZXJzLm1pbmltdW0gPSBtaW5pbXVtKCk7CiAgICAgcGFy
YW1ldGVycy5tYXhpbXVtID0gbWF4aW11bSgpOwogICAgIHBhcmFtZXRlcnMucmVxdWlyZWQgPSBp
c1JlcXVpcmVkKCk7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmli
dXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJ
RW5hYmxlZCgpKQogICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsZSA9IGRlZmF1bHRMYW5ndWFnZSgp
OwogICAgIGVsc2UgewogICAgICAgICBBdG9taWNTdHJpbmcgY29tcHV0ZWRMb2NhbGUgPSBjb21w
dXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDcgKzUzNSw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWwKICNlbmRpZgogICAgIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gdHJhY2tEZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEhU
TUxUcmFja0VsZW1lbnQ+KHRoaXMpOwpAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6c2NoZWR1bGVEZWxheWVkQWMKICAgICB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkgJiYgKGFjdGlvblR5cGUgJiBDb25maWd1cmVUZXh0VHJhY2tzKSkKKyAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5h
YmxlZCgpICYmIChhY3Rpb25UeXBlICYgQ29uZmlndXJlVGV4dFRyYWNrcykpCiAgICAgICAgIHNl
dEZsYWdzKG1fcGVuZGluZ0FjdGlvbkZsYWdzLCBDb25maWd1cmVUZXh0VHJhY2tzKTsKICNlbmRp
ZgogCkBAIC03MDYsNyArNzA2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJG
aXJlZChUaQogICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gbG9h
ZE5leHRTb3VyY2VDaGlsZCBtYXkgZmlyZSAnYmVmb3JlbG9hZCcsIHdoaWNoIGNhbiBtYWtlIGFy
Yml0cmFyeSBET00gbXV0YXRpb25zLgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmICht
X3BlbmRpbmdBY3Rpb25GbGFncyAmIENvbmZpZ3VyZVRleHRUcmFja3MpKQorICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkgJiYgKG1fcGVuZGluZ0FjdGlvbkZsYWdzICYgQ29uZmlndXJlVGV4dFRyYWNrcykpCiAg
ICAgICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKICNlbmRpZgogCkBAIC03MTgsNyArNzE4LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaQogICAgIH0KIAogI2lm
IFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKG1fcGVuZGluZ0FjdGlvbkZsYWdz
ICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNhdGlvbikpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSAmJiAo
bV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBUZXh0VHJhY2tDaGFuZ2VzTm90aWZpY2F0aW9uKSkKICAg
ICAgICAgbm90aWZ5TWVkaWFQbGF5ZXJPZlRleHRUcmFja0NoYW5nZXMoKTsKICNlbmRpZgogCkBA
IC04MzMsNyArODMzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgp
CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCk7CiAgICAg
ICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgICAgICB1cGRhdGVBY3RpdmVUZXh0
VHJhY2tDdWVzKDApOwogI2VuZGlmCiAgICAgfQpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKIAogICAgIC8vIEhUTUxNZWRpYUVsZW1lbnQ6
OnRleHRUcmFja3NBcmVSZWFkeSB3aWxsIG5lZWQgIi4uLiB0aGUgdGV4dCB0cmFja3Mgd2hvc2Ug
bW9kZSB3YXMgbm90IGluIHRoZQogICAgIC8vIGRpc2FibGVkIHN0YXRlIHdoZW4gdGhlIGVsZW1l
bnQncyByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtIGxhc3Qgc3RhcnRlZCIuCi0gICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKKyAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKSB7CiAgICAgICAgIG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVj
dGlvbkJlZ2FuLmNsZWFyKCk7CiAgICAgICAgIGlmIChtX3RleHRUcmFja3MpIHsKICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kp
IHsKQEAgLTE4MjIsNyArMTgyMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlT
dGF0ZShNZWQKICAgICBSZWFkeVN0YXRlIG5ld1N0YXRlID0gc3RhdGljX2Nhc3Q8UmVhZHlTdGF0
ZT4oc3RhdGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGJvb2wgdHJhY2tzQXJl
UmVhZHkgPSAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSB8fCB0ZXh0VHJhY2tzQXJlUmVhZHkoKTsKKyAgICBib29sIHRyYWNrc0FyZVJlYWR5ID0gIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSB8fCB0ZXh0VHJhY2tzQXJlUmVhZHkoKTsKIAogICAgIGlmIChuZXdTdGF0ZSA9PSBv
bGRTdGF0ZSAmJiBtX3RyYWNrc0FyZVJlYWR5ID09IHRyYWNrc0FyZVJlYWR5KQogICAgICAgICBy
ZXR1cm47CkBAIC0xOTI3LDcgKzE5MjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJl
YWR5U3RhdGUoTWVkCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CiAgICAgdXBkYXRlTWVkaWFDb250
cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiAjZW5k
aWYKIH0KQEAgLTI4MTAsNyArMjgxMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJh
Y2tQcm9ncmVzc1QKICAgICAgICAgbWVkaWFDb250cm9scygpLT5wbGF5YmFja1Byb2dyZXNzZWQo
KTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAg
ICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogI2VuZGlmCiB9
CkBAIC0yODYyLDcgKzI4NjIsNyBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6cGVyY2VudExv
YWRlZCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1Ry
YWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQogewotICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYWRkQXVkaW9UcmFjayhBdWRp
b1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2spKTsKQEAgLTI4NzAsNyArMjg3MCw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGQKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRU
cmFja1ByaXZhdGU+IHBycFRyYWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIC8vIDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4
dCB0cmFja3MKQEAgLTI5MDUsNyArMjkwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFk
ZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7Ci0g
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhZGRWaWRlb1Ry
YWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjaykpOwpAQCAtMzAxMCw3ICszMDEw
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZUNhcHRpb25UcmFjawogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiB0cmFj
aykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1
ZGlvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7CkBAIC0zMDE4LDcgKzMwMTgsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2soUGFzCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKIHsKLSAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRleHRUcmFja3MoKS0+YXBw
ZW5kKHRyYWNrKTsKQEAgLTMwMjgsNyArMzAyOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
YWRkVGV4dFRyYWNrKFBhc3MKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNr
KFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICB2aWRlb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOwpA
QCAtMzAzNiw3ICszMDM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNr
KFBhcwogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFj
ayogdHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUodHJhY2spOwpAQCAtMzA0NCw3ICszMDQ0LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKAogCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewotICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRl
U2NvcGUgc2NvcGUodGhpcyk7CkBAIC0zMDU5LDcgKzMwNTksNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3Zl
VmlkZW9UcmFjayhWaWRlb1RyYWNrKiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7CkBA
IC0zMDg2LDcgKzMwODYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEluYmFu
ZFRyCiAKIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJh
Y2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcm
IGxhbmd1YWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkK
QEAgLTMxMjMsNyArMzEyMyw3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVt
ZW50OjoKIAogQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkK
IHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYg
KCFtX2F1ZGlvVHJhY2tzKQpAQCAtMzEzNCw3ICszMTM0LDcgQEAgQXVkaW9UcmFja0xpc3QqIEhU
TUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVAogCiBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50
Ojp0ZXh0VHJhY2tzKCkgCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIGlmICghbV90ZXh0VHJhY2tzKQpAQCAtMzE0NSw3ICszMTQ1LDcgQEAgVGV4
dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYQogCiBWaWRlb1RyYWNrTGlzdCog
SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MoKQogewotICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fdmlkZW9UcmFja3MpCkBAIC0zMTU4
LDcgKzMxNTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayhICiB7
CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpOwogCi0gICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQor
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyA0LjguMTAuMTIu
MyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcwpAQCAtMzE4NCw3ICszMTg0LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUZXh0VHJhYwogewogICAgIEFTU0VSVCh0
cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKIAotICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtMzYyNiw3ICsz
NjI2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaAogICAgIExP
RyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQiKTsKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICB1
cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogI2VuZGlmCiAKQEAgLTQx
MTcsNyArNDExNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQK
ICAgICBtX3JlYWR5U3RhdGUgPSBIQVZFX05PVEhJTkc7CiAgICAgdXBkYXRlTWVkaWFDb250cm9s
bGVyKCk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAg
ICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoMCk7CiAjZW5kaWYKIH0KQEAgLTQ0ODMs
NyArNDQ4Myw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGFzQ2xvc2VkQ2FwdGlvbnMKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHx8ICFtX3Rl
eHRUcmFja3MpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgfHwgIW1fdGV4dFRyYWNrcykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNr
cy0+bGVuZ3RoKCk7ICsraSkgewpAQCAtNDUyNyw3ICs0NTI3LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpzZXRDbG9zZWRDYXB0aW9ucwogICAgIG1fcGxheWVyLT5zZXRDbG9zZWRDYXB0aW9u
c1Zpc2libGUoY2xvc2VkQ2FwdGlvblZpc2libGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAgICAgICBtYXJrQ2FwdGlvbkFuZFN1YnRp
dGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQoSW1tZWRpYXRlbHkpOwogICAgICAgICB1cGRhdGVUZXh0
VHJhY2tEaXNwbGF5KCk7CiAgICAgfQpAQCAtNDcyNyw3ICs0NzI3LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogCiAgICAgbWVkaWFDb250cm9scygpLT5jaGFu
Z2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7CiAgICAgCi0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKSB7CiAgICAgICAgIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKICAgICAgICAgdXBkYXRl
QWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjbwog
ICAgIGlmIChuYW1lID09IHRpdGxlQXR0ciAmJiBzaGVldCgpKQogICAgICAgICBzaGVldCgpLT5z
ZXRUaXRsZSh2YWx1ZSk7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICBlbHNlIGlmIChu
YW1lID09IHNjb3BlZEF0dHIgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRF
bmFibGVkKCkpCisgICAgZWxzZSBpZiAobmFtZSA9PSBzY29wZWRBdHRyICYmIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpCiAgICAg
ICAgIHNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQoIXZhbHVlLmlzTnVsbCgpKTsKICNlbmRpZgogICAg
IGVsc2UgaWYgKG5hbWUgPT0gbWVkaWFBdHRyKSB7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBI
VE1MU3R5bGVFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbAogI2lmIEVOQUJMRShTVFlMRV9TQ09Q
RUQpCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQoYm9vbCBz
Y29wZWQpCiB7Ci0gICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVk
RW5hYmxlZCgpKTsKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSk7CiAKICAgICBpZiAoIWluRG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVu
dDo6cmVnaXN0ZXJXaXRoU2NvcGkKIAogdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojp1bnJlZ2lzdGVy
V2l0aFNjb3BpbmdOb2RlKENvbnRhaW5lck5vZGUqIHNjb3BlKQogewotICAgIEFTU0VSVChtX3Nj
b3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgIT0gTm90UmVnaXN0ZXJlZCB8fCAhUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkpOworICAgIEFTU0VSVChtX3Njb3Bl
ZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgIT0gTm90UmVnaXN0ZXJlZCB8fCAhUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSk7CiAgICAg
aWYgKCFpc1JlZ2lzdGVyZWRBc1Njb3BlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3Nyw3
ICsxNzcsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoU2NvCiAKIGJv
b2wgSFRNTFN0eWxlRWxlbWVudDo6c2NvcGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkgJiYgZmFzdEhhc0F0dHJpYnV0
ZShzY29wZWRBdHRyKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSAmJiBmYXN0SGFzQXR0cmlidXRlKHNjb3Bl
ZEF0dHIpOwogfQogCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnNldFNjb3BlZChib29sIHNjb3Bl
ZFZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50
OjpyZW1vdmVkRnJvbShDb250YQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7Ci0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNyY0F0
dHIpIHsKICAgICAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IHNjaGVkdWxlTG9hZCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVu
dDo6c2NoZWR1bGVMb2FkKCkKICAgICBpZiAobV9sb2FkVGltZXIuaXNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyAyLiBJZiB0aGUgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbW9kZSBpcyBub3Qgc2V0
IHRvIG9uZSBvZiBoaWRkZW4gb3Igc2hvd2luZywgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0yMzQs
NyArMjM0LDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaQogCiBi
b29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwoY29uc3QgS1VSTCYgdXJsKQogewotICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSFRNTE1l
ZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0lucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuY3BwCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQg
KEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5
OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAw
MSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9w
LmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9y
ZykKICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtOTksMTUgKzk5LDE1IEBAIHN0YXRpYyBPd25QdHI8SW5w
dXRUeXBlRmFjdG9yeU1hcD4gY3JlYXQKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6Y29s
b3IoKSwgJkNvbG9ySW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfREFURSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlRGF0
ZUVuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5pbnB1dFR5cGVEYXRlRW5hYmxlZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVO
YW1lczo6ZGF0ZSgpLCAmRGF0ZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCgp
KQogICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWUoKSwgJkRhdGVUaW1l
SW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJ
TUVMT0NBTCkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlRGF0ZVRp
bWVMb2NhbEVuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5pbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgpKQogICAgICAgICBtYXAt
PmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCgpLCAmRGF0ZVRpbWVMb2NhbElucHV0
VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjplbWFp
bCgpLCAmRW1haWxJbnB1dFR5cGU6OmNyZWF0ZSk7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGlj
IE93blB0cjxJbnB1dFR5cGVGYWN0b3J5TWFwPiBjcmVhdAogICAgIG1hcC0+YWRkKElucHV0VHlw
ZU5hbWVzOjpoaWRkZW4oKSwgJkhpZGRlbklucHV0VHlwZTo6Y3JlYXRlKTsKICAgICBtYXAtPmFk
ZChJbnB1dFR5cGVOYW1lczo6aW1hZ2UoKSwgJkltYWdlSW5wdXRUeXBlOjpjcmVhdGUpOwogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX01PTlRIKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjppbnB1dFR5cGVNb250aEVuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVNb250aEVuYWJsZWQoKSkKICAgICAgICAgbWFw
LT5hZGQoSW5wdXRUeXBlTmFtZXM6Om1vbnRoKCksICZNb250aElucHV0VHlwZTo6Y3JlYXRlKTsK
ICNlbmRpZgogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpudW1iZXIoKSwgJk51bWJlcklu
cHV0VHlwZTo6Y3JlYXRlKTsKQEAgLTEyNywxMiArMTI3LDEyIEBAIHN0YXRpYyBPd25QdHI8SW5w
dXRUeXBlRmFjdG9yeU1hcD4gY3JlYXQKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6c3Vi
bWl0KCksICZTdWJtaXRJbnB1dFR5cGU6OmNyZWF0ZSk7CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBl
TmFtZXM6OnRlbGVwaG9uZSgpLCAmVGVsZXBob25lSW5wdXRUeXBlOjpjcmVhdGUpOwogI2lmIEVO
QUJMRShJTlBVVF9UWVBFX1RJTUUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omlu
cHV0VHlwZVRpbWVFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBlVGltZUVuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQo
SW5wdXRUeXBlTmFtZXM6OnRpbWUoKSwgJlRpbWVJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYK
ICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dXJsKCksICZVUkxJbnB1dFR5cGU6OmNyZWF0
ZSk7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aW5wdXRUeXBlV2Vla0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVXZWVrRW5hYmxlZCgpKQogICAgICAg
ICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6d2VlaygpLCAmV2Vla0lucHV0VHlwZTo6Y3JlYXRl
KTsKICNlbmRpZgogICAgIC8vIE5vIG5lZWQgdG8gcmVnaXN0ZXIgInRleHQiIGJlY2F1c2UgaXQg
aXMgdGhlIGRlZmF1bHQgdHlwZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0hU
TUxDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvSFRNTENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC00Miw3ICs0Myw3IEBAIHVzaW5nIEhUTUxOYW1lczo6c2VsZWN0QXR0cjsKIAogY29uc3QgUXVh
bGlmaWVkTmFtZSYgSFRNTENvbnRlbnRFbGVtZW50Ojpjb250ZW50VGFnTmFtZShEb2N1bWVudCYp
CiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkp
CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRv
d0RPTUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIEhUTUxOYW1lczo6d2Via2l0U2hhZG93Q29u
dGVudFRhZzsKICAgICByZXR1cm4gSFRNTE5hbWVzOjpjb250ZW50VGFnOwogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24g
MTU2MzM1KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE5MDUsNyArMTkwNiw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5UG9saWN5
OjpyZXBvcnRCbG9ja2UKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjpleHBlcmltZW50YWxG
ZWF0dXJlc0VuYWJsZWQoKSBjb25zdAogewogI2lmIEVOQUJMRShDU1BfTkVYVCkKLSAgICByZXR1
cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9s
aWN5RmVhdHVyZXNFbmFibGVkKCk7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuZXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVy
ZXNFbmFibGVkKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjI0LDEwICsxNjI0LDEw
IEBAIGJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEEKICAgICBlbHNlIGlm
IChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFsbG93c0Jl
Zm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKICAgICAgICAgYWRkQmVmb3JlVW5sb2FkRXZlbnRM
aXN0ZW5lcih0aGlzKTsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAgIGVsc2Ug
aWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQgJiYgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCgpKSB7CisgICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2Vtb3Rpb25FdmVudCAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRldmljZU1vdGlvbkVuYWJsZWQoKSkgewog
ICAgICAgICBpZiAoRGV2aWNlTW90aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IERldmljZU1v
dGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSgpKSkKICAgICAgICAgICAgIGNvbnRyb2xsZXItPmFk
ZERldmljZUV2ZW50TGlzdGVuZXIodGhpcyk7Ci0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkpIHsKKyAgICB9IGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgp
KSB7CiAgICAgICAgIGlmIChEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIg
PSBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSgpKSkKICAgICAgICAgICAg
IGNvbnRyb2xsZXItPmFkZERldmljZUV2ZW50TGlzdGVuZXIodGhpcyk7CiAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAog
ICogICAgICAgICAgICAgICAgICAgICAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5vcmc+CiAg
KiAgICAgICAgICAgICAgICAgICAgIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3RvQGtkZS5v
cmc+CiAgKiAgICAgICAgICAgICAgICAgICAgIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtk
ZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqICAgICAgICAgICAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWls
LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBv
cC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KQEAgLTI3NjYsNyArMjc2Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExh
eW91dFRhc2tzKCkKICAgICAgICAgZnJhbWUoKS5sb2FkZXIoKS5kaWRMYXlvdXQobWlsZXN0b25l
c0FjaGlldmVkKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKKyAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJs
ZWQoKSkKICAgICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLT5mb250bG9hZGVyKCktPmRpZExheW91
dCgpOwogI2VuZGlmCiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
U2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDE1ICs2NiwxNSBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1
cChTZXR0aW5ncyYgc2V0dGluZ3MpCi0gICAgOiBtX29yaWdpbmFsQ1NTRXhjbHVzaW9uc0VuYWJs
ZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzRXhjbHVzaW9uc0VuYWJsZWQoKSkKLSAgICAs
IG1fb3JpZ2luYWxDU1NTaGFwZXNFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1No
YXBlc0VuYWJsZWQoKSkKKyAgICA6IG1fb3JpZ2luYWxDU1NFeGNsdXNpb25zRW5hYmxlZChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc0V4Y2x1c2lvbnNFbmFibGVk
KCkpCisgICAgLCBtX29yaWdpbmFsQ1NTU2hhcGVzRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKSkKICAgICAsIG1fb3JpZ2lu
YWxDU1NWYXJpYWJsZXNFbmFibGVkKHNldHRpbmdzLmNzc1ZhcmlhYmxlc0VuYWJsZWQoKSkKICNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICAsIG1fb3JpZ2luYWxTaGFkb3dET01FbmFibGVkKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkKLSAgICAsIG1fb3JpZ2lu
YWxBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjphdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpKQorICAgICwgbV9vcmln
aW5hbFNoYWRvd0RPTUVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zaGFkb3dET01FbmFibGVkKCkpCisgICAgLCBtX29yaWdpbmFsQXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5hdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpKQogI2VuZGlmCiAjaWYg
RU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICAsIG1fb3JpZ2luYWxTdHlsZVNjb3BlZChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNjb3BlZEVuYWJsZWQoKSkKKyAgICAsIG1fb3JpZ2luYWxT
dHlsZVNjb3BlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnN0eWxl
U2NvcGVkRW5hYmxlZCgpKQogI2VuZGlmCiAgICAgLCBtX29yaWdpbmFsRWRpdGluZ0JlaGF2aW9y
KHNldHRpbmdzLmVkaXRpbmdCZWhhdmlvclR5cGUoKSkKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0la
SU5HKQpAQCAtODUsNyArODUsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChT
ZXR0aW5nCiAgICAgLCBtX29yaWdpbmFsTWVkaWFUeXBlT3ZlcnJpZGUoc2V0dGluZ3MubWVkaWFU
eXBlT3ZlcnJpZGUoKSkKICAgICAsIG1fb3JpZ2luYWxDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3
aW5nKHNldHRpbmdzLmNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcoKSkKICAgICAsIG1fb3Jp
Z2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoc2V0dGluZ3MubW9ja1Njcm9sbGJhcnNFbmFibGVk
KCkpCi0gICAgLCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVk
KCkpCisgICAgLCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGFuZ0F0dHJpYnV0ZUF3YXJlRm9y
bUNvbnRyb2xVSUVuYWJsZWQoKSkKICAgICAsIG1faW1hZ2VzRW5hYmxlZChzZXR0aW5ncy5hcmVJ
bWFnZXNFbmFibGVkKCkpCiAgICAgLCBtX21pbmltdW1UaW1lckludGVydmFsKHNldHRpbmdzLm1p
bkRPTVRpbWVySW50ZXJ2YWwoKSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0xMDIsMTUg
KzEwMiwxNSBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChTZXR0aW5nCiAKIHZv
aWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNldHRpbmdz
KQogewotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0V4Y2x1c2lvbnNFbmFibGVk
KG1fb3JpZ2luYWxDU1NFeGNsdXNpb25zRW5hYmxlZCk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0Q1NTU2hhcGVzRW5hYmxlZChtX29yaWdpbmFsQ1NTU2hhcGVzRW5hYmxlZCk7Cisg
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NFeGNsdXNp
b25zRW5hYmxlZChtX29yaWdpbmFsQ1NTRXhjbHVzaW9uc0VuYWJsZWQpOworICAgIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTU2hhcGVzRW5hYmxlZChtX29y
aWdpbmFsQ1NTU2hhcGVzRW5hYmxlZCk7CiAgICAgc2V0dGluZ3Muc2V0Q1NTVmFyaWFibGVzRW5h
YmxlZChtX29yaWdpbmFsQ1NTVmFyaWFibGVzRW5hYmxlZCk7CiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93RE9NRW5hYmxlZChtX29y
aWdpbmFsU2hhZG93RE9NRW5hYmxlZCk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0
QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQobV9vcmlnaW5hbEF1dGhvclNoYWRv
d0RPTUZvckFueUVsZW1lbnRFbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNldFNoYWRvd0RPTUVuYWJsZWQobV9vcmlnaW5hbFNoYWRvd0RPTUVu
YWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0
QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQobV9vcmlnaW5hbEF1dGhvclNoYWRv
d0RPTUZvckFueUVsZW1lbnRFbmFibGVkKTsKICNlbmRpZgogI2lmIEVOQUJMRShTVFlMRV9TQ09Q
RUQpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKG1f
b3JpZ2luYWxTdHlsZVNjb3BlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zZXRTdHlsZVNjb3BlZEVuYWJsZWQobV9vcmlnaW5hbFN0eWxlU2NvcGVkKTsK
ICNlbmRpZgogICAgIHNldHRpbmdzLnNldEVkaXRpbmdCZWhhdmlvclR5cGUobV9vcmlnaW5hbEVk
aXRpbmdCZWhhdmlvcik7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTEyMSw3ICsx
MjEsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvCiAgICAgc2V0
dGluZ3Muc2V0TWVkaWFUeXBlT3ZlcnJpZGUobV9vcmlnaW5hbE1lZGlhVHlwZU92ZXJyaWRlKTsK
ICAgICBzZXR0aW5ncy5zZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKG1fb3JpZ2luYWxD
YW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKTsKICAgICBzZXR0aW5ncy5zZXRNb2NrU2Nyb2xs
YmFyc0VuYWJsZWQobV9vcmlnaW5hbE1vY2tTY3JvbGxiYXJzRW5hYmxlZCk7Ci0gICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQobV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk7CisgICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRMYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZChtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFi
bGVkKTsKICAgICBzZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKG1faW1hZ2VzRW5hYmxlZCk7CiAg
ICAgc2V0dGluZ3Muc2V0TWluRE9NVGltZXJJbnRlcnZhbChtX21pbmltdW1UaW1lckludGVydmFs
KTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBJbnRl
cm5hbFNldHRpbmdzOjpzZXRTaGFkb3dET01FbmFibAogICAgIH0KIAogI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNoYWRvd0RPTUVuYWJsZWQo
ZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICAvLyBFdmVuIFNIQURPV19E
T00gaXMgb2ZmLCBJbnRlcm5hbFNldHRpbmdzIGFsbG93cyBzZXRTaGFkb3dET01FbmFibGVkKGZh
bHNlKSB0bwogICAgIC8vIGhhdmUgYnJvYWRlciB0ZXN0IGNvdmVyYWdlLiBCdXQgaXQgY2Fubm90
IGJlIHNldFNoYWRvd0RPTUVuYWJsZWQodHJ1ZSkuCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpzZXRTaGFkb3dET01FbmFibAogdm9pZCBJbnRlcm5hbFNldHRpbmdz
OjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChib29sIGlzRW5hYmxlZCkK
IHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChpc0VuYWJsZWQpOworICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0QXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQoaXNFbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGlzRW5hYmxlZCk7CiAjZW5kaWYKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEludGVybmFsU2V0
dGluZ3M6OnNldEF1dGhvclNoYWRvd0RPCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFN0eWxl
U2NvcGVkRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkK
LSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQoZW5hYmxl
ZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTdHls
ZVNjb3BlZEVuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVk
KTsKICNlbmRpZgpAQCAtMzQ2LDEzICszNDYsMTMgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpz
ZXRUZXh0QXV0b3NpemluZwogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRDU1NFeGNsdXNpb25z
RW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9Q
QVJBTShlYyk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTRXhjbHVzaW9uc0Vu
YWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBJbnRlcm5h
bFNldHRpbmdzOjpzZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRDU1NTaGFwZXNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTU2hhcGVzRW5hYmxlZChlbmFibGVkKTsKIH0K
IAogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRDU1NWYXJpYWJsZXNFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBJbnRlcm5h
bFNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbgogCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNl
dExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
LSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGVu
YWJsZWQpOwogfQogCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQoYm9v
bCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1
NjQwMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyIEBACisyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4
ODMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JUZXN0UnVubmVy
KTogVXNlCisgICAgICAgIFNpbmdsZXRvbiBhY2Nlc3Nvci4KKyAgICAgICAgKFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGU6OnNldFNoYWRvd0RPTUVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZTo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbmpl
Y3RlZEJ1bmRsZTo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGU6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3F0L1dlYlBy
b2Nlc3NRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlh
bGl6ZVdlYlByb2Nlc3MpOiBEaXR0by4KKwogMjAxMy0wOS0yNSAgQWxsYW4gU2FuZGZlbGQgSmVu
c2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBidWlsZCB3
aXRoIFF0IDUuMiBRdFBvc2l0aW9uIG1vZHVsZQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJ
KHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTEsMTIgKzE5MSwxMiBA
QCB2b2lkIEluamVjdGVkQnVuZGxlOjpvdmVycmlkZUJvb2xQcmVmZXJlCiAKICNpZiBFTkFCTEUo
Q1NTX1JFR0lPTlMpCiAgICAgaWYgKHByZWZlcmVuY2UgPT0gIldlYktpdENTU1JlZ2lvbnNFbmFi
bGVkIikKLSAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJs
ZWQoZW5hYmxlZCk7CisgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDU1NfQ09NUE9TSVRJTkcpCiAgICAgaWYgKHByZWZlcmVuY2UgPT0gIldlYktpdENTU0NvbXBv
c2l0aW5nRW5hYmxlZCIpCi0gICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0Nv
bXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiAj
ZW5kaWYKIAogICAgIC8vIE1hcCB0aGUgbmFtZXMgdXNlZCBpbiBMYXlvdXRUZXN0cyB3aXRoIHRo
ZSBuYW1lcyB1c2VkIGluIFdlYkNvcmU6OlNldHRpbmdzIGFuZCBXZWJQcmVmZXJlbmNlc1N0b3Jl
LgpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFNlcmlhbExvYWRp
bmdFbmEKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZWQpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTY1NSw3ICs2NTUsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTaGFkb3dET01FbmFibGVkCiB2b2lkIEluamVjdGVk
QnVuZGxlOjpzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxF
KENTU19SRUdJT05TKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNF
bmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnNldENTU1JlZ2lvbnNFbmFibGUKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldENTU0Nv
bXBvc2l0aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKENTU19DT01QT1NJ
VElORykKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGluZ0VuYWJs
ZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5zZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnNldENTU0NvbXBvc2l0aW5nRW4KIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFNlYW1s
ZXNzSUZyYW1lc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShJRlJBTUVfU0VB
TUxFU1MpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5h
YmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDkxLDggKzI0OTEsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdl
CiAgICAgc2V0dGluZ3Muc2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKHN0b3JlLmdldEJv
b2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JW
aXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRBZ2dyZXNzaXZlVGlsZVJldGVudGlvbkVu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphZ2dyZXNz
aXZlVGlsZVJldGVudGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldENTU0N1c3Rv
bUZpbHRlckVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
Ojpjc3NDdXN0b21GaWx0ZXJFbmFibGVkS2V5KCkpKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OmNzc1JlZ2lvbnNFbmFibGVkS2V5KCkpKTsKLSAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDb21wb3NpdGluZ0VuYWJsZWRLZXkoKSkpOworICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0Vu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NSZWdp
b25zRW5hYmxlZEtleSgpKSk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5zZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDb21wb3NpdGluZ0VuYWJsZWRLZXkoKSkpOwogICAgIHNl
dHRpbmdzLnNldENTU0dyaWRMYXlvdXRFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6Y3NzR3JpZExheW91dEVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRp
bmdzLnNldFJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjpyZWdpb25CYXNlZENvbHVtbnNFbmFibGVkS2V5KCkpKTsKICAg
ICBzZXR0aW5ncy5zZXRXZWJHTEVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlBy
ZWZlcmVuY2VzS2V5Ojp3ZWJHTEVuYWJsZWRLZXkoKSkpOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVX
ZWJQcgogICAgIH0KICNlbmRpZgogCi0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0U3BlZWNoSW5wdXRFbmFibGVkKGZhbHNlKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNwZWVjaElucHV0RW5hYmxlZChmYWxz
ZSk7CiAKICAgICAvLyBXZSdsbCBvbmx5IGluc3RhbGwgdGhlIFF0IGJ1aWx0aW4gYnVuZGxlIGlm
IHdlIGRvbid0IGhhdmUgb25lIGdpdmVuIGJ5IHRoZSBVSSBwcm9jZXNzLgogICAgIC8vIEN1cnJl
bnRseSBvbmx5IFdUUiBwcm92aWRlcyBpdHMgb3duIGJ1bmRsZS4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNTY0MDIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDEzLTA5LTI0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzIGFzIGEgU2luZ2xldG9uIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0
RXhwb3J0cy5kZWYuaW46CisgICAgICAgIEV4cG9zZSBzaW5nbGV0b24gYWNjZXNzb3IgZm9yIERM
TCBjbGllbnRzLgorCiAyMDEzLTA5LTI1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5q
ZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGggUXQgNS4yIFF0
UG9zaXRpb24gbW9kdWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktp
dEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBv
cnRzLmRlZi5pbgkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQudmN4
cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTIzNyw4ICsyMzcsNiBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRQUVY
WFosID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3JlQEBRRUFB
WFhaKQogI2VuZGlmCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pc0FjdGl2ZUluc2VydGlv
blBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFosID9pc0FjdGl2ZUluc2VydGlvblBvaW50
QFdlYkNvcmVAQFlBX05QRUJWTm9kZUAxQEBaKQotICAgICAgICA/aXNDU1NFeGNsdXNpb25zRW5h
YmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKLSAgICAgICAgP2lzQ1NT
U2hhcGVzRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKICAgICAg
ICAgc3ltYm9sV2l0aFBvaW50ZXIoP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdl
YkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFosID9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJj
ZUxvYWRlckBXZWJDb3JlQEBRRUJBX05BRUJWU3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJv
bFdpdGhQb2ludGVyKD9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBBVkV4ZWNT
dGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlz
dEBXZWJDb3JlQEBAV1RGQEBAWiwgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BA
UEVBVkV4ZWNTdGF0ZUAzQFBFQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRP
TVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29y
ZUBAUUJFX05YWiwgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudEBXZWJDb3JlQEBRRUJBX05YWikKQEAgLTI5OSw2ICsyOTcsNyBAQCBFWFBPUlRTCiAgICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zZXRQc2V1ZG9ARWxlbWVudEBXZWJDb3JlQEBRQUVYQUJW
QXRvbWljU3RyaW5nQFdURkBAQFosID9zZXRQc2V1ZG9ARWxlbWVudEBXZWJDb3JlQEBRRUFBWEFF
QlZBdG9taWNTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NldE1l
ZGlhVHlwZU92ZXJyaWRlQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZTdHJpbmdAV1RGQEBAWiwg
P3NldE1lZGlhVHlwZU92ZXJyaWRlQFNldHRpbmdzQFdlYkNvcmVAQFFFQUFYQUVCVlN0cmluZ0BX
VEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0dGluZ3NARG9jdW1lbnRAV2Vi
Q29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWiwgP3NldHRpbmdzQERvY3VtZW50QFdlYkNvcmVAQFFF
QkFQRUFWU2V0dGluZ3NAMkBYWikKKyAgICAgICAgP3NoYXJlZEZlYXR1cmVzQFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXNAV2ViQ29yZUBAU0FBQVYxMkBYWgogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/c3Vic3RyaW5nQFN0cmluZ0BXVEZAQFFCRT9BVjEyQElJQFosID9zdWJzdHJpbmdAU3RyaW5n
QFdURkBAUUVCQT9BVjEyQElJQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zdWdnZXN0
ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFCRUFCVlN0cmluZ0BXVEZAQFhaLCA/
c3VnZ2VzdGVkVmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRRUJBQUVCVlN0cmluZ0BX
VEZAQFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/dGFyZ2V0QEhpc3RvcnlJdGVtQFdl
YkNvcmVAQFFCRUFCVlN0cmluZ0BXVEZAQFhaLCA/dGFyZ2V0QEhpc3RvcnlJdGVtQFdlYkNvcmVA
QFFFQkFBRUJWU3RyaW5nQFdURkBAWFopCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE1NjQwMikKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wOS0yNSAgQnJlbnQgRnVs
Z2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBv
cnQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRTdHlsZVNjb3BlZEVu
YWJsZWQpOiB1c2UKKyAgICAgICAgc2luZ2xldG9uIGFjY2Vzc29yLgorCiAyMDEzLTA5LTIzICBK
YWNreSBKaWFuZyAgPHpoYWppYW5nQGJsYWNrYmVycnkuY29tPgogCiAgICAgICAgIFtCbGFja0Jl
cnJ5XSBQb29yIHJlbmRlcmluZyBvcGVuaW5nIGEgR29vZ2xlIG1hcCBzaG9ydCBsaW5rCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChD
KSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0OjpzY2FsZVBhZ2VCeSgKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChib29sIGVuYWJsZWQp
CiB7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKGVu
YWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0
U3R5bGVTY29wZWRFbmFibGVkKGVuYWJsZWQpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE1NjQwMikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRF
ZmwuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDU1NSZWdpb25z
RW5hYmxlZCk6IFVzZSBzaW5nbGV0b24uCisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKiBld2svZXdr
X3NldHRpbmdzLmNwcDoKKyAgICAgICAgKGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9n
ZXQpOiBEaXR0by4KKyAgICAgICAgKGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9zZXQp
OgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfcHJpdl9u
ZXcpOiBEaXR0by4KKwogMjAxMy0wOS0yMCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvLnBy
YWRhQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIERvIG5vdCBleHBvc2UgYXJpYS1oZWxw
IGluIEFUSyBiYXNlZCBwbGF0Zm9ybXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAko
cmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAK
ICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKICAgICBD
b3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwogICAgIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0zMjAsMTMgKzMyMSwxMyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6c2V0Q1NTUmVnCiB7CiAgICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgcGFnZSk7CiAKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NS
ZWdpb25zRW5hYmxlZChlbmFibGVkKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKGVuYWJsZWQpOwogfQog
CiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVu
YWJsZWQpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3NldHRpbmdzLmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19zZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgICAgQ29w
eXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKICAgICBDb3B5
cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgICAgQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjU1LDcgKzI1
Niw3IEBAIHZvaWQgZXdrX3NldHRpbmdzX29iamVjdF9jYWNoZV9lbmFibGVfc2UKIEVpbmFfQm9v
bCBld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfZ2V0KCkKIHsKICNpZiBFTkFCTEUoU0hB
RE9XX0RPTSkKLSAgICByZXR1cm4gV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
ZG93RE9NRW5hYmxlZCgpOworICAgIHJldHVybiBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNjUsNyArMjY2LDcgQEAgRWluYV9Cb29sIGV3a19zZXR0
aW5nc19zaGFkb3dfZG9tX2VuYWJsZQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQogICAgIGVu
YWJsZSA9ICEhZW5hYmxlOwotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxlKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxlKTsKICAg
ICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBA
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgICAgQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgICAgQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
NzM2LDkgKzczNyw5IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld18K
ICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoInNhbnMiKTsK
ICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseSgic2FucyIpOwog
ICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGZhbHNl
KTsKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5h
YmxlZCh0cnVlKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKHRydWUpOwogI2lmIEVOQUJMRShJRlJBTUVf
U0VBTUxFU1MpCi0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxl
c3NJRnJhbWVzRW5hYmxlZCh0cnVlKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQodHJ1ZSk7CiAj
ZW5kaWYKICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFNjcmlwdEVuYWJsZWQodHJ1ZSk7CiAg
ICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZCh0cnVlKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwMikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA5LTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRDU1NS
ZWdpb25zRW5hYmxlZCk6IFVzZSBzaW5nbGV0b24uCisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OnNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5h
YmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFNlYW1sZXNzSUZy
YW1lc0VuYWJsZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTaGFk
b3dET01FbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0U3R5
bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKTogRGl0dG8uCisKIDIwMTMt
MDktMjQgIExvcmVuem8gVGlsdmUgIDxsdGlsdmVAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RL
XSBGaXggY29tcGlsYXRpb24gcHJvYmxlbXMgd2hlbiBzZXR0aW5nIEVOQUJMRV9EUkFHX1NVUFBP
UlQgPSBGQUxTRQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCShyZXZpc2lvbiAxNTYz
MzUpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogICogIENvcHlyaWdo
dCAoQykgMjAxMCBKb29uZSBIdXIgPGpvb25lQGtsZHAub3JnPgogICogIENvcHlyaWdodCAoQykg
MjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdodCAoQykg
MjAxMSBJZ2FsaWEgUy5MLgotICogIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTU3NSw3ICs1NzUs
NyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q1NTR3JpCiAKIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRDU1NSZWdpb25zRW5hYmxlZChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBib29sIGVuYWJsZWQpCiB7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsKIH0KIAog
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQo
V2ViS2l0V2ViVmlldyogd2ViVmlldywgYm9vbCBlbmFibGVkKQpAQCAtNTg4LDI4ICs1ODgsMjgg
QEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENTU0N1cwogdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OnNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZl
YXR1cmVzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKENTUF9ORVhUKQotICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBv
bGljeUZlYXR1cmVzRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZl
YXR1cmVzRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAj
aWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVk
KTsKICNlbmRpZgogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0U2hhZG93
RE9NRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVkKTsKKyAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNoYWRvd0RPTUVu
YWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNU
WUxFX1NDT1BFRCkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTdHlsZVNjb3BlZEVu
YWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zZXRTdHlsZVNjb3BlZEVuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIH0KIApJbmRleDog
U291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMTU2
MzM1KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEJvYmJ5
IFBvd2VycwogICogIENvcHlyaWdodCAoQykgMjAxMCBKb29uZSBIdXIgPGpvb25lQGtsZHAub3Jn
PgogICogIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICogIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CkBAIC0zNTgzLDcgKzM1ODQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRl
X3NldHRpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TWVkaWFTdHJlYW1FbmFibGVkKHNldHRpbmdzUHJp
dmF0ZS0+ZW5hYmxlTWVkaWFTdHJlYW0pOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0TWVkaWFTdHJlYW1FbmFibGVkKHNldHRpbmdzUHJp
dmF0ZS0+ZW5hYmxlTWVkaWFTdHJlYW0pOwogI2VuZGlmCiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDIpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6IFVz
ZSBzaW5nbGV0b24gYWNjZXNzb3IuCisgICAgICAgICgtW1dlYlZpZXcgX3NldERhc2hib2FyZEJl
aGF2aW9yOnRvOl0pOiBEaXR0by4KKwogMjAxMy0wOS0yNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIEpTQyBkZWJ1ZyBob29rcyB0byBwYXNzIGEgQ2Fs
bEZyYW1lKiBpbnN0ZWFkIG9mIGEgRGVidWdnZXJDYWxsRnJhbWUuCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNTYzMzUpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBn
bWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKQEAgLTE1MjEs
MTMgKzE1MjEsMTMgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVmZXJlbgog
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBzZXR0aW5ncy5zZXRDU1NDdXN0b21GaWx0ZXJF
bmFibGVkKFtwcmVmZXJlbmNlcyBjc3NDdXN0b21GaWx0ZXJFbmFibGVkXSk7CiAjZW5kaWYKLSAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChbcHJlZmVyZW5j
ZXMgY3NzUmVnaW9uc0VuYWJsZWRdKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRD
U1NDb21wb3NpdGluZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc0NvbXBvc2l0aW5nRW5hYmxlZF0p
OworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVn
aW9uc0VuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc1JlZ2lvbnNFbmFibGVkXSk7CisgICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NDb21wb3NpdGluZ0VuYWJs
ZWQoW3ByZWZlcmVuY2VzIGNzc0NvbXBvc2l0aW5nRW5hYmxlZF0pOwogI2lmIEVOQUJMRShXRUJf
QVVESU8pCiAgICAgc2V0dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKFtwcmVmZXJlbmNlcyB3ZWJB
dWRpb0VuYWJsZWRdKTsKICNlbmRpZgogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChbcHJlZmVy
ZW5jZXMgc2VhbWxlc3NJRnJhbWVzRW5hYmxlZF0pOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChbcHJlZmVyZW5j
ZXMgc2VhbWxlc3NJRnJhbWVzRW5hYmxlZF0pOwogI2VuZGlmCiAgICAgc2V0dGluZ3Muc2V0Q1NT
R3JpZExheW91dEVuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc0dyaWRMYXlvdXRFbmFibGVkXSk7CiAj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgLSAodm9pZClf
c2V0RGFzaGJvYXJkQmVoYXZpb3I6KFdlYkRhc2hibwogICAgICAgICAgICAgaWYgKF9wcml2YXRl
LT5wYWdlKQogICAgICAgICAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygpLnNldFVz
ZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKGZsYWcpOwogI2lmIEVOQUJMRShM
RUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICAgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChmbGFnKTsKKyAgICAgICAg
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0TGVnYWN5Q1NT
VmVuZG9yUHJlZml4ZXNFbmFibGVkKGZsYWcpOwogI2VuZGlmCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwMikKKysrIFNvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4My4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9xd2Vic2V0dGlu
Z3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOiBVc2Ugc2luZ2xl
dG9uIGFjY2Vzc29yLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRTZWFtbGVz
c0lGcmFtZXNFbmFibGVkKTogRGl0dG8uCisKIDIwMTMtMDktMjUgIEFsbGFuIFNhbmRmZWxkIEpl
bnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggYnVpbGQg
d2l0aCBRdCA1LjIgUXRQb3NpdGlvbiBtb2R1bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJzZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnNldHRpbmdzLmNwcAkocmV2aXNpb24gMTU2MzM1KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkv
cXdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgICAg
Q29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE3MywxMCArMTc0LDEwIEBAIHZvaWQgUVdl
YlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogCiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52
YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1JlZ2lvbnNFbmFibGVkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NT
UmVnaW9uc0VuYWJsZWQpKTsKLSAgICAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQodmFsdWUpOworICAgICAgICBXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKHZh
bHVlKTsKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NT
Q29tcG9zaXRpbmdFbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTQ29tcG9zaXRpbmdFbmFibGVk
KSk7Ci0gICAgICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0NvbXBv
c2l0aW5nRW5hYmxlZCh2YWx1ZSk7CisgICAgICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKHZhbHVlKTsK
ICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTR3JpZExh
eW91dEVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NHcmlkTGF5b3V0RW5hYmxlZCkpOwogICAg
ICAgICBzZXR0aW5ncy0+c2V0Q1NTR3JpZExheW91dEVuYWJsZWQodmFsdWUpOwpJbmRleDogU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDE1NjMzNSkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDcgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9nYW4gPHJv
YmVydEByb2JlcnRob2dhbi5uZXQ+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDksMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBDb3B5cmln
aHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotICAgIENvcHlyaWdo
dCAoQykgMjAwNywgMjAxMiBBcHBsZSBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEy
LCAyMDEzIEFwcGxlIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODYyLDcgKzg2Miw3IEBA
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdldFRyYWNrZWQKIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ewogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVkKTsKKyAgICBXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1sZXNz
SUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVk
KTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDAyKQorKysgU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTMtMDktMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dpbmRvd3NdIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0
b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4
ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKTog
VXNlIHNpbmdsZXRvbiBhY2Nlc3NvcgorCiAyMDEzLTA5LTI0ICBCcmVudCBGdWxnaGFtICA8YmZ1
bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5kb3dzXSBVbnJldmlld2VkIGNyYXNoIGZp
eCBhZnRlciByMTU2MzIxLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDE1NjMz
NSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NzgzLDEyICs0NzgzLDEyIEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2UKICAgICBociA9IHByZWZlcmVuY2VzLT5pc0NTU1JlZ2lvbnNFbmFibGVkKCZlbmFibGVkKTsK
ICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKCEhZW5hYmxlZCk7CisgICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZCgh
IWVuYWJsZWQpOwogCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+YXJlU2VhbWxlc3NJRnJhbWVzRW5h
YmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsK
LSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKCEh
ZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKCEhZW5hYmxlZCk7CiAKICAgICBociA9IHByZWZlcmVu
Y2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhy
KSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212604</attachid>
            <date>2013-09-25 10:57:04 -0700</date>
            <delta_ts>2013-09-25 11:19:04 -0700</delta_ts>
            <desc>Updated after removal of HTMLContentElement.cpp</desc>
            <filename>bug-121883-20130925105648.patch</filename>
            <type>text/plain</type>
            <size>127264</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMyBAQAorMjAxMy0wOS0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0
b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgV2luZG93
cyBpcyBleHBlcmllbmNpbmcgY3Jhc2hlcyB3aGVuIGNsaWVudCBwcm9ncmFtcyAoc3VjaCBhcwor
ICAgICAgICBEdW1wUmVuZGVyVHJlZSkgYXR0ZW1wIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUg
UnVudGltZUVuYWJsZWRGZWF0dXJlcworICAgICAgICBvYmplY3QuIFRoZSBpbmxpbmVkIHN0YXRp
YyBhY2Nlc3NvciBtZXRob2RzIGFyZSBub3QgYWNjZXNzaW5nCisgICAgICAgIG1lbW9yeSBzYWZl
bHkgKHdoZW4gY29tcGlsZWQgYnkgVmlzdWFsIFN0dWRpbykgcmVzdWx0aW5nIGluCisgICAgICAg
IGNyYXNoZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOiBTd2l0Y2gg
bWV0aG9kcyB0bworICAgICAgICBjb25mb3JtIHRvIGEgc2luZ2xldG9uIHBhdHRlcm4uCisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1ZGlvRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sTWVkaWFFbGVtZW50RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sQXVkaW9FbGVtZW50
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
VmlkZW9FbGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpodG1sU291cmNlRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUVycm9yRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp0aW1lUmFuZ2VzRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3JrZXJF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYlNv
Y2tldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
b3BlbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsb2NhbFN0b3JhZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlc3Npb25TdG9y
YWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0QXBwbGljYXRpb25D
YWNoZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
YXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRHZW9sb2NhdGlvbkVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Z2VvbG9j
YXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0SW5kZXhlZERCRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbmRleGVkREJFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENhbnZhc1BhdGhFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNhbnZhc1BhdGhFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc0V4Y2x1c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldENTU1NoYXBlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NSZWdpb25zRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGluZ0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzQ29t
cG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldEZvbnRMb2FkRXZlbnRzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2Via2l0RnVsbFNj
cmVlbkFQSUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdElzRnVsbFNjcmVlbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbFNjcmVlbktleWJv
YXJkSW5wdXRBbGxvd2VkRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdENhbmNlbEZ1bGxTY3Jl
ZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RXhpdEZ1bGxzY3JlZW5F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp0b3VjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0VG91Y2hFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldERldmljZU1vdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VNb3Rpb25FdmVudEVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b25kZXZp
Y2Vtb3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldERldmljZU9yaWVudGF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FdmVudEVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b25kZXZp
Y2VvcmllbnRhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0U3BlZWNoSW5wdXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNwZWVjaElucHV0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEdyYW1tYXJFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNjcmlwdGVkU3Bl
ZWNoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
Y3JpcHRlZFNwZWVjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaFJlY29nbml0aW9uRXJyb3JF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFNwZWVjaFJlY29nbml0aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaEdyYW1tYXJFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaEdyYW1tYXJMaXN0
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRG
aWxlU3lzdGVtRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFTdHJlYW1FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU3RyZWFtRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRHZXRVc2VyTWVkaWFF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dE1lZGlhU3RyZWFtRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpwZWVyQ29ubmVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0UGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMZWdh
Y3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdldEdhbWVwYWRzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRH
ZXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6cXVvdGFFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldFF1b3RhRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjptZWRpYVNvdXJjZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0TWVkaWFTb3VyY2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmVuY3J5cHRlZE1lZGlhRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRFbmNyeXB0ZWRNZWRpYUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0V2Via2l0VmlkZW9UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1dGhvclNoYWRvd0RPTUZvckFueUVs
ZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmN1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDdXN0b21ET01FbGVt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNj
b3BlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0U3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlucHV0VHlwZURhdGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldElucHV0VHlwZURhdGVFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVE
YXRlVGltZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlTW9udGhF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldElu
cHV0VHlwZU1vbnRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppbnB1dFR5cGVUaW1lRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVUaW1lRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVXZWVrRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVXZWVrRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpleHBlcmlt
ZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldENTU1Byb3BlcnR5TmFtZVByZWZpeCk6IFVzZSBzaW5nbGV0b24gYWNj
ZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlO
YW1lKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKTogR2VuZXJhdGUgc2lu
Z2xldG9uIHZlcnNpb24gb2YKKyAgICAgICAgYWNjZXNzb3JzLgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udExvYWRlZCk6
IFVzZSBzaW5nbGV0b24gYWNjZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6
OmdldEZvbnREYXRhKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZSk6IERp
dHRvLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNT
aW1wbGVMZW5ndGhQcm9wZXJ0eUlEKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
S2V5d29yZFByb3BlcnR5QW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmll
cnMpOgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Zm9udExvYWRlZCk6IERpdHRvLgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjplbnN1cmVTY29wZVJlc29sdmVyKTogRGl0dG8uCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjc3NSZWdpb25zRW5hYmxlZCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hvdWxkRGlzcGxheVNlYW1sZXNzbHlXaXRoUGFy
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDYWNoZWRMb2NhbGUpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0
ZVNoYWRvd1Jvb3QpOiBEaXR0by4KKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6ZmluZFBhcmVudCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmdldFNlbGVjdGlvbik6IERpdHRvLgorICAgICAg
ICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnRDb25zdHJ1Y3RvckludGVyaW9y
KTogR2VuZXJhdGUgc2luZ2xldG9uIHZlcnNpb24gb2YgYWNjZXNzb3JzLgorICAgICAgICAocHJp
bnRXcmFwcGVyRnVuY3Rpb25zKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzU3BlZWNoRW5h
YmxlZCk6IFVzZSBzaW5nbGV0b24gYWNjZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVEZWxheWVkQWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFk
ZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVk
aW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KToKKyAg
ICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFN0eWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFN0eWxlRWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY29waW5nTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpzY29wZWQpOgorICAgICAgICAqIGh0bWwv
SFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxl
bWVudDo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6
OmNhbkxvYWRVcmwpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXApOiBEaXR0by4KKyAgICAgICAgKiBwYWdl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmV4cGVyaW1lbnRhbEZlYXR1cmVzRW5hYmxlZCk6IERpdHRvLgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRk
RXZlbnRMaXN0ZW5lcik6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcyk6IERpdHRv
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0U2hhZG93RE9NRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVt
ZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTdHls
ZVNjb3BlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0Q1NTU2hhcGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRp
bmdzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk6CisKIDIwMTMt
MDktMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIxNTYzNTUpIExpbmtzIC8gaW50ZXJhY3RpdmUgZWxlbWVudHMgaW5zaWRlIG5lc3Rl
ZCB0YWJsZXMgYXJlIHVuY2xpY2thYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzUsNiArMzYsNyBAQAogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2lu
Y2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgpAQCAt
NDIsMjAxICs0NCwxODkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlzTG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGZh
bHNlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNEYXRhVHJhbnNmZXJJ
dGVtc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0dlb2xv
Y2F0aW9uRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5k
ZXhlZERCRW5hYmxlZCA9IGZhbHNlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1Rv
dWNoRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2aWNl
TW90aW9uRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2
aWNlT3JpZW50YXRpb25FbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aXNTcGVlY2hJbnB1dEVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0NhbnZhc1BhdGhFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0NTU1NoYXBlc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0NTU1JlZ2lvbnNFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzQ1NTQ29tcG9zaXRpbmdFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQgPSBmYWxzZTsKLQorUnVudGltZUVuYWJsZWRGZWF0dXJlczo6UnVudGltZUVuYWJsZWRGZWF0
dXJlcygpCisgICAgOiBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1Nl
c3Npb25TdG9yYWdlRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNF
bmFibGVkKGZhbHNlKQorICAgICwgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHRydWUpCisg
ICAgLCBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzR2VvbG9j
YXRpb25FbmFibGVkKHRydWUpCisgICAgLCBtX2lzSW5kZXhlZERCRW5hYmxlZChmYWxzZSkKKyAg
ICAsIG1faXNUb3VjaEVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNEZXZpY2VNb3Rpb25FbmFibGVk
KHRydWUpCisgICAgLCBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkKHRydWUpCisgICAgLCBt
X2lzU3BlZWNoSW5wdXRFbmFibGVkKHRydWUpCisgICAgLCBtX2lzQ2FudmFzUGF0aEVuYWJsZWQo
ZmFsc2UpCisgICAgLCBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXND
U1NTaGFwZXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzQ1NTUmVnaW9uc0VuYWJsZWQoZmFsc2Up
CisgICAgLCBtX2lzQ1NTQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKQorICAgICwgbV9pc0xhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGZhbHNlKQogI2lmIEVOQUJMRShTQ1JJ
UFRFRF9TUEVFQ0gpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzU2NyaXB0ZWRTcGVl
Y2hFbmFibGVkID0gZmFsc2U7CisgICAgLCBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkKGZhbHNl
KQogI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc01lZGlhU3RyZWFtRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzUGVlckNvbm5lY3Rpb25FbmFibGVkID0gdHJ1ZTsKKyAgICAsIG1faXNN
ZWRpYVN0cmVhbUVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQo
dHJ1ZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5h
YmxlZCA9IGZhbHNlOworICAgICwgbV9pc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChm
YWxzZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi1ib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlzR2FtZXBhZEVuYWJsZWQgPSBmYWxzZTsKKyAgICAsIG1faXNHYW1lcGFkRW5h
YmxlZChmYWxzZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotYm9vbCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjppc0ZpbGVTeXN0ZW1FbmFibGVkID0gZmFsc2U7CisgICAgLCBt
X2lzRmlsZVN5c3RlbUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9JMThOX0FQSSkKKyAgICAsIG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoZmFsc2UpCisj
ZW5kaWYKKyNpZiBFTkFCTEUoUVVPVEEpCisgICAgLCBtX2lzUXVvdGFFbmFibGVkKGZhbHNlKQor
I2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICwgbV9pc0Z1bGxTY3JlZW5B
UElFbmFibGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgICwg
bV9pc01lZGlhU291cmNlRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFU
KQorICAgICwgbV9pc1ZpZGVvVHJhY2tFbmFibGVkKHRydWUpCisjZWxzZQorICAgICwgbV9pc1Zp
ZGVvVHJhY2tFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgICwgbV9pc0VuY3J5cHRlZE1lZGlhRW5hYmxlZChmYWxzZSkKKyNlbmRp
ZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICwgbV9pc1NoYWRvd0RPTUVuYWJsZWQoZmFs
c2UpCisgICAgLCBtX2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoZmFsc2Up
CisjZW5kaWYKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgICwgbV9pc0N1c3RvbURP
TUVsZW1lbnRzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQp
CisgICAgLCBtX2lzU3R5bGVTY29wZWRFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxF
KElOUFVUX1RZUEVfREFURSkKKyAgICAsIG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZCh0cnVlKQor
I2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKKyAgICAs
IG1faXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKQorICAgICwgbV9pc0lucHV0VHlwZURhdGVUaW1lTG9j
YWxFbmFibGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKKyAg
ICAsIG1faXNJbnB1dFR5cGVNb250aEVuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX1RJTUUpCisgICAgLCBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQodHJ1ZSkKKyNl
bmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCisgICAgLCBtX2lzSW5wdXRUeXBlV2Vl
a0VuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShDU1BfTkVYVCkKKyAgICAsIG1fYXJl
RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGZhbHNlKQor
I2VuZGlmCisjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKKyAgICAsIG1fYXJlU2VhbWxlc3NJ
RnJhbWVzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRT
KQorICAgICwgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgoreworfQor
CitSdW50aW1lRW5hYmxlZEZlYXR1cmVzJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM+IHJ1bnRpbWVFbmFibGVkRmVhdHVyZXM7CiAKKyAgICByZXR1cm4gcnVudGltZUVuYWJs
ZWRGZWF0dXJlczsKK30KKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIGJvb2wgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQoKQogewotICAgIHJldHVybiBpc0ZpbGVT
eXN0ZW1FbmFibGVkICYmIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1
cm4gbV9pc0ZpbGVTeXN0ZW1FbmFibGVkICYmIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUo
KTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCi1ib29sIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkID0gZmFsc2U7
Ci0KIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVk
KCkKIHsKLSAgICByZXR1cm4gaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CisgICAgcmV0dXJu
IG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShW
SURFTykKLQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKQorYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKSBjb25zdAogewogICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpodG1sTWVkaWFFbGVtZW50RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Omh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
Omh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXll
cjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
U291cmNlRWxlbWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
U291cmNlRWxlbWVudEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6
aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUNv
bnRyb2xsZXJFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250
cm9sbGVyRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWls
YWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFi
bGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQoKSBj
b25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp0aW1lUmFuZ2VzRW5hYmxlZCgpCitib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3Jr
ZXJFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkV29ya2VyRW5h
YmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZh
aWxhYmxlKCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2ViU29ja2V0RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYlNvY2tldEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBXZWJT
b2NrZXQ6OmlzQXZhaWxhYmxlKCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQor
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKTsK
IH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxl
ZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZVN5bmNFbmFibGVk
KCkgY29uc3QKIHsKICAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFp
bGFibGUoKTsKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFFVT1RBKQotYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppc1F1b3RhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRnVsbFNj
cmVlbkFQSUVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc01lZGlhU291cmNlRW5hYmxlZCA9IGZh
bHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJS
WSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkKLSAgICBib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQgPSB0cnVlOwotI2Vsc2UKLSAgICBib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQgPSBmYWxzZTsKLSNl
bmRpZgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjppc0VuY3J5cHRlZE1lZGlhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aXNTaGFkb3dET01FbmFibGVkID0gZmFsc2U7Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCA9IGZhbHNlOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoU1RZTEVfU0NPUEVEKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1N0eWxl
U2NvcGVkRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9E
QVRFKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZURhdGVFbmFibGVk
ID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUVu
YWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUxv
Y2FsRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX01PTlRI
KQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9
IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCi1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSB0cnVlOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0lucHV0VHlwZVdlZWtFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KENTUF9ORVhUKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphcmVFeHBlcmltZW50YWxD
b250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
YXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
Rk9OVF9MT0FEX0VWRU5UUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNGb250TG9h
ZEV2ZW50c0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTMyLDYgKzMzLDcgQEAKICNkZWZpbmUgUnVudGltZUVuYWJsZWRGZWF0dXJlc19oCiAKICNp
bmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDM3MSArNDIsMzc0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIGdlbmVyYXRpb24gdG8gd29yayBwcm9wZXJseS4KIAogY2xh
c3MgUnVudGltZUVuYWJsZWRGZWF0dXJlcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVu
dGltZUVuYWJsZWRGZWF0dXJlcyk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0TG9jYWxT
dG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0xvY2FsU3RvcmFnZUVuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgeyByZXR1
cm4gaXNMb2NhbFN0b3JhZ2VFbmFibGVkOyB9CisgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xv
Y2FsU3RvcmFnZUVuYWJsZWQ7IH0KIAotICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb25TdG9yYWdl
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIHNlc3Npb25TdG9yYWdlRW5hYmxlZCgpIHsgcmV0dXJu
IGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZUVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgc2Vzc2lvblN0b3JhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0V2Via2l0
Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNXZWJraXROb3RpZmljYXRp
b25zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdE5vdGlmaWNh
dGlvbnNFbmFibGVkKCkgeyByZXR1cm4gaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
bV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3
ZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJraXROb3Rp
ZmljYXRpb25zRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgeyBy
ZXR1cm4gaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRp
b25DYWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBhcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQogCi0gICAgc3RhdGlj
IHZvaWQgc2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRGF0
YVRyYW5zZmVySXRlbXNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGF0
YVRyYW5zZmVySXRlbXNFbmFibGVkKCkgeyByZXR1cm4gaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9v
bCBkYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGF0YVRyYW5z
ZmVySXRlbXNFbmFibGVkOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRHZW9sb2NhdGlvbkVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgYm9vbCBnZW9sb2NhdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0dlb2xvY2F0
aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0R2VvbG9jYXRpb25FbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGdl
b2xvY2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvbkVuYWJsZWQ7
IH0KIAotICAgIHN0YXRpYyB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNJbmRleGVkREJFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJv
b2wgd2Via2l0SW5kZXhlZERCRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5kZXhlZERCRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIGluZGV4ZWREQkVuYWJsZWQoKSB7IHJldHVybiBpc0luZGV4ZWRE
QkVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgbV9pc0luZGV4ZWREQkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdl
YmtpdEluZGV4ZWREQkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5kZXhlZERCRW5hYmxl
ZDsgfQorICAgIGJvb2wgaW5kZXhlZERCRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmRl
eGVkREJFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoQ0FOVkFTX1BBVEgpCi0gICAgc3RhdGljIHZv
aWQgc2V0Q2FudmFzUGF0aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDYW52YXNQYXRoRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkg
eyByZXR1cm4gaXNDYW52YXNQYXRoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q2FudmFzUGF0aEVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0NhbnZhc1BhdGhFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCBjYW52YXNQYXRoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDYW52
YXNQYXRoRW5hYmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBzZXRDYW52YXNQYXRoRW5h
YmxlZChib29sKSB7IH0KLSAgICBzdGF0aWMgYm9vbCBjYW52YXNQYXRoRW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRDYW52YXNQYXRoRW5hYmxlZChib29sKSB7IH0KKyAg
ICBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQotICAgIHN0YXRpYyB2b2lkIHNldENTU0V4
Y2x1c2lvbnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIHsg
cmV0dXJuIGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENTU0V4Y2x1c2lv
bnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NFeGNsdXNpb25zRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQorICAgIGJvb2wgY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7IH0KICNlbHNlCi0gICAgc3RhdGljIHZvaWQgc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzRXhjbHVz
aW9uc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTRXhjbHVzaW9u
c0VuYWJsZWQoYm9vbCkgeyB9CisgICAgYm9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAg
IHN0YXRpYyB2b2lkIHNldENTU1NoYXBlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NT
aGFwZXNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzU2hhcGVzRW5h
YmxlZCgpIHsgcmV0dXJuIGlzQ1NTU2hhcGVzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTU2hh
cGVzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQ1NTU2hhcGVzRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXND
U1NTaGFwZXNFbmFibGVkOyB9CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIHNldENTU1NoYXBlc0Vu
YWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wpIHsgfQorICAg
IGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NSZWdpb25z
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0NTU1JlZ2lvbnNFbmFibGVkID0gaXNFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU1Jl
Z2lvbnNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBtX2lzQ1NTUmVnaW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNz
c1JlZ2lvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NTU1JlZ2lvbnNFbmFibGVkOyB9
CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wpIHsgfQot
ICAgIHN0YXRpYyBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2b2lkIHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzUmVnaW9u
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMg
dm9pZCBzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NDb21w
b3NpdGluZ0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NDb21wb3Np
dGluZ0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU0NvbXBvc2l0aW5nRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NDb21w
b3NpdGluZ0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNzc0NvbXBvc2l0aW5nRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7IH0KIAogI2lm
IEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIHN0YXRpYyB2b2lkIHNldEZvbnRMb2FkRXZl
bnRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIHsgcmV0
dXJuIGlzRm9udExvYWRFdmVudHNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRGb250TG9hZEV2ZW50
c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQorICAgIGJvb2wgZm9udExvYWRFdmVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBz
ZXRGb250TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgZm9udExv
YWRFdmVudHNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldEZvbnRMb2Fk
RXZlbnRzRW5hYmxlZChib29sKSB7IH0KKyAgICBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ICAgICAvLyBNb3ppbGxhIHZlcnNpb24KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2NyZWVu
QVBJRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgdm9pZCBzZXRXZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0Z1bGxTY3JlZW5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdElzRnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJl
dHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0RnVs
bFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2VkRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVl
bkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxs
U2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dFdlYmtpdEZ1bGxTY3JlZW5BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9
CisgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9h
cmRJbnB1dEFsbG93ZWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3
ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZDsgfQogCiAgICAgLy8gVzNDIHZlcnNpb24KLSAgICBzdGF0aWMgYm9vbCB3
ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVk
KCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdl
YmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQoKSB7
IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsc2Ny
ZWVuRW5hYmxlZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJs
ZWQ7IH0KKyAgICBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50RW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RXhpdEZ1
bGxzY3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVk
OyB9CisgICAgYm9vbCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJ
REVPKQotICAgIHN0YXRpYyBib29sIGF1ZGlvRW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIGh0
bWxNZWRpYUVsZW1lbnRFbmFibGVkKCk7Ci0gICAgc3RhdGljIGJvb2wgaHRtbEF1ZGlvRWxlbWVu
dEVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpOwot
ICAgIHN0YXRpYyBib29sIGh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyBi
b29sIG1lZGlhQ29udHJvbGxlckVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBtZWRpYUVycm9y
RW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIHRpbWVSYW5nZXNFbmFibGVkKCk7CisgICAgYm9v
bCBhdWRpb0VuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxNZWRpYUVsZW1lbnRFbmFibGVk
KCkgY29uc3Q7CisgICAgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAg
IGJvb2wgaHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxTb3Vy
Y2VFbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxl
ZCgpIGNvbnN0OworICAgIGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKSBjb25zdDsKKyAgICBib29s
IHRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKLSAgICBzdGF0aWMgYm9vbCBzaGFyZWRXb3JrZXJFbmFibGVkKCk7CisgICAgYm9v
bCBzaGFyZWRXb3JrZXJFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLSAgICBzdGF0aWMgYm9vbCB3ZWJTb2NrZXRFbmFibGVkKCk7CisgICAgYm9vbCB3
ZWJTb2NrZXRFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgc3RhdGljIGJvb2wgb3BlbkRhdGFiYXNlRW5hYmxlZCgpOwotICAgIHN0YXRpYyBi
b29sIG9wZW5EYXRhYmFzZVN5bmNFbmFibGVkKCk7CisgICAgYm9vbCBvcGVuRGF0YWJhc2VFbmFi
bGVkKCkgY29uc3Q7CisgICAgYm9vbCBvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpIGNvbnN0Owog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHN0YXRpYyBib29sIHRvdWNo
RW5hYmxlZCgpIHsgcmV0dXJuIGlzVG91Y2hFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0
VG91Y2hFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzVG91Y2hFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCB0b3VjaEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVG91Y2hFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRUb3VjaEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1Rv
dWNoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBzZXRE
ZXZpY2VNb3Rpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRGV2aWNlTW90aW9uRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGRldmljZU1vdGlvbkVuYWJsZWQoKSB7
IHJldHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBkZXZpY2VN
b3Rpb25FdmVudEVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLSAg
ICBzdGF0aWMgYm9vbCBvbmRldmljZW1vdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1v
dGlvbkVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldERldmljZU9yaWVudGF0aW9uRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpIHsgcmV0
dXJuIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNl
T3JpZW50YXRpb25FdmVudEVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU9yaWVudGF0aW9uRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIG9uZGV2aWNlb3JpZW50YXRpb25FbmFibGVkKCkgeyBy
ZXR1cm4gaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNl
dFNwZWVjaElucHV0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1NwZWVjaElucHV0RW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHNwZWVjaElucHV0RW5hYmxlZCgpIHsg
cmV0dXJuIGlzU3BlZWNoSW5wdXRFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3Bl
ZWNoRW5hYmxlZCgpIHsgcmV0dXJuIGlzU3BlZWNoSW5wdXRFbmFibGVkOyB9Ci0gICAgc3RhdGlj
IGJvb2wgd2Via2l0R3JhbW1hckVuYWJsZWQoKSB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxl
ZDsgfQorICAgIHZvaWQgc2V0RGV2aWNlTW90aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBt
X2lzRGV2aWNlTW90aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZGV2aWNlTW90
aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9Cisg
ICAgYm9vbCBkZXZpY2VNb3Rpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2
aWNlTW90aW9uRW5hYmxlZDsgfQorICAgIGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0RGV2
aWNlT3JpZW50YXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNEZXZpY2VPcmllbnRh
dGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGRldmljZU9yaWVudGF0aW9uRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KKyAg
ICBib29sIGRldmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQorICAgIGJvb2wgb25kZXZpY2VvcmllbnRhdGlv
bkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9
CisKKyAgICB2b2lkIHNldFNwZWVjaElucHV0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lz
U3BlZWNoSW5wdXRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzcGVlY2hJbnB1dEVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3BlZWNoSW5wdXRFbmFibGVkOyB9CisgICAgYm9v
bCB3ZWJraXRTcGVlY2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NwZWVjaElucHV0RW5h
YmxlZDsgfQorICAgIGJvb2wgd2Via2l0R3JhbW1hckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3BlZWNoSW5wdXRFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQot
ICAgIHN0YXRpYyB2b2lkIHNldFNjcmlwdGVkU3BlZWNoRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IHNjcmlwdGVkU3BlZWNoRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKCkgeyBy
ZXR1cm4gaXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRT
cGVlY2hSZWNvZ25pdGlvbkVycm9yRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hF
bmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FdmVudEVu
YWJsZWQoKSB7IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIHdlYmtpdFNwZWVjaEdyYW1tYXJFbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRlZFNwZWVj
aEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJs
ZWQoKSB7IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2Ny
aXB0ZWRTcGVlY2hFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNTY3JpcHRlZFNwZWVjaEVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHNjcmlwdGVkU3BlZWNoRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtp
dFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNw
ZWVjaEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRXJyb3JFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIGJv
b2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFy
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAg
ICBib29sIHdlYmtpdFNwZWVjaEdyYW1tYXJMaXN0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotICAgIHN0YXRpYyBib29sIGZpbGVTeXN0ZW1FbmFibGVkKCk7Ci0gICAgc3RhdGljIHZv
aWQgc2V0RmlsZVN5c3RlbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZmlsZVN5c3RlbUVuYWJsZWQoKSBjb25zdDsK
KyAgICB2b2lkIHNldEZpbGVTeXN0ZW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGaWxl
U3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9JMThOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBqYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQo
KTsKLSAgICBzdGF0aWMgdm9pZCBzZXRKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBi
b29sIGphdmFTY3JpcHRJMThOQVBJRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SmF2YVNj
cmlwdEkxOE5BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNKYXZhU2NyaXB0STE4TkFQ
SUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSAgICBzdGF0aWMgYm9vbCBtZWRpYVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlh
U3RyZWFtRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChi
b29sIGlzRW5hYmxlZCkgeyBpc01lZGlhU3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAg
IHN0YXRpYyBib29sIHdlYmtpdEdldFVzZXJNZWRpYUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlh
U3RyZWFtRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdE1lZGlhU3RyZWFtRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgYm9vbCBw
ZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZCAmJiBp
c1BlZXJDb25uZWN0aW9uRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldFBlZXJDb25uZWN0
aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1BlZXJDb25uZWN0aW9uRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxl
ZCgpIHsgcmV0dXJuIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CisgICAgYm9vbCBtZWRpYVN0
cmVhbUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1FbmFibGVkOyB9Cisg
ICAgdm9pZCBzZXRNZWRpYVN0cmVhbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc01lZGlh
U3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0R2V0VXNlck1lZGlh
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKyAgICBi
b29sIHdlYmtpdE1lZGlhU3RyZWFtRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0
cmVhbUVuYWJsZWQ7IH0KKworICAgIGJvb2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc01lZGlhU3RyZWFtRW5hYmxlZCAmJiBtX2lzUGVlckNvbm5lY3Rpb25FbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc1BlZXJDb25uZWN0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Vi
a2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gcGVlckNvbm5lY3Rp
b25FbmFibGVkKCk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BS
RUZJWEVTKQotICAgIHN0YXRpYyB2b2lkIHNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wg
bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xlZ2Fj
eUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBB
RCkKLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNHYW1lcGFkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IHdlYmtpdEdldEdhbWVwYWRzRW5hYmxlZCgpIHsgcmV0dXJuIGlzR2FtZXBhZEVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldFdlYmtpdEdldEdhbWVwYWRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBt
X2lzR2FtZXBhZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEdldEdhbWVw
YWRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHYW1lcGFkRW5hYmxlZDsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoUVVPVEEpCi0gICAgc3RhdGljIGJvb2wgcXVvdGFFbmFibGVkKCkgeyBy
ZXR1cm4gaXNRdW90YUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRRdW90YUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNRdW90YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29s
IHF1b3RhRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNRdW90YUVuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldFF1b3RhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzUXVvdGFFbmFibGVkID0g
aXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgc3Rh
dGljIGJvb2wgbWVkaWFTb3VyY2VFbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVNvdXJjZUVuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVNvdXJjZUVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgaXNNZWRpYVNvdXJjZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIG1lZGlh
U291cmNlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVNvdXJjZUVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldE1lZGlhU291cmNlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTWVk
aWFTb3VyY2VFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCi0gICAgc3RhdGljIGJvb2wgZW5jcnlwdGVkTWVkaWFFbmFibGVkKCkgeyBy
ZXR1cm4gaXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRFbmNy
eXB0ZWRNZWRpYUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNFbmNyeXB0ZWRNZWRpYUVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGVuY3J5cHRlZE1lZGlhRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuY3J5
cHRlZE1lZGlhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRW5jcnlwdGVkTWVkaWFFbmFi
bGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBzdGF0aWMgYm9vbCB3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHsgcmV0dXJuIGlzVmlkZW9U
cmFja0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc1ZpZGVvVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9Cisg
ICAgYm9vbCB3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaWRl
b1RyYWNrRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0V2Via2l0VmlkZW9UcmFja0VuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgbV9pc1ZpZGVvVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIHN0YXRpYyBib29sIHNoYWRvd0RPTUVu
YWJsZWQoKSB7IHJldHVybiBpc1NoYWRvd0RPTUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRTaGFkb3dET01FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU2hhZG93RE9NRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc2hhZG93RE9NRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTaGFkb3dET01FbmFibGVkOyB9CisgICAgdm9pZCBzZXRTaGFkb3dET01FbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IG1faXNTaGFkb3dET01FbmFibGVkID0gaXNFbmFibGVkOyB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBhdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpIHsgcmV0
dXJuIGlzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
dm9pZCBzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkID0gaXNFbmFibGVkOyB9
CisgICAgYm9vbCBhdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkID0gaXNFbmFibGVkOyB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0gICAgc3RhdGljIGJvb2wg
Y3VzdG9tRE9NRWxlbWVudHNFbmFibGVkKCkgeyByZXR1cm4gaXNDdXN0b21ET01FbGVtZW50c0Vu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRDdXN0b21ET01FbGVtZW50cyhib29sIGlzRW5h
YmxlZCkgeyBpc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJv
b2wgY3VzdG9tRE9NRWxlbWVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0N1c3RvbURP
TUVsZW1lbnRzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRE9NRWxlbWVudHMoYm9vbCBp
c0VuYWJsZWQpIHsgbV9pc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIHN0YXRpYyBib29sIHN0eWxl
U2NvcGVkRW5hYmxlZCgpIHsgcmV0dXJuIGlzU3R5bGVTY29wZWRFbmFibGVkOyB9Ci0gICAgc3Rh
dGljIHZvaWQgc2V0U3R5bGVTY29wZWRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU3R5bGVT
Y29wZWRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzdHlsZVNjb3BlZEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzU3R5bGVTY29wZWRFbmFibGVkOyB9CisgICAgdm9pZCBzZXRT
dHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1N0eWxlU2NvcGVkRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQot
ICAgIHN0YXRpYyBib29sIGlucHV0VHlwZURhdGVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5
cGVEYXRlRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlRGF0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIGlucHV0VHlwZURhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0
VHlwZURhdGVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVEYXRlRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRUeXBlRGF0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKLSAgICBz
dGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoKSB7IHJldHVybiBpc0lucHV0VHlw
ZURhdGVUaW1lRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVUaW1l
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRU
eXBlRGF0ZVRpbWVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlVGlt
ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
REFURVRJTUVMT0NBTCkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5h
YmxlZCgpIHsgcmV0dXJuIGlzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgdm9pZCBzZXRJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAg
Ym9vbCBpbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJ
bnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0
ZVRpbWVMb2NhbEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZURhdGVUaW1l
TG9jYWxFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX01PTlRIKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlwZU1vbnRoRW5hYmxlZCgpIHsgcmV0
dXJuIGlzSW5wdXRUeXBlTW9udGhFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5wdXRU
eXBlTW9udGhFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlTW9udGhFbmFibGVk
ID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVNb250aEVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5wdXRUeXBlTW9udGhFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5
cGVNb250aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQot
ICAgIHN0YXRpYyBib29sIGlucHV0VHlwZVRpbWVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5
cGVUaW1lRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZVRpbWVFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIGlucHV0VHlwZVRpbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0
VHlwZVRpbWVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVUaW1lRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKLSAgICBzdGF0aWMgYm9vbCBpbnB1
dFR5cGVXZWVrRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7IH0KLSAg
ICBzdGF0aWMgdm9pZCBzZXRJbnB1dFR5cGVXZWVrRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0lucHV0VHlwZVdlZWtFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVX
ZWVrRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVXZWVrRW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0SW5wdXRUeXBlV2Vla0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lu
cHV0VHlwZVdlZWtFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShD
U1BfTkVYVCkKLSAgICBzdGF0aWMgYm9vbCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xp
Y3lGZWF0dXJlc0VuYWJsZWQoKSB7IHJldHVybiBhcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJp
dHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRFeHBlcmltZW50
YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
YXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNF
bmFibGVkOyB9CisgICAgYm9vbCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0
dXJlc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1
cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RXhwZXJpbWVudGFsQ29u
dGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fYXJl
RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFi
bGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgc3RhdGlj
IGJvb2wgc2VhbWxlc3NJRnJhbWVzRW5hYmxlZCgpIHsgcmV0dXJuIGFyZVNlYW1sZXNzSUZyYW1l
c0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIHNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZVNl
YW1sZXNzSUZyYW1lc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNlYW1sZXNzSUZyYW1lc0VuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9hcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkID0gaXNFbmFi
bGVkOyB9CiAjZW5kaWYKIAotICAgIHN0YXRpYyBib29sIGxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1D
b250cm9sVUlFbmFibGVkKCkgeyByZXR1cm4gaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJv
bFVJRW5hYmxlZDsgfQorICAgIGJvb2wgbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQ7IH0KICAgICAvLyBUaGUgbGFuZyBhdHRyaWJ1dGUgc3VwcG9ydCBpcyBpbmNvbXBs
ZXRlIGFuZCBzaG91bGQgb25seSBiZSB0dXJuZWQgb24gZm9yIHRlc3RzLgotICAgIHN0YXRpYyB2
b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQorCisgICAgc3RhdGljIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMm
IHNoYXJlZEZlYXR1cmVzKCk7CiAKIHByaXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUu
Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlcygpIHsgfQorICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMoKTsKIAotICAgIHN0YXRpYyBib29sIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBz
dGF0aWMgYm9vbCBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1dl
YmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7
Ci0gICAgc3RhdGljIGJvb2wgaXNHZW9sb2NhdGlvbkVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wg
aXNJbmRleGVkREJFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzVG91Y2hFbmFibGVkOwotICAg
IHN0YXRpYyBib29sIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0Rl
dmljZU9yaWVudGF0aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1NwZWVjaElucHV0RW5h
YmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0NhbnZhc1BhdGhFbmFibGVkOwotICAgIHN0YXRpYyBi
b29sIGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNDU1NTaGFwZXNF
bmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzQ1NTUmVnaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGlj
IGJvb2wgaXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7Ci0gICAgV0VCQ09SRV9URVNUSU5HIHN0YXRp
YyBib29sIGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgYm9v
bCBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZDsKKyAgICBib29sIG1faXNTZXNzaW9uU3RvcmFnZUVu
YWJsZWQ7CisgICAgYm9vbCBtX2lzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQ7CisgICAgYm9v
bCBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzRGF0YVRyYW5zZmVy
SXRlbXNFbmFibGVkOworICAgIGJvb2wgbV9pc0dlb2xvY2F0aW9uRW5hYmxlZDsKKyAgICBib29s
IG1faXNJbmRleGVkREJFbmFibGVkOworICAgIGJvb2wgbV9pc1RvdWNoRW5hYmxlZDsKKyAgICBi
b29sIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9pc0RldmljZU9yaWVudGF0
aW9uRW5hYmxlZDsKKyAgICBib29sIG1faXNTcGVlY2hJbnB1dEVuYWJsZWQ7CisgICAgYm9vbCBt
X2lzQ2FudmFzUGF0aEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7
CisgICAgYm9vbCBtX2lzQ1NTU2hhcGVzRW5hYmxlZDsKKyAgICBib29sIG1faXNDU1NSZWdpb25z
RW5hYmxlZDsKKyAgICBib29sIG1faXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7CisgICAgYm9vbCBt
X2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CiAjaWYgRU5BQkxFKFND
UklQVEVEX1NQRUVDSCkKLSAgICBzdGF0aWMgYm9vbCBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsK
KyAgICBib29sIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7CiAjZW5kaWYKICNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0gICAgc3RhdGljIGJvb2wgaXNGaWxlU3lzdGVtRW5hYmxlZDsKKyAgICBi
b29sIG1faXNGaWxlU3lzdGVtRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfSTE4Tl9BUEkpCi0gICAgc3RhdGljIGJvb2wgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7
CisgICAgYm9vbCBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFTdHJlYW1FbmFibGVk
OwotICAgIHN0YXRpYyBib29sIGlzUGVlckNvbm5lY3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9p
c01lZGlhU3RyZWFtRW5hYmxlZDsKKyAgICBib29sIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHQU1FUEFEKQotICAgIHN0YXRpYyBib29sIGlzR2FtZXBh
ZEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzR2FtZXBhZEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICBzdGF0aWMgYm9vbCBpc0xlZ2Fj
eUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZDsKKyAgICBib29sIG1faXNMZWdhY3lDU1NWZW5kb3JQ
cmVmaXhlc0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShRVU9UQSkKLSAgICBzdGF0aWMg
Ym9vbCBpc1F1b3RhRW5hYmxlZDsKKyAgICBib29sIG1faXNRdW90YUVuYWJsZWQ7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOworICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFTb3Vy
Y2VFbmFibGVkOworICAgIGJvb2wgbV9pc01lZGlhU291cmNlRW5hYmxlZDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICBzdGF0aWMgYm9vbCBpc0VuY3J5cHRlZE1l
ZGlhRW5hYmxlZDsKKyAgICBib29sIG1faXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBzdGF0aWMgYm9vbCBpc1ZpZGVvVHJhY2tF
bmFibGVkOworICAgIGJvb2wgbV9pc1ZpZGVvVHJhY2tFbmFibGVkOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLSAgICBzdGF0aWMgYm9vbCBpc1NoYWRvd0RPTUVuYWJsZWQ7Ci0K
LSAgICBzdGF0aWMgYm9vbCBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkOwor
ICAgIGJvb2wgbV9pc1NoYWRvd0RPTUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzQXV0aG9yU2hhZG93
RE9NRm9yQW55RWxlbWVudEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCi0gICAgc3RhdGljIGJvb2wgaXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7CisgICAg
Ym9vbCBtX2lzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U1RZTEVfU0NPUEVEKQotICAgIHN0YXRpYyBib29sIGlzU3R5bGVTY29wZWRFbmFibGVkOworICAg
IGJvb2wgbV9pc1N0eWxlU2NvcGVkRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfREFURSkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZURhdGVFbmFibGVkOworICAg
IGJvb2wgbV9pc0lucHV0VHlwZURhdGVFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBl
RGF0ZVRpbWVFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBzdGF0
aWMgYm9vbCBpc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkOworICAgIGJvb2wgbV9pc0lu
cHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9NT05USCkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsKKyAg
ICBib29sIG1faXNJbnB1dFR5cGVNb250aEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX1RJTUUpCi0gICAgc3RhdGljIGJvb2wgaXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsK
KyAgICBib29sIG1faXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfV0VFSykKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZVdlZWtFbmFibGVk
OworICAgIGJvb2wgbV9pc0lucHV0VHlwZVdlZWtFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ1NQX05FWFQpCi0gICAgc3RhdGljIGJvb2wgYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkOworICAgIGJvb2wgbV9hcmVFeHBlcmltZW50YWxDb250
ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJ
RlJBTUVfU0VBTUxFU1MpCi0gICAgc3RhdGljIGJvb2wgYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxl
ZDsKKyAgICBib29sIG1fYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgc3RhdGljIGJvb2wgaXNGb250TG9hZEV2ZW50
c0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzRm9udExvYWRFdmVudHNFbmFibGVkOwogI2VuZGlmCiAK
KyAgICBmcmllbmQgTmV2ZXJEZXN0cm95ZWQ8UnVudGltZUVuYWJsZWRGZWF0dXJlcz47CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNs
YXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgUHJvcGVydHlOYW1lUHJlZml4IGdldENTU1Byb3BlcnR5
CiAgICAgc3dpdGNoIChmaXJzdENoYXIpIHsKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1Jf
UFJFRklYRVMpCiAgICAgY2FzZSAnYSc6Ci0gICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpsZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSAmJiBtYXRjaGVzQ1NTUHJvcGVy
dHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikpCisgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVz
RW5hYmxlZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAi
YXBwbGUiKSkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBsZTsKICAg
ICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGF0aWMgUHJvcGVydHlO
YW1lUHJlZml4IGdldENTU1Byb3BlcnR5CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShMRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICBjYXNlICdrJzoKLSAgICAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpICYmIG1h
dGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAia2h0bWwiKSkKKyAgICAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NT
VmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChw
cm9wZXJ0eU5hbWUsICJraHRtbCIpKQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVBy
ZWZpeEtIVE1MOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtMjIzLDcgKzIyMyw3IEBAIHN0
YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVydHlJREZvckoKICNpZiBFTkFCTEUoTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVMpCiAgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBsZToK
ICAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeEtIVE1MOgotICAgICAgICBBU1NFUlQoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkpOworICAg
ICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdh
Y3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSk7CiAgICAgICAgIHdyaXRlV2ViS2l0UHJlZml4
KGJ1ZmZlclB0cik7CiAgICAgICAgIGkgKz0gNTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQko
cmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdo
dCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFuZGVyc2NhQG1hYy5jb20+CiAjIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KICMgQ29weXJp
Z2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+Ci0jIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykg
MjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1jYy5pZC5hdT4KICMgQ29weXJpZ2h0IChDKSBS
ZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBD
b3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5
KC1pZXMpCkBAIC0xNDQ0LDExICsxNDQ0LDExIEBAIHN1YiBHZXRSdW50aW1lRW5hYmxlRnVuY3Rp
b25OYW1lCiB7CiAgICAgbXkgJHNpZ25hdHVyZSA9IHNoaWZ0OwogCi0gICAgIyBJZiBhIHBhcmFt
ZXRlciBpcyBnaXZlbiAoZS5nLiAiRW5hYmxlZEF0UnVudGltZT1GZWF0dXJlTmFtZSIpIHJldHVy
biB0aGUgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6e0ZlYXR1cmVOYW1lfUVuYWJsZWQoKSBtZXRo
b2QuCi0gICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoiIC4gVG9NZXRob2ROYW1l
KCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0pIC4g
IkVuYWJsZWQiIGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0
UnVudGltZSJ9ICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRS
dW50aW1lIn0gbmUgIlZBTFVFX0lTX01JU1NJTkciKTsKKyAgICAjIElmIGEgcGFyYW1ldGVyIGlz
IGdpdmVuIChlLmcuICJFbmFibGVkQXRSdW50aW1lPUZlYXR1cmVOYW1lIikgcmV0dXJuIHRoZSBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLntGZWF0dXJlTmFtZX1FbmFi
bGVkKCkgbWV0aG9kLgorICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJFbmFibGVkQXRSdW50aW1lIn0pIC4gIkVuYWJsZWQiIGlmICgkc2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9ICYmICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0gbmUgIlZBTFVFX0lTX01JU1NJTkci
KTsKIAotICAgICMgT3RoZXJ3aXNlIHJldHVybiBhIGZ1bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnttZXRob2ROYW1lfUVuYWJsZWQoKS4KLSAgICByZXR1cm4gIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OiIgLiBUb01ldGhvZE5hbWUoJHNpZ25hdHVyZS0+bmFtZSkgLiAiRW5h
YmxlZCI7CisgICAgIyBPdGhlcndpc2UgcmV0dXJuIGEgZnVuY3Rpb24gbmFtZWQgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS57bWV0aG9kTmFtZX1FbmFibGVkKCkuCisg
ICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIgLiBU
b01ldGhvZE5hbWUoJHNpZ25hdHVyZS0+bmFtZSkgLiAiRW5hYmxlZCI7CiB9CiAKIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAJKHJl
dmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBD
U1NGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZQogICAgIGZvbnRTZWxlY3Rvci0+Zm9u
dExvYWRlZCgpOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRl
ID09IExvYWRpbmcpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5n
KSB7CiAgICAgICAgIGlmIChzb3VyY2UtPmVuc3VyZUZvbnREYXRhKCkpCiAgICAgICAgICAgICBu
b3RpZnlGb250TG9hZGVyKExvYWRlZCk7CiAgICAgICAgIGVsc2UgaWYgKCFpc1ZhbGlkKCkpCkBA
IC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDU1NGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFj
ZQogICAgICAgICAoKml0KS0+Zm9udExvYWRlZCh0aGlzKTsKIAogI2lmIEVOQUJMRShGT05UX0xP
QURfRVZFTlRTKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50
c0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKICAgICAgICAgbm90aWZ5TG9hZGluZ0RvbmUo
KTsKICNlbmRpZgogfQpAQCAtMTE4LDcgKzExOCw3IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERh
dGE+IENTU0ZvbnRGYWNlOjoKICAgICBDU1NGb250U2VsZWN0b3IqIGZvbnRTZWxlY3RvciA9ICgq
bV9zZWdtZW50ZWRGb250RmFjZXMuYmVnaW4oKSktPmZvbnRTZWxlY3RvcigpOwogCiAjaWYgRU5B
QkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZv
bnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IE5vdExvYWRlZCkKKyAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50
c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBOb3RMb2FkZWQpCiAgICAgICAgIG5vdGlmeUZv
bnRMb2FkZXIoTG9hZGluZyk7CiAjZW5kaWYKIApAQCAtMTI3LDcgKzEyNyw3IEBAIFBhc3NSZWZQ
dHI8U2ltcGxlRm9udERhdGE+IENTU0ZvbnRGYWNlOjoKICAgICAgICAgaWYgKFJlZlB0cjxTaW1w
bGVGb250RGF0YT4gcmVzdWx0ID0gbV9zb3VyY2VzW2ldLT5nZXRGb250RGF0YShmb250RGVzY3Jp
cHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYywgZm9udFNlbGVjdG9yKSkgewog
ICAgICAgICAgICAgbV9hY3RpdmVTb3VyY2UgPSBtX3NvdXJjZXNbaV0uZ2V0KCk7CiAjaWYgRU5B
QkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZyAm
JiBtX3NvdXJjZXNbaV0tPmlzTG9hZGVkKCkpIHsKKyAgICAgICAgICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYm
IG1fbG9hZFN0YXRlID09IExvYWRpbmcgJiYgbV9zb3VyY2VzW2ldLT5pc0xvYWRlZCgpKSB7CiAg
ICAgICAgICAgICAgICAgbm90aWZ5Rm9udExvYWRlcihMb2FkZWQpOwogICAgICAgICAgICAgICAg
IG5vdGlmeUxvYWRpbmdEb25lKCk7CiAgICAgICAgICAgICB9CkBAIC0xMzcsNyArMTM3LDcgQEAg
UGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NTRm9udEZhY2U6OgogICAgIH0KIAogI2lmIEVO
QUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpm
b250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nKSB7CisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVu
dHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZykgewogICAgICAgICBub3RpZnlG
b250TG9hZGVyKEVycm9yKTsKICAgICAgICAgbm90aWZ5TG9hZGluZ0RvbmUoKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAkocmV2aXNpb24gMTU2NDA0
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAg
ICAgICAgKEMpIDIwMDcsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5v
cmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBDU1NGb250U2Vs
ZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjbwogICAgICAgICAgICAgUmVmUHRyPENTU0ZvbnRGYWNl
UnVsZT4gcnVsZTsKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKICAgICAgICAgICAgIC8v
IEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTE2IC0g
VGhpcyBDU1NGb250RmFjZVJ1bGUgaGFzIG5vIHBhcmVudC4KLSAgICAgICAgICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKKyAgICAgICAgICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZl
bnRzRW5hYmxlZCgpKQogICAgICAgICAgICAgICAgIHJ1bGUgPSBzdGF0aWNfcG9pbnRlcl9jYXN0
PENTU0ZvbnRGYWNlUnVsZT4oZm9udEZhY2VSdWxlLT5jcmVhdGVDU1NPTVdyYXBwZXIoKSk7CiAj
ZW5kaWYKICAgICAgICAgICAgIGZvbnRGYWNlID0gQ1NTRm9udEZhY2U6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxGb250VHJhaXRzTWFzaz4odHJhaXRzTWFzayksIHJ1bGUpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogQ29weXJpZ2h0IChD
KSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAoa2RlQGNhcmV3b2xmLmNvbSkKLSAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IE5p
Y2hvbGFzIFNoYW5rcyA8d2Via2l0QG5pY2tzaGFua3MuY29tPgogICogQ29weXJpZ2h0IChDKSAy
MDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
VG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2ht
b2JpbGUuY29tLykKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1w
bGVMZW5ndGhQcm9wZXJ0CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZVBhZGRpbmc6CiAgICAgICAgIGFjY2VwdHNO
ZWdhdGl2ZU51bWJlcnMgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmNzc1NoYXBlc0VuYWJsZWQoKTsKKyAgICAgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzU2hhcGVzRW5hYmxlZCgpOwogI2VuZGlmCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKICAgICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKQEAg
LTEwMzEsMTMgKzEwMzEsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGlzVmFsaWRLZXl3b3JkUHJv
cGVydAogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93OgotICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmNzc0V4Y2x1c2lvbnNFbmFibGVkKCkpCisgICAgICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NFeGNsdXNpb25zRW5hYmxlZCgpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1
ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdGggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0
YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1heGlt
dW0gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNsZWFyKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaDoK
LSAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxl
ZCgpKQorICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b25lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zMDExLDcgKzMwMTEsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlECiAjaWYgRU5BQkxFKENTU19TSEFQ
RVMpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlSW5zaWRlOgogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRTaGFwZU91dHNpZGU6Ci0gICAgICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCgpKQorICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzU2hhcGVzRW5hYmxlZCgpKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAg
ICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpAQCAtMzAyNiw3ICszMDI2LDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRAogICAgICAgICBicmVhazsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVNYXJnaW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFNoYXBlUGFkZGluZzoKLSAgICAgICAgdmFsaWRQcmltaXRpdmUgPSAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCgpICYmICFpZCAmJiB2YWxpZFVuaXQodmFsdWUs
IEZMZW5ndGggfCBGTm9uTmVnKSk7CisgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzU2hhcGVzRW5hYmxlZCgpICYmICFp
ZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnKSk7CiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFHRV9PUklFTlRBVElPTikKQEAgLTEyMTk5LDcg
KzEyMTk5LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJRChjb25zdAogI2lm
IEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICAgICAgLy8gSWYgdGhlIHBy
ZWZpeCBpcyAtYXBwbGUtIG9yIC1raHRtbC0sIGNoYW5nZSBpdCB0byAtd2Via2l0LS4KICAgICAg
ICAgLy8gVGhpcyBtYWtlcyB0aGUgc3RyaW5nIG9uZSBjaGFyYWN0ZXIgbG9uZ2VyLgotICAgICAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFi
bGVkKCkKKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkKICAgICAgICAgICAgICYmIChoYXNQ
cmVmaXgoYnVmZmVyLCBsZW5ndGgsICItYXBwbGUtIikgfHwgaGFzUHJlZml4KGJ1ZmZlciwgbGVu
Z3RoLCAiLWtodG1sLSIpKSkgewogICAgICAgICAgICAgbWVtbW92ZShidWZmZXIgKyA3LCBidWZm
ZXIgKyA2LCBsZW5ndGggKyAxIC0gNik7CiAgICAgICAgICAgICBtZW1jcHkoYnVmZmVyLCAiLXdl
YmtpdCIsIDcpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZh
Y2UuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVu
dGVkRm9udEZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgQ1NTU2Vn
bWVudGVkRm9udEZhY2U6OmZvbnRMb2FkZWQoQ1MKICAgICBwcnVuZVRhYmxlKCk7CiAKICNpZiBF
TkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgIWlzTG9hZGluZygpKSB7CisgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVk
KCkgJiYgIWlzTG9hZGluZygpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8TG9hZEZvbnRDYWxs
YmFjaz4gPiBjYWxsYmFja3M7CiAgICAgICAgIG1fY2FsbGJhY2tzLnN3YXAoY2FsbGJhY2tzKTsK
ICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IGNhbGxiYWNrcy5zaXplKCk7
ICsraW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAkocmV2aXNpb24g
MTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjA5LDEyICsyMDksMTIgQEAgcHVibGljOgogICAgIHsKICNpZiBFTkFCTEUoU1RZ
TEVfU0NPUEVEKQogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgICAgICBBU1NFUlQoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpIHx8IFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpIHx8IFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkp
OwogI2Vsc2UKLSAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2Nv
cGVkRW5hYmxlZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpOwogI2VuZGlmCiAjZWxzZQotICAg
ICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKTsK
KyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2hhZG93RE9NRW5hYmxlZCgpKTsKICNlbmRpZgogICAgICAgICBpZiAoIW1fc2NvcGVSZXNvbHZl
cikKICAgICAgICAgICAgIG1fc2NvcGVSZXNvbHZlciA9IGFkb3B0UHRyKG5ldyBTdHlsZVNjb3Bl
UmVzb2x2ZXIoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDE1NjQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNDgsMTIgKzExNDgsMTIgQEAgYm9vbCBEb2N1bWVudDo6Y3NzU3RpY2t5UG9zaXRpb25FbmFi
bGVkKAogCiBib29sIERvY3VtZW50Ojpjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1JlZ2lvbnNFbmFibGVkKCk7IAorICAg
IHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1JlZ2lv
bnNFbmFibGVkKCk7IAogfQogCiBib29sIERvY3VtZW50Ojpjc3NDb21wb3NpdGluZ0VuYWJsZWQo
KSBjb25zdAogewotICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NDb21wb3Np
dGluZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5jc3NDb21wb3NpdGluZ0VuYWJsZWQoKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6
Y3NzR3JpZExheW91dEVuYWJsZWQoKSBjb25zdApAQCAtNTY5OSw3ICs1Njk5LDcgQEAgSFRNTElG
cmFtZUVsZW1lbnQqIERvY3VtZW50OjpzZWFtbGVzc1BhcgogYm9vbCBEb2N1bWVudDo6c2hvdWxk
RGlzcGxheVNlYW1sZXNzbHlXaXRoUGFyZW50KCkgY29uc3QKIHsKICNpZiBFTkFCTEUoSUZSQU1F
X1NFQU1MRVNTKQotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2VhbWxlc3NJRnJh
bWVzRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5zZWFtbGVzc0lGcmFtZXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxl
bWVudCgpOwogICAgIGlmICghb3duZXJFbGVtZW50KQpAQCAtNTk3Nyw3ICs1OTc3LDcgQEAgYm9v
bCBEb2N1bWVudDo6aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkgYwogTG9jYWxlJiBEb2N1bWVudDo6
Z2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxlKQogewogICAgIEF0b21p
Y1N0cmluZyBsb2NhbGVLZXkgPSBsb2NhbGU7Ci0gICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkgfHwg
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlF
bmFibGVkKCkpCisgICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkgfHwgIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQoKSkKICAgICAgICAgbG9jYWxlS2V5ID0gZGVmYXVsdExhbmd1YWdlKCk7CiAgICAgTG9j
YWxlSWRlbnRpZmllclRvTG9jYWxlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9sb2NhbGVDYWNo
ZS5hZGQobG9jYWxlS2V5LCBudWxscHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0ODcsNyArMTQ4Nyw3IEBA
IFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVudDo6Y3JlYXRlU2gKICAgICAgICAgZW5zdXJl
VXNlckFnZW50U2hhZG93Um9vdCgpOwogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFi
bGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5hdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpKSB7CiAgICAgICAgIGFkZFNo
YWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRvY3VtZW50KCksIFNoYWRvd1Jvb3Q6OkF1dGhv
clNoYWRvd1Jvb3QpKTsKICAgICAgICAgcmV0dXJuIHNoYWRvd1Jvb3QoKTsKICAgICB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTk3LDcgKzk3LDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQ
dHI8Tm9kZT4gYW5jaAogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbih0cnVlKQogewog
I2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8
fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFp
bmVyTm9kZSgpKTsKKyAgICBBU1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9y
Tm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0g
Y29udGFpbmVyTm9kZSgpKTsKICNlbHNlCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1f
YW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5v
ZGUoKSk7CiAjZW5kaWYKQEAgLTExMSw3ICsxMTEsNyBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFz
c1JlZlB0cjxOb2RlPiBhbmNoCiAgICAgLCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGZhbHNl
KQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYm
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9y
Tm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0g
Y29udGFpbmVyTm9kZSgpKTsKKyAgICBBU1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1f
YW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5v
ZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKICNlbHNlCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUg
fHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRh
aW5lck5vZGUoKSk7CiAjZW5kaWYKQEAgLTEzMCw3ICsxMzAsNyBAQCBQb3NpdGlvbjo6UG9zaXRp
b24oUGFzc1JlZlB0cjxOb2RlPiBhbmNoCiAgICAgLCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9u
KGZhbHNlKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIEFTU0VSVCgobV9hbmNob3JO
b2RlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkKKyAgICBB
U1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkKICAgICAgICAgICAgfHwgIW1fYW5jaG9yTm9kZSB8
fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9y
Tm9kZS0+aXNTaGFkb3dSb290KCkpOwogI2Vsc2UKICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8
fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5jaG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9y
Tm9kZS0+aXNTaGFkb3dSb290KCkpOwpAQCAtODc1LDcgKzg3NSw3IEBAIENvbnRhaW5lck5vZGUq
IFBvc2l0aW9uOjpmaW5kUGFyZW50KGNvbnMKICAgICAvLyBGSVhNRTogU2VlIGh0dHA6Ly93ZWIu
dWcvODI2OTcKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm4gbm9kZS0+cGFyZW50Tm9kZSgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2Nv
cGUuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIERPTVNlbGVjdGlvbiogVHJl
ZVNjb3BlOjpnZXRTZWxlY3Rpb24oKQogICAgIC8vIGFzIGEgY29udGFpbmVyLiBJdCBpcyBub3cg
ZW5hYmxlZCBvbmx5IGlmIHJ1bnRpbWUgU2hhZG93IERPTSBmZWF0dXJlIGlzIGVuYWJsZWQuCiAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjY5Nwog
I2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFkb3dET01FbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkpIHsKICAgICAgICAgbV9zZWxlY3Rpb24g
PSBET01TZWxlY3Rpb246OmNyZWF0ZSh0aGlzKTsKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9u
LmdldCgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAx
NTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5
KQpAQCAtNDEwLDcgKzQxMCw3IEBAIEVORAogICAgIG15ICRydW50aW1lQ29uZGl0aW9uYWwgPSAk
ZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVDb25kaXRpb25hbH07CiAgICAgaWYgKCRydW50
aW1lQ29uZGl0aW9uYWwpIHsKICAgICAgICAgcHJpbnQgRiA8PEVORAotICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6JHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgpKQorICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4ke3J1bnRpbWVDb25k
aXRpb25hbH1FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogRU5ECiA7CkBAIC0xMDk2LDcg
KzEwOTYsNyBAQCBFTkQKICAgICAgICAgICAgIHByaW50IEYgPDxFTkQKIHN0YXRpYyBKU0RPTVdy
YXBwZXIqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1lfVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6JHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgpKSB7CisgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiR7cnVudGltZUNvbmRpdGlvbmFsfUVu
YWJsZWQoKSkgewogICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgZWxlbWVudC0+aXMkcGFyYW1l
dGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9KCkpOwogICAgICAgICByZXR1cm4gQ1JFQVRFX0RP
TV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwgJHBhcmFtZXRlcnN7ZmFsbGJhY2tKU0ludGVy
ZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3
IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAq
ICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9z
a3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2Vp
bmlnIChzYW1Ad2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTY0Niw3ICsxNjQ2LDcgQEAgYm9vbCBIVE1MSW5wdXRF
bGVtZW50Ojppc1N0ZXBwYWJsZSgpIGNvbgogYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1NwZWVj
aEVuYWJsZWQoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgUkFOR0Us
IEVNQUlMLCBVUkwsIENPTE9SIGFuZCBEQVRFL1RJTUUgaW5wdXQgdHlwZXMuCi0gICAgcmV0dXJu
IG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0U3BlZWNoQXR0cmlidXRlKCkgJiYgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c3BlZWNoSW5wdXRFbmFibGVkKCkgJiYgaGFzQXR0cmlidXRlKHdlYmtp
dHNwZWVjaEF0dHIpOworICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdFNwZWVj
aEF0dHJpYnV0ZSgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c3BlZWNoSW5wdXRFbmFibGVkKCkgJiYgaGFzQXR0cmlidXRlKHdlYmtpdHNwZWVjaEF0dHIpOwog
fQogCiAjZW5kaWYKQEAgLTE5NTAsNyArMTk1MCw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6
c2V0dXBEYXRlVGltZUNob28KICAgICBwYXJhbWV0ZXJzLm1pbmltdW0gPSBtaW5pbXVtKCk7CiAg
ICAgcGFyYW1ldGVycy5tYXhpbXVtID0gbWF4aW11bSgpOwogICAgIHBhcmFtZXRlcnMucmVxdWly
ZWQgPSBpc1JlcXVpcmVkKCk7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5n
QXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZCgpKQogICAgICAgICBwYXJhbWV0ZXJzLmxvY2FsZSA9IGRlZmF1bHRMYW5n
dWFnZSgpOwogICAgIGVsc2UgewogICAgICAgICBBdG9taWNTdHJpbmcgY29tcHV0ZWRMb2NhbGUg
PSBjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM1LDcgKzUzNSw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWwKICNlbmRpZgogICAg
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGF1dG8gdHJhY2tEZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZU
eXBlPEhUTUxUcmFja0VsZW1lbnQ+KHRoaXMpOwpAQCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6c2NoZWR1bGVEZWxheWVkQWMKICAgICB9CiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkgJiYgKGFjdGlvblR5cGUgJiBDb25maWd1cmVUZXh0VHJhY2tzKSkKKyAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpICYmIChhY3Rpb25UeXBlICYgQ29uZmlndXJlVGV4dFRyYWNrcykpCiAgICAg
ICAgIHNldEZsYWdzKG1fcGVuZGluZ0FjdGlvbkZsYWdzLCBDb25maWd1cmVUZXh0VHJhY2tzKTsK
ICNlbmRpZgogCkBAIC03MDYsNyArNzA2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2Fk
VGltZXJGaXJlZChUaQogICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsg
Ly8gbG9hZE5leHRTb3VyY2VDaGlsZCBtYXkgZmlyZSAnYmVmb3JlbG9hZCcsIHdoaWNoIGNhbiBt
YWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
ICYmIChtX3BlbmRpbmdBY3Rpb25GbGFncyAmIENvbmZpZ3VyZVRleHRUcmFja3MpKQorICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkgJiYgKG1fcGVuZGluZ0FjdGlvbkZsYWdzICYgQ29uZmlndXJlVGV4dFRyYWNr
cykpCiAgICAgICAgIGNvbmZpZ3VyZVRleHRUcmFja3MoKTsKICNlbmRpZgogCkBAIC03MTgsNyAr
NzE4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaQogICAgIH0K
IAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNLX01FTlUpCi0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKG1fcGVuZGluZ0FjdGlv
bkZsYWdzICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNhdGlvbikpCisgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSAmJiAobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBUZXh0VHJhY2tDaGFuZ2VzTm90aWZpY2F0aW9u
KSkKICAgICAgICAgbm90aWZ5TWVkaWFQbGF5ZXJPZlRleHRUcmFja0NoYW5nZXMoKTsKICNlbmRp
ZgogCkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9y
TG9hZCgpCiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCk7
CiAgICAgICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgICAgICB1cGRhdGVBY3Rp
dmVUZXh0VHJhY2tDdWVzKDApOwogI2VuZGlmCiAgICAgfQpAQCAtODk4LDcgKzg5OCw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKIAogICAgIC8vIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja3NBcmVSZWFkeSB3aWxsIG5lZWQgIi4uLiB0aGUgdGV4dCB0cmFja3Mg
d2hvc2UgbW9kZSB3YXMgbm90IGluIHRoZQogICAgIC8vIGRpc2FibGVkIHN0YXRlIHdoZW4gdGhl
IGVsZW1lbnQncyByZXNvdXJjZSBzZWxlY3Rpb24gYWxnb3JpdGhtIGxhc3Qgc3RhcnRlZCIuCi0g
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
IHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CiAgICAgICAgIG1fdGV4dFRyYWNrc1doZW5SZXNvdXJj
ZVNlbGVjdGlvbkJlZ2FuLmNsZWFyKCk7CiAgICAgICAgIGlmIChtX3RleHRUcmFja3MpIHsKICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgp
OyArK2kpIHsKQEAgLTE4MjIsNyArMTgyMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0
UmVhZHlTdGF0ZShNZWQKICAgICBSZWFkeVN0YXRlIG5ld1N0YXRlID0gc3RhdGljX2Nhc3Q8UmVh
ZHlTdGF0ZT4oc3RhdGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGJvb2wgdHJh
Y2tzQXJlUmVhZHkgPSAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSB8fCB0ZXh0VHJhY2tzQXJlUmVhZHkoKTsKKyAgICBib29sIHRyYWNrc0FyZVJlYWR5
ID0gIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSB8fCB0ZXh0VHJhY2tzQXJlUmVhZHkoKTsKIAogICAgIGlmIChuZXdTdGF0
ZSA9PSBvbGRTdGF0ZSAmJiBtX3RyYWNrc0FyZVJlYWR5ID09IHRyYWNrc0FyZVJlYWR5KQogICAg
ICAgICByZXR1cm47CkBAIC0xOTI3LDcgKzE5MjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldFJlYWR5U3RhdGUoTWVkCiAgICAgdXBkYXRlUGxheVN0YXRlKCk7CiAgICAgdXBkYXRlTWVk
aWFDb250cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7
CiAjZW5kaWYKIH0KQEAgLTI4MTAsNyArMjgxMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cGxheWJhY2tQcm9ncmVzc1QKICAgICAgICAgbWVkaWFDb250cm9scygpLT5wbGF5YmFja1Byb2dy
ZXNzZWQoKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KQogICAgICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogI2Vu
ZGlmCiB9CkBAIC0yODYyLDcgKzI4NjIsNyBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6cGVy
Y2VudExvYWRlZCgpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRB
dWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQogewotICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYWRkQXVkaW9UcmFj
ayhBdWRpb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2spKTsKQEAgLTI4NzAsNyArMjg3MCw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGQKIAogdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFu
ZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJh
bmQgdGV4dCB0cmFja3MKQEAgLTI5MDUsNyArMjkwNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRBZGQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
ckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2sp
CiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5h
YmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhZGRW
aWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBUcmFjaykpOwpAQCAtMzAxMCw3
ICszMDEwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjbG9zZUNhcHRpb25UcmFjawogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
PiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1ZGlvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7CkBAIC0zMDE4LDcgKzMwMTgsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2soUGFzCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaykKIHsKLSAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHRleHRUcmFja3Mo
KS0+YXBwZW5kKHRyYWNrKTsKQEAgLTMwMjgsNyArMzAyOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6YWRkVGV4dFRyYWNrKFBhc3MKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRl
b1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4gdHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB2aWRlb1RyYWNrcygpLT5hcHBlbmQodHJh
Y2spOwpAQCAtMzAzNiw3ICszMDM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRl
b1RyYWNrKFBhcwogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2soQXVk
aW9UcmFjayogdHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUodHJhY2spOwpAQCAtMzA0NCw3ICszMDQ0
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKAogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUZXh0VHJhY2sqIHRyYWNrKQogewotICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgVHJhY2tEaXNwbGF5
VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CkBAIC0zMDU5LDcgKzMwNTksNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhUCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFj
ayk7CkBAIC0zMDg2LDcgKzMwODYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFs
bEluYmFuZFRyCiAKIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRU
ZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBT
dHJpbmcmIGxhbmd1YWdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFj
ayBBUEkKQEAgLTMxMjMsNyArMzEyMyw3IEBAIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVk
aWFFbGVtZW50OjoKIAogQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJh
Y2tzKCkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQpAQCAtMzEzNCw3ICszMTM0LDcgQEAgQXVkaW9UcmFja0xp
c3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVAogCiBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFF
bGVtZW50Ojp0ZXh0VHJhY2tzKCkgCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIGlmICghbV90ZXh0VHJhY2tzKQpAQCAtMzE0NSw3ICszMTQ1LDcg
QEAgVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYQogCiBWaWRlb1RyYWNr
TGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MoKQogewotICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fdmlkZW9UcmFja3MpCkBA
IC0zMTU4LDcgKzMxNTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFj
ayhICiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0cmFja1RhZykpOwog
Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyA0Ljgu
MTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0ZXh0IHRyYWNrcwpAQCAtMzE4NCw3ICszMTg0
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUZXh0VHJhYwogewogICAgIEFT
U0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKIAotICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgIUxPR19ESVNBQkxFRApAQCAtMzYy
Niw3ICszNjI2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaAog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQi
KTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAg
ICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogI2VuZGlmCiAK
QEAgLTQxMTcsNyArNDExNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxl
ZExvYWQKICAgICBtX3JlYWR5U3RhdGUgPSBIQVZFX05PVEhJTkc7CiAgICAgdXBkYXRlTWVkaWFD
b250cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoMCk7CiAjZW5kaWYKIH0KQEAg
LTQ0ODMsNyArNDQ4Myw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aGFzQ2xvc2VkQ2FwdGlv
bnMKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHx8
ICFtX3RleHRUcmFja3MpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgfHwgIW1fdGV4dFRyYWNrcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4
dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewpAQCAtNDUyNyw3ICs0NTI3LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9ucwogICAgIG1fcGxheWVyLT5zZXRDbG9zZWRD
YXB0aW9uc1Zpc2libGUoY2xvc2VkQ2FwdGlvblZpc2libGUpOwogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAgICAgICBtYXJrQ2FwdGlvbkFu
ZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQoSW1tZWRpYXRlbHkpOwogICAgICAgICB1cGRh
dGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgfQpAQCAtNDcyNyw3ICs0NzI3LDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhYwogCiAgICAgbWVkaWFDb250cm9scygp
LT5jaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmlsaXR5KCk7CiAgICAgCi0gICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKKyAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKSB7CiAgICAgICAgIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKICAgICAgICAg
dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKICAgICB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjQwNCkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjbwogICAgIGlmIChuYW1lID09IHRpdGxlQXR0ciAmJiBzaGVldCgpKQogICAgICAgICBzaGVl
dCgpLT5zZXRUaXRsZSh2YWx1ZSk7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICBlbHNl
IGlmIChuYW1lID09IHNjb3BlZEF0dHIgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVT
Y29wZWRFbmFibGVkKCkpCisgICAgZWxzZSBpZiAobmFtZSA9PSBzY29wZWRBdHRyICYmIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkp
CiAgICAgICAgIHNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQoIXZhbHVlLmlzTnVsbCgpKTsKICNlbmRp
ZgogICAgIGVsc2UgaWYgKG5hbWUgPT0gbWVkaWFBdHRyKSB7CkBAIC0xMDEsNyArMTAxLDcgQEAg
dm9pZCBIVE1MU3R5bGVFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbAogI2lmIEVOQUJMRShTVFlM
RV9TQ09QRUQpCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQo
Ym9vbCBzY29wZWQpCiB7Ci0gICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxl
U2NvcGVkRW5hYmxlZCgpKTsKKyAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSk7CiAKICAgICBpZiAoIWluRG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgSFRNTFN0eWxl
RWxlbWVudDo6cmVnaXN0ZXJXaXRoU2NvcGkKIAogdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojp1bnJl
Z2lzdGVyV2l0aFNjb3BpbmdOb2RlKENvbnRhaW5lck5vZGUqIHNjb3BlKQogewotICAgIEFTU0VS
VChtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgIT0gTm90UmVnaXN0ZXJlZCB8fCAhUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkpOworICAgIEFTU0VSVCht
X3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgIT0gTm90UmVnaXN0ZXJlZCB8fCAhUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSk7
CiAgICAgaWYgKCFpc1JlZ2lzdGVyZWRBc1Njb3BlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoU2Nv
CiAKIGJvb2wgSFRNTFN0eWxlRWxlbWVudDo6c2NvcGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkgJiYgZmFzdEhhc0F0
dHJpYnV0ZShzY29wZWRBdHRyKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSAmJiBmYXN0SGFzQXR0cmlidXRl
KHNjb3BlZEF0dHIpOwogfQogCiB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnNldFNjb3BlZChib29s
IHNjb3BlZFZhbHVlKQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEzIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBIVE1MVHJhY2tF
bGVtZW50OjpyZW1vdmVkRnJvbShDb250YQogCiB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUpCiB7Ci0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CiAgICAgICAgIGlmIChuYW1lID09
IHNyY0F0dHIpIHsKICAgICAgICAgICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQogICAgICAgICAg
ICAgICAgIHNjaGVkdWxlTG9hZCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6c2NoZWR1bGVMb2FkKCkKICAgICBpZiAobV9sb2FkVGltZXIuaXNBY3RpdmUoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1
cm47CiAKICAgICAvLyAyLiBJZiB0aGUgdGV4dCB0cmFjaydzIHRleHQgdHJhY2sgbW9kZSBpcyBu
b3Qgc2V0IHRvIG9uZSBvZiBoaWRkZW4gb3Igc2hvd2luZywgYWJvcnQgdGhlc2Ugc3RlcHMuCkBA
IC0yMzQsNyArMjM0LDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChU
aQogCiBib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNhbkxvYWRVcmwoY29uc3QgS1VSTCYgdXJsKQog
ewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
SFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVkaWFFbGVtZW50KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0lucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5
cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAo
QykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFw
QG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Vi
a2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtOTksMTUgKzk5LDE1IEBAIHN0YXRpYyBPd25Q
dHI8SW5wdXRUeXBlRmFjdG9yeU1hcD4gY3JlYXQKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1l
czo6Y29sb3IoKSwgJkNvbG9ySW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfREFURSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRU
eXBlRGF0ZUVuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5pbnB1dFR5cGVEYXRlRW5hYmxlZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1
dFR5cGVOYW1lczo6ZGF0ZSgpLCAmRGF0ZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpCi0gICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCgpKQorICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlucHV0VHlwZURhdGVUaW1lRW5h
YmxlZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWUoKSwgJkRh
dGVUaW1lSW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
REFURVRJTUVMT0NBTCkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBl
RGF0ZVRpbWVMb2NhbEVuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgpKQogICAgICAg
ICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0ZXRpbWVsb2NhbCgpLCAmRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVz
OjplbWFpbCgpLCAmRW1haWxJbnB1dFR5cGU6OmNyZWF0ZSk7CkBAIC0xMTUsNyArMTE1LDcgQEAg
c3RhdGljIE93blB0cjxJbnB1dFR5cGVGYWN0b3J5TWFwPiBjcmVhdAogICAgIG1hcC0+YWRkKElu
cHV0VHlwZU5hbWVzOjpoaWRkZW4oKSwgJkhpZGRlbklucHV0VHlwZTo6Y3JlYXRlKTsKICAgICBt
YXAtPmFkZChJbnB1dFR5cGVOYW1lczo6aW1hZ2UoKSwgJkltYWdlSW5wdXRUeXBlOjpjcmVhdGUp
OwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX01PTlRIKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppbnB1dFR5cGVNb250aEVuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVNb250aEVuYWJsZWQoKSkKICAgICAg
ICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6Om1vbnRoKCksICZNb250aElucHV0VHlwZTo6Y3Jl
YXRlKTsKICNlbmRpZgogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpudW1iZXIoKSwgJk51
bWJlcklucHV0VHlwZTo6Y3JlYXRlKTsKQEAgLTEyNywxMiArMTI3LDEyIEBAIHN0YXRpYyBPd25Q
dHI8SW5wdXRUeXBlRmFjdG9yeU1hcD4gY3JlYXQKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1l
czo6c3VibWl0KCksICZTdWJtaXRJbnB1dFR5cGU6OmNyZWF0ZSk7CiAgICAgbWFwLT5hZGQoSW5w
dXRUeXBlTmFtZXM6OnRlbGVwaG9uZSgpLCAmVGVsZXBob25lSW5wdXRUeXBlOjpjcmVhdGUpOwog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlucHV0VHlwZVRpbWVFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBlVGltZUVuYWJsZWQoKSkKICAgICAgICAgbWFw
LT5hZGQoSW5wdXRUeXBlTmFtZXM6OnRpbWUoKSwgJlRpbWVJbnB1dFR5cGU6OmNyZWF0ZSk7CiAj
ZW5kaWYKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dXJsKCksICZVUkxJbnB1dFR5cGU6
OmNyZWF0ZSk7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKLSAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlV2Vla0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVXZWVrRW5hYmxlZCgpKQog
ICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6d2VlaygpLCAmV2Vla0lucHV0VHlwZTo6
Y3JlYXRlKTsKICNlbmRpZgogICAgIC8vIE5vIG5lZWQgdG8gcmVnaXN0ZXIgInRleHQiIGJlY2F1
c2UgaXQgaXMgdGhlIGRlZmF1bHQgdHlwZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTA1LDcg
KzE5MDYsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0eVBvbGljeTo6cmVwb3J0QmxvY2tlCiBib29s
IENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZXhwZXJpbWVudGFsRmVhdHVyZXNFbmFibGVkKCkgY29u
c3QKIHsKICNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCgp
OworICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmV4
cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCgpOwogI2Vsc2UK
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTYyNCwxMCArMTYyNCwxMCBAQCBib29sIERPTVdpbmRvdzo6
YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCAmJiBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnMo
dGhpcykpCiAgICAgICAgIGFkZEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAjaWYg
RU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRl
dmljZU1vdGlvbkVuYWJsZWQoKSkgeworICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkuZGV2aWNlbW90aW9uRXZlbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5kZXZpY2VNb3Rpb25FbmFibGVkKCkpIHsKICAgICAgICAgaWYgKERldmljZU1v
dGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBEZXZpY2VNb3Rpb25Db250cm9sbGVyOjpmcm9t
KHBhZ2UoKSkpCiAgICAgICAgICAgICBjb250cm9sbGVyLT5hZGREZXZpY2VFdmVudExpc3RlbmVy
KHRoaXMpOwotICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2Vv
cmllbnRhdGlvbkV2ZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmljZU9yaWVudGF0
aW9uRW5hYmxlZCgpKSB7CisgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygp
LmRldmljZW9yaWVudGF0aW9uRXZlbnQgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5kZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQoKSkgewogICAgICAgICBpZiAoRGV2
aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gRGV2aWNlT3JpZW50YXRpb25D
b250cm9sbGVyOjpmcm9tKHBhZ2UoKSkpCiAgICAgICAgICAgICBjb250cm9sbGVyLT5hZGREZXZp
Y2VFdmVudExpc3RlbmVyKHRoaXMpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqICAgICAgICAgICAgICAgICAg
ICAgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUub3JnPgogICogICAgICAgICAgICAgICAgICAg
ICAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0b0BrZGUub3JnPgogICogICAgICAgICAgICAg
ICAgICAgICAyMDAwIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgotICogQ29weXJpZ2h0
IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIw
MDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5pc0BnbWFpbC5jb20pCiAgKiAgICAgICAgICAg
KEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0
IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0yNzY2LDcgKzI3
NjYsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCiAgICAgICAg
IGZyYW1lKCkubG9hZGVyKCkuZGlkTGF5b3V0KG1pbGVzdG9uZXNBY2hpZXZlZCk7CiAKICNpZiBF
TkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Zm9udExvYWRFdmVudHNFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkpCiAgICAgICAgIGZyYW1l
KCkuZG9jdW1lbnQoKS0+Zm9udGxvYWRlcigpLT5kaWRMYXlvdXQoKTsKICNlbmRpZgogICAgIApJ
bmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCShyZXZp
c2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxNSArNjYsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGluZ3MmIHNldHRpbmdz
KQotICAgIDogbV9vcmlnaW5hbENTU0V4Y2x1c2lvbnNFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmNzc0V4Y2x1c2lvbnNFbmFibGVkKCkpCi0gICAgLCBtX29yaWdpbmFsQ1NTU2hhcGVz
RW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTaGFwZXNFbmFibGVkKCkpCisgICAg
OiBtX29yaWdpbmFsQ1NTRXhjbHVzaW9uc0VuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5jc3NFeGNsdXNpb25zRW5hYmxlZCgpKQorICAgICwgbV9vcmlnaW5h
bENTU1NoYXBlc0VuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5jc3NTaGFwZXNFbmFibGVkKCkpCiAgICAgLCBtX29yaWdpbmFsQ1NTVmFyaWFibGVzRW5hYmxl
ZChzZXR0aW5ncy5jc3NWYXJpYWJsZXNFbmFibGVkKCkpCiAjaWYgRU5BQkxFKFNIQURPV19ET00p
Ci0gICAgLCBtX29yaWdpbmFsU2hhZG93RE9NRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFkb3dET01FbmFibGVkKCkpCi0gICAgLCBtX29yaWdpbmFsQXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQoKSkKKyAgICAsIG1fb3JpZ2luYWxTaGFkb3dET01FbmFibGVk
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxl
ZCgpKQorICAgICwgbV9vcmlnaW5hbEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVk
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQoKSkKICNlbmRpZgogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQp
Ci0gICAgLCBtX29yaWdpbmFsU3R5bGVTY29wZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5
bGVTY29wZWRFbmFibGVkKCkpCisgICAgLCBtX29yaWdpbmFsU3R5bGVTY29wZWQoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSkKICNl
bmRpZgogICAgICwgbV9vcmlnaW5hbEVkaXRpbmdCZWhhdmlvcihzZXR0aW5ncy5lZGl0aW5nQmVo
YXZpb3JUeXBlKCkpCiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTg1LDcgKzg1LDcg
QEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGluZwogICAgICwgbV9vcmln
aW5hbE1lZGlhVHlwZU92ZXJyaWRlKHNldHRpbmdzLm1lZGlhVHlwZU92ZXJyaWRlKCkpCiAgICAg
LCBtX29yaWdpbmFsQ2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhzZXR0aW5ncy5jYW52YXNV
c2VzQWNjZWxlcmF0ZWREcmF3aW5nKCkpCiAgICAgLCBtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNF
bmFibGVkKHNldHRpbmdzLm1vY2tTY3JvbGxiYXJzRW5hYmxlZCgpKQotICAgICwgbV9sYW5nQXR0
cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjps
YW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAgICwgbV9sYW5nQXR0
cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkp
CiAgICAgLCBtX2ltYWdlc0VuYWJsZWQoc2V0dGluZ3MuYXJlSW1hZ2VzRW5hYmxlZCgpKQogICAg
ICwgbV9taW5pbXVtVGltZXJJbnRlcnZhbChzZXR0aW5ncy5taW5ET01UaW1lckludGVydmFsKCkp
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMTAyLDE1ICsxMDIsMTUgQEAgSW50ZXJuYWxT
ZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGluZwogCiB2b2lkIEludGVybmFsU2V0dGluZ3M6
OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzJiBzZXR0aW5ncykKIHsKLSAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzZXRDU1NFeGNsdXNpb25zRW5hYmxlZChtX29yaWdpbmFsQ1NTRXhjbHVz
aW9uc0VuYWJsZWQpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1NoYXBlc0Vu
YWJsZWQobV9vcmlnaW5hbENTU1NoYXBlc0VuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQobV9vcmlnaW5h
bENTU0V4Y2x1c2lvbnNFbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNldENTU1NoYXBlc0VuYWJsZWQobV9vcmlnaW5hbENTU1NoYXBlc0VuYWJs
ZWQpOwogICAgIHNldHRpbmdzLnNldENTU1ZhcmlhYmxlc0VuYWJsZWQobV9vcmlnaW5hbENTU1Zh
cmlhYmxlc0VuYWJsZWQpOwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldFNoYWRvd0RPTUVuYWJsZWQobV9vcmlnaW5hbFNoYWRvd0RPTUVuYWJs
ZWQpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEF1dGhvclNoYWRvd0RPTUZvckFu
eUVsZW1lbnRFbmFibGVkKG1fb3JpZ2luYWxBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5h
YmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRT
aGFkb3dET01FbmFibGVkKG1fb3JpZ2luYWxTaGFkb3dET01FbmFibGVkKTsKKyAgICBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldEF1dGhvclNoYWRvd0RPTUZvckFu
eUVsZW1lbnRFbmFibGVkKG1fb3JpZ2luYWxBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5h
YmxlZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChtX29yaWdpbmFsU3R5bGVTY29wZWQp
OworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U3R5bGVT
Y29wZWRFbmFibGVkKG1fb3JpZ2luYWxTdHlsZVNjb3BlZCk7CiAjZW5kaWYKICAgICBzZXR0aW5n
cy5zZXRFZGl0aW5nQmVoYXZpb3JUeXBlKG1fb3JpZ2luYWxFZGl0aW5nQmVoYXZpb3IpOwogI2lm
IEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJbnRlcm5h
bFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbwogICAgIHNldHRpbmdzLnNldE1lZGlhVHlwZU92
ZXJyaWRlKG1fb3JpZ2luYWxNZWRpYVR5cGVPdmVycmlkZSk7CiAgICAgc2V0dGluZ3Muc2V0Q2Fu
dmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhtX29yaWdpbmFsQ2FudmFzVXNlc0FjY2VsZXJhdGVk
RHJhd2luZyk7CiAgICAgc2V0dGluZ3Muc2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKG1fb3JpZ2lu
YWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKG1fbGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQo
bV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk7CiAgICAgc2V0dGluZ3Mu
c2V0SW1hZ2VzRW5hYmxlZChtX2ltYWdlc0VuYWJsZWQpOwogICAgIHNldHRpbmdzLnNldE1pbkRP
TVRpbWVySW50ZXJ2YWwobV9taW5pbXVtVGltZXJJbnRlcnZhbCk7CiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U2hh
ZG93RE9NRW5hYmwKICAgICB9CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2hhZG93RE9NRW5hYmxlZChl
bmFibGVkKTsKICNlbHNlCiAgICAgLy8gRXZlbiBTSEFET1dfRE9NIGlzIG9mZiwgSW50ZXJuYWxT
ZXR0aW5ncyBhbGxvd3Mgc2V0U2hhZG93RE9NRW5hYmxlZChmYWxzZSkgdG8KICAgICAvLyBoYXZl
IGJyb2FkZXIgdGVzdCBjb3ZlcmFnZS4gQnV0IGl0IGNhbm5vdCBiZSBzZXRTaGFkb3dET01FbmFi
bGVkKHRydWUpLgpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0
U2hhZG93RE9NRW5hYmwKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0QXV0aG9yU2hhZG93RE9N
Rm9yQW55RWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNIQURP
V19ET00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0QXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQoaXNFbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVk
KGlzRW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpc0VuYWJsZWQpOwogI2VuZGlm
CkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRBdXRob3JTaGFk
b3dETwogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBl
bmFibGVkKQogewogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi0gICAgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U3R5bGVTY29wZWRFbmFibGVkKGVuYWJs
ZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTM0Niwx
MyArMzQ2LDEzIEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0VGV4dEF1dG9zaXppbmcKIHZv
aWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQoYm9vbCBlbmFibGVk
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKGVuYWJsZWQpOworICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTRXhjbHVzaW9u
c0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0Q1NTU2hh
cGVzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNF
RF9QQVJBTShlYyk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTU2hhcGVzRW5h
YmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldENTU1NoYXBlc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxTZXR0
aW5nczo6c2V0Q1NTVmFyaWFibGVzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U3RvcmFn
ZUJsb2NraW4KIAogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoZW5hYmxl
ZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRMYW5n
QXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9u
Q29kZSYgZWMpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0wOS0y
NSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3Rv
ciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
OjpvdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcik6IFVzZQorICAgICAgICBTaW5n
bGV0b24gYWNjZXNzb3IuCisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRTaGFk
b3dET01FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldENTU1Jl
Z2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldENTU0Nv
bXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRT
ZWFtbGVzc0lGcmFtZXNFbmFibGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTog
RGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9jZXNzKTogRGl0
dG8uCisKIDIwMTMtMDktMjUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggYnVpbGQgd2l0aCBRdCA1LjIgUXRQb3NpdGlv
biBtb2R1bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMTkxLDEyICsxOTEsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6b3ZlcnJpZGVCb29sUHJlZmVyZQogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQogICAgIGlm
IChwcmVmZXJlbmNlID09ICJXZWJLaXRDU1NSZWdpb25zRW5hYmxlZCIpCi0gICAgICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKGVuYWJsZWQpOworICAgICAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNF
bmFibGVkKGVuYWJsZWQpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQog
ICAgIGlmIChwcmVmZXJlbmNlID09ICJXZWJLaXRDU1NDb21wb3NpdGluZ0VuYWJsZWQiKQotICAg
ICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoZW5h
YmxlZCk7CisgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOwogI2VuZGlmCiAKICAgICAvLyBNYXAg
dGhlIG5hbWVzIHVzZWQgaW4gTGF5b3V0VGVzdHMgd2l0aCB0aGUgbmFtZXMgdXNlZCBpbiBXZWJD
b3JlOjpTZXR0aW5ncyBhbmQgV2ViUHJlZmVyZW5jZXNTdG9yZS4KQEAgLTY0Niw3ICs2NDYsNyBA
QCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTZXJpYWxMb2FkaW5nRW5hCiB2b2lkIEluamVjdGVk
QnVuZGxlOjpzZXRTaGFkb3dET01FbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFi
bGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGVuYWJsZWQpOwogI2VuZGlmCkBAIC02NTUsNyArNjU1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6c2V0U2hhZG93RE9NRW5hYmxlZAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q1NTUmVnaW9u
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsKKyAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNF
bmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5k
aWYKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRDU1NSZWdpb25z
RW5hYmxlCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTQ29tcG9zaXRpbmdF
bmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5k
aWYKQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRDU1NDb21wb3Np
dGluZ0VuCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CisgICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWFtbGVzc0lGcmFt
ZXNFbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ5MSw4ICsyNDkxLDggQEAgdm9p
ZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZQogICAgIHNldHRpbmdzLnNldFNo
b3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlzaWJsZUtleSgpKSk7CiAgICAg
c2V0dGluZ3Muc2V0QWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6YWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFi
bGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRDU1NDdXN0b21GaWx0ZXJFbmFibGVkKHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzQ3VzdG9tRmlsdGVyRW5h
YmxlZEtleSgpKSk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0Vu
YWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NSZWdp
b25zRW5hYmxlZEtleSgpKSk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29t
cG9zaXRpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tl
eTo6Y3NzQ29tcG9zaXRpbmdFbmFibGVkS2V5KCkpKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzUmVnaW9uc0VuYWJsZWRLZXkoKSkpOwor
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTQ29tcG9z
aXRpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
Y3NzQ29tcG9zaXRpbmdFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRDU1NHcmlkTGF5
b3V0RW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNz
c0dyaWRMYXlvdXRFbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRSZWdpb25CYXNlZENv
bHVtbnNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
cmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0V2ViR0xF
bmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6d2ViR0xF
bmFibGVkS2V5KCkpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJv
Y2Vzc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dl
YlByb2Nlc3NRdC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHIKICAgICB9CiAjZW5kaWYK
IAotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNwZWVjaElucHV0RW5h
YmxlZChmYWxzZSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zZXRTcGVlY2hJbnB1dEVuYWJsZWQoZmFsc2UpOwogCiAgICAgLy8gV2UnbGwg
b25seSBpbnN0YWxsIHRoZSBRdCBidWlsdGluIGJ1bmRsZSBpZiB3ZSBkb24ndCBoYXZlIG9uZSBn
aXZlbiBieSB0aGUgVUkgcHJvY2Vzcy4KICAgICAvLyBDdXJyZW50bHkgb25seSBXVFIgcHJvdmlk
ZXMgaXRzIG93biBidW5kbGUuCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
My0wOS0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2luZG93c10gUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbiAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0
LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluOgorICAg
ICAgICBFeHBvc2Ugc2luZ2xldG9uIGFjY2Vzc29yIGZvciBETEwgY2xpZW50cy4KKwogMjAxMy0w
OS0yNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIEZpeCBidWlsZCB3aXRoIFF0IDUuMiBRdFBvc2l0aW9uIG1vZHVsZQpJbmRl
eDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2Vi
S2l0RXhwb3J0cy5kZWYuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4
cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9u
IDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2Vu
ZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMzcsOCArMjM3
LDYgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/ZGlzY29ubmVjdEZyb250
ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUFFWFhaLCA/ZGlzY29ubmVjdEZyb250
ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29yZUBAUUVBQVhYWikKICNlbmRpZgogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9O
UEJWTm9kZUAxQEBaLCA/aXNBY3RpdmVJbnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEVCVk5v
ZGVAMUBAWikKLSAgICAgICAgP2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWRAUnVudGltZUVuYWJsZWRG
ZWF0dXJlc0BXZWJDb3JlQEAwX05BCi0gICAgICAgID9pc0NTU1NoYXBlc0VuYWJsZWRAUnVudGlt
ZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05BCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmlu
Z0BXVEZAQEBaLCA/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUVC
QV9OQUVCVlN0cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/anNBcnJh
eUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQQVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2Jh
bE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFos
ID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBFQVZFeGVjU3RhdGVAM0BQRUFW
SlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVA
QEBXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/bGFzdENoYW5nZVdhc1VzZXJF
ZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFCRV9OWFosID9sYXN0Q2hh
bmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRAV2ViQ29yZUBAUUVCQV9O
WFopCkBAIC0yOTksNiArMjk3LDcgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRl
cig/c2V0UHNldWRvQEVsZW1lbnRAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQEBa
LCA/c2V0UHNldWRvQEVsZW1lbnRAV2ViQ29yZUBAUUVBQVhBRUJWQXRvbWljU3RyaW5nQFdURkBA
QFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zZXRNZWRpYVR5cGVPdmVycmlkZUBTZXR0
aW5nc0BXZWJDb3JlQEBRQUVYQUJWU3RyaW5nQFdURkBAQFosID9zZXRNZWRpYVR5cGVPdmVycmlk
ZUBTZXR0aW5nc0BXZWJDb3JlQEBRRUFBWEFFQlZTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3lt
Ym9sV2l0aFBvaW50ZXIoP3NldHRpbmdzQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlNldHRpbmdz
QDJAWFosID9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3JlQEBRRUJBUEVBVlNldHRpbmdzQDJAWFop
CisgICAgICAgID9zaGFyZWRGZWF0dXJlc0BSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVA
QFNBQUFWMTJAWFoKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3N1YnN0cmluZ0BTdHJpbmdA
V1RGQEBRQkU/QVYxMkBJSUBaLCA/c3Vic3RyaW5nQFN0cmluZ0BXVEZAQFFFQkE/QVYxMkBJSUBa
KQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c3VnZ2VzdGVkVmFsdWVASFRNTElucHV0RWxl
bWVudEBXZWJDb3JlQEBRQkVBQlZTdHJpbmdAV1RGQEBYWiwgP3N1Z2dlc3RlZFZhbHVlQEhUTUxJ
bnB1dEVsZW1lbnRAV2ViQ29yZUBAUUVCQUFFQlZTdHJpbmdAV1RGQEBYWikKICAgICAgICAgc3lt
Ym9sV2l0aFBvaW50ZXIoP3RhcmdldEBIaXN0b3J5SXRlbUBXZWJDb3JlQEBRQkVBQlZTdHJpbmdA
V1RGQEBYWiwgP3RhcmdldEBIaXN0b3J5SXRlbUBXZWJDb3JlQEBRRUJBQUVCVlN0cmluZ0BXVEZA
QFhaKQpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQp
CisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNp
bmdsZXRvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMTg4My4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0U3R5bGVTY29wZWRFbmFibGVkKTogdXNlCisgICAgICAg
IHNpbmdsZXRvbiBhY2Nlc3Nvci4KKwogMjAxMy0wOS0yMyAgSmFja3kgSmlhbmcgIDx6aGFqaWFu
Z0BibGFja2JlcnJ5LmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gUG9vciByZW5kZXJpbmcg
b3BlbmluZyBhIEdvb2dsZSBtYXAgc2hvcnQgbGluawpJbmRleDogU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBN
b3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
QEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2NhbGVQYWdl
QnkoCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
OjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFN0eWxlU2NvcGVkRW5hYmxlZChl
bmFibGVkKTsKIH0KICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0
MDQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxOSBAQAorMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xl
dG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIx
ODgzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQpOiBVc2Ugc2luZ2xl
dG9uLgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRTZWFtbGVzc0lGcmFt
ZXNFbmFibGVkKTogRGl0dG8uCisgICAgICAgICogZXdrL2V3a19zZXR0aW5ncy5jcHA6CisgICAg
ICAgIChld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfZ2V0KTogRGl0dG8uCisgICAgICAg
IChld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfc2V0KToKKyAgICAgICAgKiBld2svZXdr
X3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3X3ByaXZfbmV3KTogRGl0dG8uCisKIDIwMTMt
MDktMjAgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtYXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBbQVRLXSBEbyBub3QgZXhwb3NlIGFyaWEtaGVscCBpbiBBVEsgYmFzZWQgcGxhdGZv
cm1zCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysr
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAy
MDExIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCiAgICAgQ29weXJpZ2h0IChDKSAyMDExIFNh
bXN1bmcgRWxlY3Ryb25pY3MKICAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzIwLDEzICsz
MjEsMTMgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENTU1JlZwogewogICAg
IERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHBhZ2UpOwogCi0gICAgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxl
ZCk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5zZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewog
I2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVkKTsKKyAgICBXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZy
YW1lc0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEw
IFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCiAgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAg
U2Ftc3VuZyBFbGVjdHJvbmljcwogICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3Jh
dGlvbgorICAgIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1NSw3ICsyNTYsNyBAQCB2b2lkIGV3a19zZXR0
aW5nc19vYmplY3RfY2FjaGVfZW5hYmxlX3NlCiBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX3NoYWRv
d19kb21fZW5hYmxlX2dldCgpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgcmV0dXJu
IFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5zaGFkb3dET01FbmFibGVkKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpA
QCAtMjY1LDcgKzI2Niw3IEBAIEVpbmFfQm9vbCBld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFi
bGUKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAg
ICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKGVu
YWJsZSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGUpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Zp
ZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykg
MjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCiAgICAgQ29weXJpZ2h0IChDKSAy
MDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwogICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRl
bCBDb3Jwb3JhdGlvbgorICAgIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTczNiw5ICs3MzcsOSBAQCBzdGF0
aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfCiAgICAgcHJpdi0+cGFnZVNldHRp
bmdzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KCJzYW5zIik7CiAgICAgcHJpdi0+cGFnZVNldHRp
bmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoInNhbnMiKTsKICAgICBwcml2LT5wYWdlU2V0dGlu
Z3MtPnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChmYWxzZSk7Ci0gICAgV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQodHJ1ZSk7CisgICAgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdp
b25zRW5hYmxlZCh0cnVlKTsKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQodHJ1
ZSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5zZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKHRydWUpOwogI2VuZGlmCiAgICAgcHJpdi0+cGFn
ZVNldHRpbmdzLT5zZXRTY3JpcHRFbmFibGVkKHRydWUpOwogICAgIHByaXYtPnBhZ2VTZXR0aW5n
cy0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lv
biAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEg
U2luZ2xldG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIxODgzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQpOiBVc2Ug
c2luZ2xldG9uLgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRFeHBlcmlt
ZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQpOgorICAgICAgICAoRHVt
cFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKToKKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0U2hhZG93RE9NRW5hYmxlZCk6CisgICAg
ICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFN0eWxlU2NvcGVkRW5hYmxlZCk6Cisg
ICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X3VwZGF0ZV9zZXR0aW5ncyk6IERpdHRvLgorCiAyMDEzLTA5LTI0ICBMb3JlbnpvIFRpbHZl
ICA8bHRpbHZlQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRml4IGNvbXBpbGF0aW9uIHBy
b2JsZW1zIHdoZW4gc2V0dGluZyBFTkFCTEVfRFJBR19TVVBQT1JUID0gRkFMU0UKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSm9vbmUgSHVy
IDxqb29uZUBrbGRwLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAq
ICBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01NzUsNyArNTc1LDcgQEAgdm9pZCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnNldENTU0dyaQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgYm9vbCBlbmFi
bGVkKQogewotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVk
KGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpzZXRDU1NDdXN0b21GaWx0ZXJFbmFibGVkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIGJvb2wgZW5hYmxlZCkKQEAgLTU4OCwyOCArNTg4LDI4IEBAIHZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrOjpzZXRDU1NDdXMKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpz
ZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoYm9vbCBl
bmFibGVkKQogewogI2lmIEVOQUJMRShDU1BfTkVYVCkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQo
ZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoZW5hYmxl
ZCk7CiAjZW5kaWYKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFNlYW1s
ZXNzSUZyYW1lc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShJRlJBTUVfU0VB
TUxFU1MpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5h
YmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIH0KIAogdm9p
ZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZWQpOwogI2Vu
ZGlmCiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTdHlsZVNjb3BlZEVu
YWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi0gICAgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKGVuYWJsZWQpOworICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U3R5bGVTY29wZWRF
bmFibGVkKGVuYWJsZWQpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiAr
MTIsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAwOSBCb2JieSBQb3dlcnMKICAqICBDb3B5cmln
aHQgKEMpIDIwMTAgSm9vbmUgSHVyIDxqb29uZUBrbGRwLm9yZz4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMTIgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMzU4Myw3ICszNTg0LDcg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldE1lZGlhU3RyZWFtRW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZU1lZGlhU3Ry
ZWFtKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldE1lZGlhU3RyZWFtRW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZU1lZGlhU3Ry
ZWFtKTsKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDktMjUgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4My4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29y
LgorICAgICAgICAoLVtXZWJWaWV3IF9zZXREYXNoYm9hcmRCZWhhdmlvcjp0bzpdKTogRGl0dG8u
CisKIDIwMTMtMDktMjQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IENoYW5nZSBKU0MgZGVidWcgaG9va3MgdG8gcGFzcyBhIENhbGxGcmFtZSogaW5zdGVhZCBvZiBh
IERlYnVnZ2VyQ2FsbEZyYW1lLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNS0yMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNS0yMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNiBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQogICogQ29weXJp
Z2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCkBAIC0xNTIxLDEzICsxNTIxLDEzIEBAIC0gKHZv
aWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW4KICNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCiAgICAgc2V0dGluZ3Muc2V0Q1NTQ3VzdG9tRmlsdGVyRW5hYmxlZChbcHJlZmVyZW5jZXMg
Y3NzQ3VzdG9tRmlsdGVyRW5hYmxlZF0pOwogI2VuZGlmCi0gICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc1JlZ2lvbnNFbmFibGVk
XSk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVk
KFtwcmVmZXJlbmNlcyBjc3NDb21wb3NpdGluZ0VuYWJsZWRdKTsKKyAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKFtwcmVmZXJl
bmNlcyBjc3NSZWdpb25zRW5hYmxlZF0pOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBjc3ND
b21wb3NpdGluZ0VuYWJsZWRdKTsKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogICAgIHNldHRpbmdz
LnNldFdlYkF1ZGlvRW5hYmxlZChbcHJlZmVyZW5jZXMgd2ViQXVkaW9FbmFibGVkXSk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoW3ByZWZlcmVuY2VzIHNlYW1sZXNzSUZyYW1l
c0VuYWJsZWRdKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoW3ByZWZlcmVuY2VzIHNlYW1sZXNzSUZyYW1lc0Vu
YWJsZWRdKTsKICNlbmRpZgogICAgIHNldHRpbmdzLnNldENTU0dyaWRMYXlvdXRFbmFibGVkKFtw
cmVmZXJlbmNlcyBjc3NHcmlkTGF5b3V0RW5hYmxlZF0pOwogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKQEAgLTIxODYsNyArMjE4Niw3IEBAIC0gKHZvaWQpX3NldERhc2hib2FyZEJlaGF2aW9y
OihXZWJEYXNoYm8KICAgICAgICAgICAgIGlmIChfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgICAg
ICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3MoKS5zZXRVc2VzRGFzaGJvYXJkQmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZShmbGFnKTsKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJF
RklYRVMpCi0gICAgICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMZWdhY3lDU1NW
ZW5kb3JQcmVmaXhlc0VuYWJsZWQoZmxhZyk7CisgICAgICAgICAgICBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZChmbGFnKTsKICNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEzLTA5LTI1ICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBBcGkvcXdlYnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFX
ZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KTogVXNlIHNpbmdsZXRvbiBhY2Nlc3Nvci4KKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAg
IChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6IERp
dHRvLgorCiAyMDEzLTA5LTI1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5A
ZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGggUXQgNS4yIFF0UG9zaXRp
b24gbW9kdWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICAgIENvcHlyaWdodCAoQykgMjAwOCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0xNzMsMTAgKzE3NCwxMCBAQCB2b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFw
cGx5KCkKIAogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpD
U1NSZWdpb25zRW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2Jh
bC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1JlZ2lvbnNFbmFibGVkKSk7Ci0g
ICAgICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFi
bGVkKHZhbHVlKTsKKyAgICAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZCh2YWx1ZSk7CiAgICAgICAgIHZhbHVl
ID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0NvbXBvc2l0aW5nRW5hYmxlZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1
ZShRV2ViU2V0dGluZ3M6OkNTU0NvbXBvc2l0aW5nRW5hYmxlZCkpOwotICAgICAgICBXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQodmFsdWUp
OworICAgICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZCh2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXR0
cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0dyaWRMYXlvdXRFbmFibGVkLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJT
ZXR0aW5nczo6Q1NTR3JpZExheW91dEVuYWJsZWQpKTsKICAgICAgICAgc2V0dGluZ3MtPnNldENT
U0dyaWRMYXlvdXRFbmFibGVkKHZhbHVlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShy
ZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iZXJ0IEhvZ2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0
PgogICAgIENvcHlyaWdodCAoQykgMjAwOCwyMDA5LDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3Mg
Q29tcHV0aW5nIFNlcnZpY2VzIEluYy4KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBw
bGUgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAwNywgMjAxMiwgMjAxMyBBcHBsZSBJbmMuCiAK
ICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpnZXRUcmFja2VkCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRT
ZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoSUZSQU1F
X1NFQU1MRVNTKQotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1s
ZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJs
ZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA5LTI0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBSZWZhY3Rv
ciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAg
KFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZCk6IFVzZSBzaW5nbGV0b24gYWNjZXNz
b3IKKwogMjAxMy0wOS0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2luZG93c10gVW5yZXZpZXdlZCBjcmFzaCBmaXggYWZ0ZXIgcjE1NjMyMS4KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc4MywxMiArNDc4MywxMiBAQCBI
UkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlCiAgICAgaHIgPSBwcmVmZXJl
bmNlcy0+aXNDU1NSZWdpb25zRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikp
CiAgICAgICAgIHJldHVybiBocjsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NS
ZWdpb25zRW5hYmxlZCghIWVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQoISFlbmFibGVkKTsKIAogICAgIGhy
ID0gcHJlZmVyZW5jZXMtPmFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoJmVuYWJsZWQpOwogICAg
IGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCghIWVuYWJsZWQpOworICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5h
YmxlZCghIWVuYWJsZWQpOwogCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212608</attachid>
            <date>2013-09-25 11:19:07 -0700</date>
            <delta_ts>2013-09-25 12:05:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-121883-20130925111852.patch</filename>
            <type>text/plain</type>
            <size>127391</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzMyBAQAorMjAxMy0wOS0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0
b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgV2luZG93
cyBpcyBleHBlcmllbmNpbmcgY3Jhc2hlcyB3aGVuIGNsaWVudCBwcm9ncmFtcyAoc3VjaCBhcwor
ICAgICAgICBEdW1wUmVuZGVyVHJlZSkgYXR0ZW1wIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUg
UnVudGltZUVuYWJsZWRGZWF0dXJlcworICAgICAgICBvYmplY3QuIFRoZSBpbmxpbmVkIHN0YXRp
YyBhY2Nlc3NvciBtZXRob2RzIGFyZSBub3QgYWNjZXNzaW5nCisgICAgICAgIG1lbW9yeSBzYWZl
bHkgKHdoZW4gY29tcGlsZWQgYnkgVmlzdWFsIFN0dWRpbykgcmVzdWx0aW5nIGluCisgICAgICAg
IGNyYXNoZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwOiBTd2l0Y2gg
bWV0aG9kcyB0bworICAgICAgICBjb25mb3JtIHRvIGEgc2luZ2xldG9uIHBhdHRlcm4uCisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1ZGlvRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sTWVkaWFFbGVtZW50RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sQXVkaW9FbGVtZW50
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
VmlkZW9FbGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpodG1sU291cmNlRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUVycm9yRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp0aW1lUmFuZ2VzRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3JrZXJF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYlNv
Y2tldEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
b3BlbkRhdGFiYXNlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCk6CisgICAgICAgICogYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsb2NhbFN0b3JhZ2VFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlc3Npb25TdG9y
YWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0QXBwbGljYXRpb25D
YWNoZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
YXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRHZW9sb2NhdGlvbkVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Z2VvbG9j
YXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0SW5kZXhlZERCRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbmRleGVkREJFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENhbnZhc1BhdGhFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNhbnZhc1BhdGhFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc0V4Y2x1c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldENTU1NoYXBlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NSZWdpb25zRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGluZ0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzQ29t
cG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldEZvbnRMb2FkRXZlbnRzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2Via2l0RnVsbFNj
cmVlbkFQSUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdElzRnVsbFNjcmVlbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbFNjcmVlbktleWJv
YXJkSW5wdXRBbGxvd2VkRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdENhbmNlbEZ1bGxTY3Jl
ZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RXhpdEZ1bGxzY3JlZW5F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFJlcXVlc3RGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjp0b3VjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0VG91Y2hFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldERldmljZU1vdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VNb3Rpb25FdmVudEVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b25kZXZp
Y2Vtb3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldERldmljZU9yaWVudGF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FdmVudEVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b25kZXZp
Y2VvcmllbnRhdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0U3BlZWNoSW5wdXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNwZWVjaElucHV0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEdyYW1tYXJFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNjcmlwdGVkU3Bl
ZWNoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
Y3JpcHRlZFNwZWVjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaFJlY29nbml0aW9uRXJyb3JF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFNwZWVjaFJlY29nbml0aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaEdyYW1tYXJFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaEdyYW1tYXJMaXN0
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRG
aWxlU3lzdGVtRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFTdHJlYW1FbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU3RyZWFtRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRHZXRVc2VyTWVkaWFF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dE1lZGlhU3RyZWFtRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpwZWVyQ29ubmVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0UGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMZWdh
Y3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdldEdhbWVwYWRzRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRH
ZXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6cXVvdGFFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldFF1b3RhRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjptZWRpYVNvdXJjZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0TWVkaWFTb3VyY2VFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmVuY3J5cHRlZE1lZGlhRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRFbmNyeXB0ZWRNZWRpYUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0V2Via2l0VmlkZW9UcmFja0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1dGhvclNoYWRvd0RPTUZvckFueUVs
ZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmN1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDdXN0b21ET01FbGVt
ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNj
b3BlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0U3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlucHV0VHlwZURhdGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldElucHV0VHlwZURhdGVFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVE
YXRlVGltZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlTW9udGhF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldElu
cHV0VHlwZU1vbnRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppbnB1dFR5cGVUaW1lRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVUaW1lRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVXZWVrRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVXZWVrRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpleHBlcmlt
ZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldENTU1Byb3BlcnR5TmFtZVByZWZpeCk6IFVzZSBzaW5nbGV0b24gYWNj
ZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlJREZvckpTQ1NTUHJvcGVydHlO
YW1lKTogRGl0dG8uCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG06CisgICAgICAgIChHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lKTogR2VuZXJhdGUgc2lu
Z2xldG9uIHZlcnNpb24gb2YKKyAgICAgICAgYWNjZXNzb3JzLgorICAgICAgICAqIGNzcy9DU1NG
b250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFjZTo6Zm9udExvYWRlZCk6
IFVzZSBzaW5nbGV0b24gYWNjZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udEZhY2U6
OmdldEZvbnREYXRhKTogRGl0dG8uCisgICAgICAgICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZSk6IERp
dHRvLgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNT
aW1wbGVMZW5ndGhQcm9wZXJ0eUlEKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1ZhbGlk
S2V5d29yZFByb3BlcnR5QW5kVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpw
YXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmV3cml0ZVNwZWNpZmll
cnMpOgorICAgICAgICAqIGNzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWdtZW50ZWRGb250RmFjZTo6Zm9udExvYWRlZCk6IERpdHRvLgorICAgICAg
ICAqIGNzcy9TdHlsZVJlc29sdmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjplbnN1cmVTY29wZVJlc29sdmVyKTogRGl0dG8uCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjc3NSZWdpb25zRW5hYmxlZCk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2hvdWxkRGlzcGxheVNlYW1sZXNzbHlXaXRoUGFy
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRDYWNoZWRMb2NhbGUpOgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmNyZWF0
ZVNoYWRvd1Jvb3QpOiBEaXR0by4KKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb246OlBvc2l0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6ZmluZFBhcmVudCk6CisgICAgICAgICogZG9tL1RyZWVTY29wZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmdldFNlbGVjdGlvbik6IERpdHRvLgorICAgICAg
ICAqIGRvbS9tYWtlX25hbWVzLnBsOgorICAgICAgICAocHJpbnRDb25zdHJ1Y3RvckludGVyaW9y
KTogR2VuZXJhdGUgc2luZ2xldG9uIHZlcnNpb24gb2YgYWNjZXNzb3JzLgorICAgICAgICAocHJp
bnRXcmFwcGVyRnVuY3Rpb25zKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OmlzU3BlZWNoRW5h
YmxlZCk6IFVzZSBzaW5nbGV0b24gYWNjZXNzb3JzLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob29zZXJQYXJhbWV0ZXJzKTogRGl0dG8uCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6IERpdHRvLgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVEZWxheWVkQWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFRleHRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFk
ZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkQXVk
aW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6dmlkZW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZFJlbW92ZVRleHRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25zVmlzaWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tEaXNwbGF5KToKKyAg
ICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFN0eWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFN0eWxlRWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY29waW5nTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpzY29wZWQpOgorICAgICAgICAqIGh0bWwv
SFRNTFRyYWNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyYWNrRWxl
bWVudDo6c2NoZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6
OmNhbkxvYWRVcmwpOgorICAgICAgICAqIGh0bWwvSW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUlucHV0VHlwZUZhY3RvcnlNYXApOiBEaXR0by4KKyAgICAgICAgKiBwYWdl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmV4cGVyaW1lbnRhbEZlYXR1cmVzRW5hYmxlZCk6IERpdHRvLgorICAgICAg
ICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YWRk
RXZlbnRMaXN0ZW5lcik6IERpdHRvLgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcyk6IERpdHRv
LgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cCk6IERpdHRvLgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8pOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0U2hhZG93RE9NRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVt
ZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRTdHls
ZVNjb3BlZEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0Q1NTU2hhcGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRp
bmdzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk6CisKIDIwMTMt
MDktMjUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIxNTYzNTUpIExpbmtzIC8gaW50ZXJhY3RpdmUgZWxlbWVudHMgaW5zaWRlIG5lc3Rl
ZCB0YWJsZXMgYXJlIHVuY2xpY2thYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzUsNiArMzYsNyBAQAogI2luY2x1ZGUg
Ik1lZGlhUGxheWVyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2lu
Y2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgpAQCAt
NDIsMjAxICs0NCwxODkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlzTG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGZh
bHNlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNEYXRhVHJhbnNmZXJJ
dGVtc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0dlb2xv
Y2F0aW9uRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5k
ZXhlZERCRW5hYmxlZCA9IGZhbHNlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1Rv
dWNoRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2aWNl
TW90aW9uRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2
aWNlT3JpZW50YXRpb25FbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aXNTcGVlY2hJbnB1dEVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0NhbnZhc1BhdGhFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0NTU1NoYXBlc0VuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0NTU1JlZ2lvbnNFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzQ1NTQ29tcG9zaXRpbmdFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQgPSBmYWxzZTsKLQorUnVudGltZUVuYWJsZWRGZWF0dXJlczo6UnVudGltZUVuYWJsZWRGZWF0
dXJlcygpCisgICAgOiBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1Nl
c3Npb25TdG9yYWdlRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNF
bmFibGVkKGZhbHNlKQorICAgICwgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHRydWUpCisg
ICAgLCBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzR2VvbG9j
YXRpb25FbmFibGVkKHRydWUpCisgICAgLCBtX2lzSW5kZXhlZERCRW5hYmxlZChmYWxzZSkKKyAg
ICAsIG1faXNUb3VjaEVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNEZXZpY2VNb3Rpb25FbmFibGVk
KHRydWUpCisgICAgLCBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkKHRydWUpCisgICAgLCBt
X2lzU3BlZWNoSW5wdXRFbmFibGVkKHRydWUpCisgICAgLCBtX2lzQ2FudmFzUGF0aEVuYWJsZWQo
ZmFsc2UpCisgICAgLCBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXND
U1NTaGFwZXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzQ1NTUmVnaW9uc0VuYWJsZWQoZmFsc2Up
CisgICAgLCBtX2lzQ1NTQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKQorICAgICwgbV9pc0xhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGZhbHNlKQogI2lmIEVOQUJMRShTQ1JJ
UFRFRF9TUEVFQ0gpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzU2NyaXB0ZWRTcGVl
Y2hFbmFibGVkID0gZmFsc2U7CisgICAgLCBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkKGZhbHNl
KQogI2VuZGlmCi0KICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc01lZGlhU3RyZWFtRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzUGVlckNvbm5lY3Rpb25FbmFibGVkID0gdHJ1ZTsKKyAgICAsIG1faXNN
ZWRpYVN0cmVhbUVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQo
dHJ1ZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5h
YmxlZCA9IGZhbHNlOworICAgICwgbV9pc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChm
YWxzZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi1ib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlzR2FtZXBhZEVuYWJsZWQgPSBmYWxzZTsKKyAgICAsIG1faXNHYW1lcGFkRW5h
YmxlZChmYWxzZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotYm9vbCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjppc0ZpbGVTeXN0ZW1FbmFibGVkID0gZmFsc2U7CisgICAgLCBt
X2lzRmlsZVN5c3RlbUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9JMThOX0FQSSkKKyAgICAsIG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoZmFsc2UpCisj
ZW5kaWYKKyNpZiBFTkFCTEUoUVVPVEEpCisgICAgLCBtX2lzUXVvdGFFbmFibGVkKGZhbHNlKQor
I2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICwgbV9pc0Z1bGxTY3JlZW5B
UElFbmFibGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgICwg
bV9pc01lZGlhU291cmNlRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZM
KSB8fCBQTEFURk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFU
KQorICAgICwgbV9pc1ZpZGVvVHJhY2tFbmFibGVkKHRydWUpCisjZWxzZQorICAgICwgbV9pc1Zp
ZGVvVHJhY2tFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorICAgICwgbV9pc0VuY3J5cHRlZE1lZGlhRW5hYmxlZChmYWxzZSkKKyNlbmRp
ZgorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICwgbV9pc1NoYWRvd0RPTUVuYWJsZWQoZmFs
c2UpCisgICAgLCBtX2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoZmFsc2Up
CisjZW5kaWYKKyNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQorICAgICwgbV9pc0N1c3RvbURP
TUVsZW1lbnRzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQp
CisgICAgLCBtX2lzU3R5bGVTY29wZWRFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxF
KElOUFVUX1RZUEVfREFURSkKKyAgICAsIG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZCh0cnVlKQor
I2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKKyAgICAs
IG1faXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKQorICAgICwgbV9pc0lucHV0VHlwZURhdGVUaW1lTG9j
YWxFbmFibGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKKyAg
ICAsIG1faXNJbnB1dFR5cGVNb250aEVuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX1RJTUUpCisgICAgLCBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQodHJ1ZSkKKyNl
bmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCisgICAgLCBtX2lzSW5wdXRUeXBlV2Vl
a0VuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShDU1BfTkVYVCkKKyAgICAsIG1fYXJl
RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGZhbHNlKQor
I2VuZGlmCisjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKKyAgICAsIG1fYXJlU2VhbWxlc3NJ
RnJhbWVzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRT
KQorICAgICwgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgoreworfQor
CitSdW50aW1lRW5hYmxlZEZlYXR1cmVzJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM+IHJ1bnRpbWVFbmFibGVkRmVhdHVyZXM7CiAKKyAgICByZXR1cm4gcnVudGltZUVuYWJs
ZWRGZWF0dXJlczsKK30KKworI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKIGJvb2wgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6ZmlsZVN5c3RlbUVuYWJsZWQoKQogewotICAgIHJldHVybiBpc0ZpbGVT
eXN0ZW1FbmFibGVkICYmIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1
cm4gbV9pc0ZpbGVTeXN0ZW1FbmFibGVkICYmIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUo
KTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCi1ib29sIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkID0gZmFsc2U7
Ci0KIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVk
KCkKIHsKLSAgICByZXR1cm4gaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CisgICAgcmV0dXJu
IG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShW
SURFTykKLQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKQorYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKSBjb25zdAogewogICAgIHJl
dHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpodG1sTWVkaWFFbGVtZW50RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Omh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlh
UGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
Omh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXll
cjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
U291cmNlRWxlbWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1s
U291cmNlRWxlbWVudEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6
aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUNv
bnRyb2xsZXJFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250
cm9sbGVyRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWls
YWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFi
bGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQoKSBj
b25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp0aW1lUmFuZ2VzRW5hYmxlZCgpCitib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxF
KFNIQVJFRF9XT1JLRVJTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3Jr
ZXJFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkV29ya2VyRW5h
YmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZh
aWxhYmxlKCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2ViU29ja2V0RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYlNvY2tldEVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBXZWJT
b2NrZXQ6OmlzQXZhaWxhYmxlKCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQor
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVkKCkgY29uc3QK
IHsKICAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKTsK
IH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxl
ZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZVN5bmNFbmFibGVk
KCkgY29uc3QKIHsKICAgICByZXR1cm4gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFp
bGFibGUoKTsKIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKFFVT1RBKQotYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppc1F1b3RhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRnVsbFNj
cmVlbkFQSUVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc01lZGlhU291cmNlRW5hYmxlZCA9IGZh
bHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0jaWYgUExBVEZPUk0oTUFD
KSB8fCBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJS
WSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQTEFURk9STShRVCkKLSAgICBib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQgPSB0cnVlOwotI2Vsc2UKLSAgICBib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQgPSBmYWxzZTsKLSNl
bmRpZgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjppc0VuY3J5cHRlZE1lZGlhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aXNTaGFkb3dET01FbmFibGVkID0gZmFsc2U7Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6aXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCA9IGZhbHNlOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoU1RZTEVfU0NPUEVEKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1N0eWxl
U2NvcGVkRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9E
QVRFKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZURhdGVFbmFibGVk
ID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01Q
TEVURSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUVu
YWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVM
T0NBTCkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUxv
Y2FsRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX01PTlRI
KQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9
IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCi1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSB0cnVlOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0lucHV0VHlwZVdlZWtFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KENTUF9ORVhUKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphcmVFeHBlcmltZW50YWxD
b250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0j
aWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
YXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
Rk9OVF9MT0FEX0VWRU5UUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNGb250TG9h
ZEV2ZW50c0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1
bnRpbWVFbmFibGVkRmVhdHVyZXMuaAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLiAKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTMyLDYgKzMzLDcgQEAKICNkZWZpbmUgUnVudGltZUVuYWJsZWRGZWF0dXJlc19oCiAKICNp
bmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1hY3Jvcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQwLDM3MSArNDIsMzgxIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIGdlbmVyYXRpb24gdG8gd29yayBwcm9wZXJseS4KIAogY2xh
c3MgUnVudGltZUVuYWJsZWRGZWF0dXJlcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVu
dGltZUVuYWJsZWRGZWF0dXJlcyk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0TG9jYWxT
dG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0xvY2FsU3RvcmFnZUVuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgeyByZXR1
cm4gaXNMb2NhbFN0b3JhZ2VFbmFibGVkOyB9CisgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xv
Y2FsU3RvcmFnZUVuYWJsZWQ7IH0KIAotICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb25TdG9yYWdl
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIHNlc3Npb25TdG9yYWdlRW5hYmxlZCgpIHsgcmV0dXJu
IGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZUVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgc2Vzc2lvblN0b3JhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0V2Via2l0
Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNXZWJraXROb3RpZmljYXRp
b25zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdE5vdGlmaWNh
dGlvbnNFbmFibGVkKCkgeyByZXR1cm4gaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
bV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3
ZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJraXROb3Rp
ZmljYXRpb25zRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgeyBy
ZXR1cm4gaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRp
b25DYWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBhcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsgfQogCi0gICAgc3RhdGlj
IHZvaWQgc2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRGF0
YVRyYW5zZmVySXRlbXNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGF0
YVRyYW5zZmVySXRlbXNFbmFibGVkKCkgeyByZXR1cm4gaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9v
bCBkYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGF0YVRyYW5z
ZmVySXRlbXNFbmFibGVkOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRHZW9sb2NhdGlvbkVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgYm9vbCBnZW9sb2NhdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0dlb2xvY2F0
aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0R2VvbG9jYXRpb25FbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNHZW9sb2NhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGdl
b2xvY2F0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvbkVuYWJsZWQ7
IH0KIAotICAgIHN0YXRpYyB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNJbmRleGVkREJFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJv
b2wgd2Via2l0SW5kZXhlZERCRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5kZXhlZERCRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIGluZGV4ZWREQkVuYWJsZWQoKSB7IHJldHVybiBpc0luZGV4ZWRE
QkVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgbV9pc0luZGV4ZWREQkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdl
YmtpdEluZGV4ZWREQkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5kZXhlZERCRW5hYmxl
ZDsgfQorICAgIGJvb2wgaW5kZXhlZERCRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmRl
eGVkREJFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoQ0FOVkFTX1BBVEgpCi0gICAgc3RhdGljIHZv
aWQgc2V0Q2FudmFzUGF0aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDYW52YXNQYXRoRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkg
eyByZXR1cm4gaXNDYW52YXNQYXRoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q2FudmFzUGF0aEVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0NhbnZhc1BhdGhFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCBjYW52YXNQYXRoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDYW52
YXNQYXRoRW5hYmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBzZXRDYW52YXNQYXRoRW5h
YmxlZChib29sKSB7IH0KLSAgICBzdGF0aWMgYm9vbCBjYW52YXNQYXRoRW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRDYW52YXNQYXRoRW5hYmxlZChib29sKSB7IH0KKyAg
ICBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQotICAgIHN0YXRpYyB2b2lkIHNldENTU0V4
Y2x1c2lvbnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIHsg
cmV0dXJuIGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENTU0V4Y2x1c2lv
bnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NFeGNsdXNpb25zRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQorICAgIGJvb2wgY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7IH0KICNlbHNlCi0gICAgc3RhdGljIHZvaWQgc2V0
Q1NTRXhjbHVzaW9uc0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzRXhjbHVz
aW9uc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTRXhjbHVzaW9u
c0VuYWJsZWQoYm9vbCkgeyB9CisgICAgYm9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAg
IHN0YXRpYyB2b2lkIHNldENTU1NoYXBlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NT
aGFwZXNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzU2hhcGVzRW5h
YmxlZCgpIHsgcmV0dXJuIGlzQ1NTU2hhcGVzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTU2hh
cGVzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQ1NTU2hhcGVzRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXND
U1NTaGFwZXNFbmFibGVkOyB9CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIHNldENTU1NoYXBlc0Vu
YWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgdm9pZCBzZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wpIHsgfQorICAg
IGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NSZWdpb25z
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0NTU1JlZ2lvbnNFbmFibGVkID0gaXNFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU1Jl
Z2lvbnNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBtX2lzQ1NTUmVnaW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNz
c1JlZ2lvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NTU1JlZ2lvbnNFbmFibGVkOyB9
CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wpIHsgfQot
ICAgIHN0YXRpYyBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2b2lkIHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzUmVnaW9u
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMg
dm9pZCBzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NDb21w
b3NpdGluZ0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NDb21wb3Np
dGluZ0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU0NvbXBvc2l0aW5nRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NDb21w
b3NpdGluZ0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNzc0NvbXBvc2l0aW5nRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7IH0KIAogI2lm
IEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIHN0YXRpYyB2b2lkIHNldEZvbnRMb2FkRXZl
bnRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIHsgcmV0
dXJuIGlzRm9udExvYWRFdmVudHNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRGb250TG9hZEV2ZW50
c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQorICAgIGJvb2wgZm9udExvYWRFdmVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBz
ZXRGb250TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgZm9udExv
YWRFdmVudHNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldEZvbnRMb2Fk
RXZlbnRzRW5hYmxlZChib29sKSB7IH0KKyAgICBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
ICAgICAvLyBNb3ppbGxhIHZlcnNpb24KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2NyZWVu
QVBJRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgdm9pZCBzZXRXZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0Z1bGxTY3JlZW5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdElzRnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJl
dHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0RnVs
bFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2VkRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVl
bkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxs
U2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dFdlYmtpdEZ1bGxTY3JlZW5BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9
CisgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9h
cmRJbnB1dEFsbG93ZWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3
ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZDsgfQogCiAgICAgLy8gVzNDIHZlcnNpb24KLSAgICBzdGF0aWMgYm9vbCB3
ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVk
KCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdl
YmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQoKSB7
IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsc2Ny
ZWVuRW5hYmxlZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJs
ZWQ7IH0KKyAgICBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbGVtZW50RW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RXhpdEZ1
bGxzY3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVk
OyB9CisgICAgYm9vbCB3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJ
REVPKQotICAgIHN0YXRpYyBib29sIGF1ZGlvRW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIGh0
bWxNZWRpYUVsZW1lbnRFbmFibGVkKCk7Ci0gICAgc3RhdGljIGJvb2wgaHRtbEF1ZGlvRWxlbWVu
dEVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpOwot
ICAgIHN0YXRpYyBib29sIGh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyBi
b29sIG1lZGlhQ29udHJvbGxlckVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBtZWRpYUVycm9y
RW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIHRpbWVSYW5nZXNFbmFibGVkKCk7CisgICAgYm9v
bCBhdWRpb0VuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxNZWRpYUVsZW1lbnRFbmFibGVk
KCkgY29uc3Q7CisgICAgYm9vbCBodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAg
IGJvb2wgaHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxTb3Vy
Y2VFbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxl
ZCgpIGNvbnN0OworICAgIGJvb2wgbWVkaWFFcnJvckVuYWJsZWQoKSBjb25zdDsKKyAgICBib29s
IHRpbWVSYW5nZXNFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFSRURf
V09SS0VSUykKLSAgICBzdGF0aWMgYm9vbCBzaGFyZWRXb3JrZXJFbmFibGVkKCk7CisgICAgYm9v
bCBzaGFyZWRXb3JrZXJFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKLSAgICBzdGF0aWMgYm9vbCB3ZWJTb2NrZXRFbmFibGVkKCk7CisgICAgYm9vbCB3
ZWJTb2NrZXRFbmFibGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgc3RhdGljIGJvb2wgb3BlbkRhdGFiYXNlRW5hYmxlZCgpOwotICAgIHN0YXRpYyBi
b29sIG9wZW5EYXRhYmFzZVN5bmNFbmFibGVkKCk7CisgICAgYm9vbCBvcGVuRGF0YWJhc2VFbmFi
bGVkKCkgY29uc3Q7CisgICAgYm9vbCBvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpIGNvbnN0Owog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIHN0YXRpYyBib29sIHRvdWNo
RW5hYmxlZCgpIHsgcmV0dXJuIGlzVG91Y2hFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0
VG91Y2hFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzVG91Y2hFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCB0b3VjaEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVG91Y2hFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRUb3VjaEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1Rv
dWNoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBzZXRE
ZXZpY2VNb3Rpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRGV2aWNlTW90aW9uRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGRldmljZU1vdGlvbkVuYWJsZWQoKSB7
IHJldHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBkZXZpY2VN
b3Rpb25FdmVudEVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLSAg
ICBzdGF0aWMgYm9vbCBvbmRldmljZW1vdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1v
dGlvbkVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldERldmljZU9yaWVudGF0aW9uRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpIHsgcmV0
dXJuIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNl
T3JpZW50YXRpb25FdmVudEVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU9yaWVudGF0aW9uRW5h
YmxlZDsgfQotICAgIHN0YXRpYyBib29sIG9uZGV2aWNlb3JpZW50YXRpb25FbmFibGVkKCkgeyBy
ZXR1cm4gaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNl
dFNwZWVjaElucHV0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1NwZWVjaElucHV0RW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHNwZWVjaElucHV0RW5hYmxlZCgpIHsg
cmV0dXJuIGlzU3BlZWNoSW5wdXRFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3Bl
ZWNoRW5hYmxlZCgpIHsgcmV0dXJuIGlzU3BlZWNoSW5wdXRFbmFibGVkOyB9Ci0gICAgc3RhdGlj
IGJvb2wgd2Via2l0R3JhbW1hckVuYWJsZWQoKSB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxl
ZDsgfQorICAgIHZvaWQgc2V0RGV2aWNlTW90aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBt
X2lzRGV2aWNlTW90aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZGV2aWNlTW90
aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9Cisg
ICAgYm9vbCBkZXZpY2VNb3Rpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2
aWNlTW90aW9uRW5hYmxlZDsgfQorICAgIGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0RGV2
aWNlT3JpZW50YXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNEZXZpY2VPcmllbnRh
dGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGRldmljZU9yaWVudGF0aW9uRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KKyAg
ICBib29sIGRldmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQorICAgIGJvb2wgb25kZXZpY2VvcmllbnRhdGlv
bkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9
CisKKyAgICB2b2lkIHNldFNwZWVjaElucHV0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lz
U3BlZWNoSW5wdXRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzcGVlY2hJbnB1dEVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3BlZWNoSW5wdXRFbmFibGVkOyB9CisgICAgYm9v
bCB3ZWJraXRTcGVlY2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NwZWVjaElucHV0RW5h
YmxlZDsgfQorICAgIGJvb2wgd2Via2l0R3JhbW1hckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3BlZWNoSW5wdXRFbmFibGVkOyB9CiAKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQot
ICAgIHN0YXRpYyB2b2lkIHNldFNjcmlwdGVkU3BlZWNoRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IHNjcmlwdGVkU3BlZWNoRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKCkgeyBy
ZXR1cm4gaXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRT
cGVlY2hSZWNvZ25pdGlvbkVycm9yRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hF
bmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FdmVudEVu
YWJsZWQoKSB7IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIHdlYmtpdFNwZWVjaEdyYW1tYXJFbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRlZFNwZWVj
aEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJs
ZWQoKSB7IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2Ny
aXB0ZWRTcGVlY2hFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNTY3JpcHRlZFNwZWVjaEVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHNjcmlwdGVkU3BlZWNoRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtp
dFNwZWVjaFJlY29nbml0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNw
ZWVjaEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRXJyb3JFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIGJv
b2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFy
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAg
ICBib29sIHdlYmtpdFNwZWVjaEdyYW1tYXJMaXN0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQotICAgIHN0YXRpYyBib29sIGZpbGVTeXN0ZW1FbmFibGVkKCk7Ci0gICAgc3RhdGljIHZv
aWQgc2V0RmlsZVN5c3RlbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZmlsZVN5c3RlbUVuYWJsZWQoKSBjb25zdDsK
KyAgICB2b2lkIHNldEZpbGVTeXN0ZW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGaWxl
U3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSkFWQVND
UklQVF9JMThOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBqYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQo
KTsKLSAgICBzdGF0aWMgdm9pZCBzZXRKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBi
b29sIGphdmFTY3JpcHRJMThOQVBJRW5hYmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SmF2YVNj
cmlwdEkxOE5BUElFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNKYXZhU2NyaXB0STE4TkFQ
SUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKLSAgICBzdGF0aWMgYm9vbCBtZWRpYVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlh
U3RyZWFtRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChi
b29sIGlzRW5hYmxlZCkgeyBpc01lZGlhU3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAg
IHN0YXRpYyBib29sIHdlYmtpdEdldFVzZXJNZWRpYUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlh
U3RyZWFtRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdE1lZGlhU3RyZWFtRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgYm9vbCBw
ZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZCAmJiBp
c1BlZXJDb25uZWN0aW9uRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldFBlZXJDb25uZWN0
aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1BlZXJDb25uZWN0aW9uRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxl
ZCgpIHsgcmV0dXJuIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CisgICAgYm9vbCBtZWRpYVN0
cmVhbUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1FbmFibGVkOyB9Cisg
ICAgdm9pZCBzZXRNZWRpYVN0cmVhbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc01lZGlh
U3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0R2V0VXNlck1lZGlh
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKyAgICBi
b29sIHdlYmtpdE1lZGlhU3RyZWFtRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0
cmVhbUVuYWJsZWQ7IH0KKworICAgIGJvb2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc01lZGlhU3RyZWFtRW5hYmxlZCAmJiBtX2lzUGVlckNvbm5lY3Rpb25FbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc1BlZXJDb25uZWN0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Vi
a2l0UlRDUGVlckNvbm5lY3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gcGVlckNvbm5lY3Rp
b25FbmFibGVkKCk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BS
RUZJWEVTKQotICAgIHN0YXRpYyB2b2lkIHNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wg
bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xlZ2Fj
eUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBB
RCkKLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNHYW1lcGFkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IHdlYmtpdEdldEdhbWVwYWRzRW5hYmxlZCgpIHsgcmV0dXJuIGlzR2FtZXBhZEVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldFdlYmtpdEdldEdhbWVwYWRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBt
X2lzR2FtZXBhZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEdldEdhbWVw
YWRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNHYW1lcGFkRW5hYmxlZDsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoUVVPVEEpCi0gICAgc3RhdGljIGJvb2wgcXVvdGFFbmFibGVkKCkgeyBy
ZXR1cm4gaXNRdW90YUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRRdW90YUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNRdW90YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29s
IHF1b3RhRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNRdW90YUVuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldFF1b3RhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzUXVvdGFFbmFibGVkID0g
aXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgc3Rh
dGljIGJvb2wgbWVkaWFTb3VyY2VFbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVNvdXJjZUVuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVNvdXJjZUVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgaXNNZWRpYVNvdXJjZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIG1lZGlh
U291cmNlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVNvdXJjZUVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldE1lZGlhU291cmNlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTWVk
aWFTb3VyY2VFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNS
WVBURURfTUVESUEpCi0gICAgc3RhdGljIGJvb2wgZW5jcnlwdGVkTWVkaWFFbmFibGVkKCkgeyBy
ZXR1cm4gaXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRFbmNy
eXB0ZWRNZWRpYUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNFbmNyeXB0ZWRNZWRpYUVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGVuY3J5cHRlZE1lZGlhRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuY3J5
cHRlZE1lZGlhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRW5jcnlwdGVkTWVkaWFFbmFi
bGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBzdGF0aWMgYm9vbCB3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHsgcmV0dXJuIGlzVmlkZW9U
cmFja0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc1ZpZGVvVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9Cisg
ICAgYm9vbCB3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaWRl
b1RyYWNrRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0V2Via2l0VmlkZW9UcmFja0VuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgbV9pc1ZpZGVvVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIHN0YXRpYyBib29sIHNoYWRvd0RPTUVu
YWJsZWQoKSB7IHJldHVybiBpc1NoYWRvd0RPTUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRTaGFkb3dET01FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU2hhZG93RE9NRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc2hhZG93RE9NRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTaGFkb3dET01FbmFibGVkOyB9CisgICAgdm9pZCBzZXRTaGFkb3dET01FbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IG1faXNTaGFkb3dET01FbmFibGVkID0gaXNFbmFibGVkOyB9CiAKLSAg
ICBzdGF0aWMgYm9vbCBhdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpIHsgcmV0
dXJuIGlzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
dm9pZCBzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkID0gaXNFbmFibGVkOyB9
CisgICAgYm9vbCBhdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkID0gaXNFbmFibGVkOyB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0gICAgc3RhdGljIGJvb2wg
Y3VzdG9tRE9NRWxlbWVudHNFbmFibGVkKCkgeyByZXR1cm4gaXNDdXN0b21ET01FbGVtZW50c0Vu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRDdXN0b21ET01FbGVtZW50cyhib29sIGlzRW5h
YmxlZCkgeyBpc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJv
b2wgY3VzdG9tRE9NRWxlbWVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0N1c3RvbURP
TUVsZW1lbnRzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q3VzdG9tRE9NRWxlbWVudHMoYm9vbCBp
c0VuYWJsZWQpIHsgbV9pc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIHN0YXRpYyBib29sIHN0eWxl
U2NvcGVkRW5hYmxlZCgpIHsgcmV0dXJuIGlzU3R5bGVTY29wZWRFbmFibGVkOyB9Ci0gICAgc3Rh
dGljIHZvaWQgc2V0U3R5bGVTY29wZWRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU3R5bGVT
Y29wZWRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzdHlsZVNjb3BlZEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzU3R5bGVTY29wZWRFbmFibGVkOyB9CisgICAgdm9pZCBzZXRT
dHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1N0eWxlU2NvcGVkRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQot
ICAgIHN0YXRpYyBib29sIGlucHV0VHlwZURhdGVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5
cGVEYXRlRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlRGF0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIGlucHV0VHlwZURhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0
VHlwZURhdGVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVEYXRlRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRUeXBlRGF0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKLSAgICBz
dGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoKSB7IHJldHVybiBpc0lucHV0VHlw
ZURhdGVUaW1lRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVUaW1l
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRU
eXBlRGF0ZVRpbWVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlVGlt
ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVf
REFURVRJTUVMT0NBTCkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5h
YmxlZCgpIHsgcmV0dXJuIGlzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgdm9pZCBzZXRJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAg
Ym9vbCBpbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJ
bnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0
ZVRpbWVMb2NhbEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZURhdGVUaW1l
TG9jYWxFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9U
WVBFX01PTlRIKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlwZU1vbnRoRW5hYmxlZCgpIHsgcmV0
dXJuIGlzSW5wdXRUeXBlTW9udGhFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5wdXRU
eXBlTW9udGhFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlTW9udGhFbmFibGVk
ID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVNb250aEVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5wdXRUeXBlTW9udGhFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5
cGVNb250aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQot
ICAgIHN0YXRpYyBib29sIGlucHV0VHlwZVRpbWVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5
cGVUaW1lRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZVRpbWVFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIGlucHV0VHlwZVRpbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0
VHlwZVRpbWVFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVUaW1lRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKLSAgICBzdGF0aWMgYm9vbCBpbnB1
dFR5cGVXZWVrRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7IH0KLSAg
ICBzdGF0aWMgdm9pZCBzZXRJbnB1dFR5cGVXZWVrRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0lucHV0VHlwZVdlZWtFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVX
ZWVrRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVXZWVrRW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0SW5wdXRUeXBlV2Vla0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lu
cHV0VHlwZVdlZWtFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShD
U1BfTkVYVCkKLSAgICBzdGF0aWMgYm9vbCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xp
Y3lGZWF0dXJlc0VuYWJsZWQoKSB7IHJldHVybiBhcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJp
dHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRFeHBlcmltZW50
YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
YXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNF
bmFibGVkOyB9CisgICAgYm9vbCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0
dXJlc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1
cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RXhwZXJpbWVudGFsQ29u
dGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fYXJl
RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFi
bGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgc3RhdGlj
IGJvb2wgc2VhbWxlc3NJRnJhbWVzRW5hYmxlZCgpIHsgcmV0dXJuIGFyZVNlYW1sZXNzSUZyYW1l
c0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIHNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZVNl
YW1sZXNzSUZyYW1lc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNlYW1sZXNzSUZyYW1lc0VuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9hcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkID0gaXNFbmFi
bGVkOyB9CiAjZW5kaWYKIAotICAgIHN0YXRpYyBib29sIGxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1D
b250cm9sVUlFbmFibGVkKCkgeyByZXR1cm4gaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJv
bFVJRW5hYmxlZDsgfQorICAgIGJvb2wgbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQ7IH0KICAgICAvLyBUaGUgbGFuZyBhdHRyaWJ1dGUgc3VwcG9ydCBpcyBpbmNvbXBs
ZXRlIGFuZCBzaG91bGQgb25seSBiZSB0dXJuZWQgb24gZm9yIHRlc3RzLgotICAgIHN0YXRpYyB2
b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQorCisgICAgc3RhdGljIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMm
IHNoYXJlZEZlYXR1cmVzKCk7CiAKIHByaXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUu
Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlcygpIHsgfQorICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMoKTsKIAotICAgIHN0YXRpYyBib29sIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBz
dGF0aWMgYm9vbCBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1dl
YmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7
Ci0gICAgc3RhdGljIGJvb2wgaXNHZW9sb2NhdGlvbkVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wg
aXNJbmRleGVkREJFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzVG91Y2hFbmFibGVkOwotICAg
IHN0YXRpYyBib29sIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0Rl
dmljZU9yaWVudGF0aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1NwZWVjaElucHV0RW5h
YmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0NhbnZhc1BhdGhFbmFibGVkOwotICAgIHN0YXRpYyBi
b29sIGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNDU1NTaGFwZXNF
bmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzQ1NTUmVnaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGlj
IGJvb2wgaXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7Ci0gICAgV0VCQ09SRV9URVNUSU5HIHN0YXRp
YyBib29sIGlzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgYm9v
bCBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZDsKKyAgICBib29sIG1faXNTZXNzaW9uU3RvcmFnZUVu
YWJsZWQ7CisgICAgYm9vbCBtX2lzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQ7CisgICAgYm9v
bCBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzRGF0YVRyYW5zZmVy
SXRlbXNFbmFibGVkOworICAgIGJvb2wgbV9pc0dlb2xvY2F0aW9uRW5hYmxlZDsKKyAgICBib29s
IG1faXNJbmRleGVkREJFbmFibGVkOworICAgIGJvb2wgbV9pc1RvdWNoRW5hYmxlZDsKKyAgICBi
b29sIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9pc0RldmljZU9yaWVudGF0
aW9uRW5hYmxlZDsKKyAgICBib29sIG1faXNTcGVlY2hJbnB1dEVuYWJsZWQ7CisgICAgYm9vbCBt
X2lzQ2FudmFzUGF0aEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7
CisgICAgYm9vbCBtX2lzQ1NTU2hhcGVzRW5hYmxlZDsKKyAgICBib29sIG1faXNDU1NSZWdpb25z
RW5hYmxlZDsKKyAgICBib29sIG1faXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7CisgICAgYm9vbCBt
X2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CiAjaWYgRU5BQkxFKFND
UklQVEVEX1NQRUVDSCkKLSAgICBzdGF0aWMgYm9vbCBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsK
KyAgICBib29sIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7CiAjZW5kaWYKICNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCi0gICAgc3RhdGljIGJvb2wgaXNGaWxlU3lzdGVtRW5hYmxlZDsKKyAgICBi
b29sIG1faXNGaWxlU3lzdGVtRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJ
UFRfSTE4Tl9BUEkpCi0gICAgc3RhdGljIGJvb2wgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7
CisgICAgYm9vbCBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFTdHJlYW1FbmFibGVk
OwotICAgIHN0YXRpYyBib29sIGlzUGVlckNvbm5lY3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9p
c01lZGlhU3RyZWFtRW5hYmxlZDsKKyAgICBib29sIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShHQU1FUEFEKQotICAgIHN0YXRpYyBib29sIGlzR2FtZXBh
ZEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzR2FtZXBhZEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICBzdGF0aWMgYm9vbCBpc0xlZ2Fj
eUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZDsKKyAgICBib29sIG1faXNMZWdhY3lDU1NWZW5kb3JQ
cmVmaXhlc0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShRVU9UQSkKLSAgICBzdGF0aWMg
Ym9vbCBpc1F1b3RhRW5hYmxlZDsKKyAgICBib29sIG1faXNRdW90YUVuYWJsZWQ7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBpc0Z1bGxTY3Jl
ZW5BUElFbmFibGVkOworICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFTb3Vy
Y2VFbmFibGVkOworICAgIGJvb2wgbV9pc01lZGlhU291cmNlRW5hYmxlZDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICBzdGF0aWMgYm9vbCBpc0VuY3J5cHRlZE1l
ZGlhRW5hYmxlZDsKKyAgICBib29sIG1faXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBzdGF0aWMgYm9vbCBpc1ZpZGVvVHJhY2tF
bmFibGVkOworICAgIGJvb2wgbV9pc1ZpZGVvVHJhY2tFbmFibGVkOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLSAgICBzdGF0aWMgYm9vbCBpc1NoYWRvd0RPTUVuYWJsZWQ7Ci0K
LSAgICBzdGF0aWMgYm9vbCBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkOwor
ICAgIGJvb2wgbV9pc1NoYWRvd0RPTUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzQXV0aG9yU2hhZG93
RE9NRm9yQW55RWxlbWVudEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxF
TUVOVFMpCi0gICAgc3RhdGljIGJvb2wgaXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7CisgICAg
Ym9vbCBtX2lzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U1RZTEVfU0NPUEVEKQotICAgIHN0YXRpYyBib29sIGlzU3R5bGVTY29wZWRFbmFibGVkOworICAg
IGJvb2wgbV9pc1N0eWxlU2NvcGVkRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfREFURSkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZURhdGVFbmFibGVkOworICAg
IGJvb2wgbV9pc0lucHV0VHlwZURhdGVFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBl
RGF0ZVRpbWVFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBzdGF0
aWMgYm9vbCBpc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkOworICAgIGJvb2wgbV9pc0lu
cHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9NT05USCkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsKKyAg
ICBib29sIG1faXNJbnB1dFR5cGVNb250aEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJ
TlBVVF9UWVBFX1RJTUUpCi0gICAgc3RhdGljIGJvb2wgaXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsK
KyAgICBib29sIG1faXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KElOUFVUX1RZUEVfV0VFSykKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZVdlZWtFbmFibGVk
OworICAgIGJvb2wgbV9pc0lucHV0VHlwZVdlZWtFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ1NQX05FWFQpCi0gICAgc3RhdGljIGJvb2wgYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkOworICAgIGJvb2wgbV9hcmVFeHBlcmltZW50YWxDb250
ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJ
RlJBTUVfU0VBTUxFU1MpCi0gICAgc3RhdGljIGJvb2wgYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxl
ZDsKKyAgICBib29sIG1fYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgc3RhdGljIGJvb2wgaXNGb250TG9hZEV2ZW50
c0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzRm9udExvYWRFdmVudHNFbmFibGVkOwogI2VuZGlmCiAK
KyNpZm5kZWYgQ0xBU1NfSUZfR0NDCisjaWYgQ09NUElMRVIoR0NDKQorI2RlZmluZSBDTEFTU19J
Rl9HQ0MgY2xhc3MKKyNlbHNlCisjZGVmaW5lIENMQVNTX0lGX0dDQworI2VuZGlmCisjZW5kaWYK
KyAgICBmcmllbmQgQ0xBU1NfSUZfR0NDIE5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM+OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIFByb3BlcnR5TmFtZVByZWZpeCBn
ZXRDU1NQcm9wZXJ0eQogICAgIHN3aXRjaCAoZmlyc3RDaGFyKSB7CiAjaWYgRU5BQkxFKExFR0FD
WV9DU1NfVkVORE9SX1BSRUZJWEVTKQogICAgIGNhc2UgJ2EnOgotICAgICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0
Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJhcHBsZSIpKQorICAgICAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NW
ZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSAmJiBtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHBy
b3BlcnR5TmFtZSwgImFwcGxlIikpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJl
Zml4QXBwbGU7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCkBAIC0xMzAsNyArMTMwLDcgQEAgc3Rh
dGljIFByb3BlcnR5TmFtZVByZWZpeCBnZXRDU1NQcm9wZXJ0eQogICAgICAgICBicmVhazsKICNp
ZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCiAgICAgY2FzZSAnayc6Ci0gICAg
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0Vu
YWJsZWQoKSAmJiBtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImto
dG1sIikpCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0
eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAia2h0bWwiKSkKICAgICAgICAgICAgIHJldHVybiBQ
cm9wZXJ0eU5hbWVQcmVmaXhLSFRNTDsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTIyMyw3
ICsyMjMsNyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJbmZvIGNzc1Byb3BlcnR5SURGb3JKCiAjaWYg
RU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQogICAgIGNhc2UgUHJvcGVydHlOYW1l
UHJlZml4QXBwbGU6CiAgICAgY2FzZSBQcm9wZXJ0eU5hbWVQcmVmaXhLSFRNTDoKLSAgICAgICAg
QVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5h
YmxlZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkpOwogICAgICAgICB3cml0
ZVdlYktpdFByZWZpeChidWZmZXJQdHIpOwogICAgICAgICBpICs9IDU7CiAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0JKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBA
QAogIyBDb3B5cmlnaHQgKEMpIDIwMDYgQW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29t
PgogIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5v
cmc+CiAjIENvcHlyaWdodCAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQu
b3JnPgotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBD
b3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJvbiBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+CiAjIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAtMTQ0NCwxMSArMTQ0NCwxMSBAQCBzdWIgR2V0UnVudGlt
ZUVuYWJsZUZ1bmN0aW9uTmFtZQogewogICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsKIAotICAg
ICMgSWYgYSBwYXJhbWV0ZXIgaXMgZ2l2ZW4gKGUuZy4gIkVuYWJsZWRBdFJ1bnRpbWU9RmVhdHVy
ZU5hbWUiKSByZXR1cm4gdGhlIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OntGZWF0dXJlTmFtZX1F
bmFibGVkKCkgbWV0aG9kLgotICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6IiAu
IFRvTWV0aG9kTmFtZSgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0
UnVudGltZSJ9KSAuICJFbmFibGVkIiBpZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkVuYWJsZWRBdFJ1bnRpbWUifSAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiRW5hYmxlZEF0UnVudGltZSJ9IG5lICJWQUxVRV9JU19NSVNTSU5HIik7CisgICAgIyBJZiBh
IHBhcmFtZXRlciBpcyBnaXZlbiAoZS5nLiAiRW5hYmxlZEF0UnVudGltZT1GZWF0dXJlTmFtZSIp
IHJldHVybiB0aGUgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS57RmVh
dHVyZU5hbWV9RW5hYmxlZCgpIG1ldGhvZC4KKyAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuIiAuIFRvTWV0aG9kTmFtZSgkc2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSAuICJFbmFibGVkIiBpZiAoJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSAmJiAkc2ln
bmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9IG5lICJWQUxV
RV9JU19NSVNTSU5HIik7CiAKLSAgICAjIE90aGVyd2lzZSByZXR1cm4gYSBmdW5jdGlvbiBuYW1l
ZCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp7bWV0aG9kTmFtZX1FbmFibGVkKCkuCi0gICAgcmV0
dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoiIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1cmUt
Pm5hbWUpIC4gIkVuYWJsZWQiOworICAgICMgT3RoZXJ3aXNlIHJldHVybiBhIGZ1bmN0aW9uIG5h
bWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkue21ldGhvZE5hbWV9
RW5hYmxlZCgpLgorICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1cmUtPm5hbWUpIC4gIkVuYWJsZWQiOwog
fQogCiBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRGYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MCw3ICs5
MCw3IEBAIHZvaWQgQ1NTRm9udEZhY2U6OmZvbnRMb2FkZWQoQ1NTRm9udEZhY2UKICAgICBmb250
U2VsZWN0b3ItPmZvbnRMb2FkZWQoKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQot
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSAm
JiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3Rh
dGUgPT0gTG9hZGluZykgewogICAgICAgICBpZiAoc291cmNlLT5lbnN1cmVGb250RGF0YSgpKQog
ICAgICAgICAgICAgbm90aWZ5Rm9udExvYWRlcihMb2FkZWQpOwogICAgICAgICBlbHNlIGlmICgh
aXNWYWxpZCgpKQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgQ1NTRm9udEZhY2U6OmZvbnRMb2Fk
ZWQoQ1NTRm9udEZhY2UKICAgICAgICAgKCppdCktPmZvbnRMb2FkZWQodGhpcyk7CiAKICNpZiBF
TkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Zm9udExvYWRFdmVudHNFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkpCiAgICAgICAgIG5vdGlm
eUxvYWRpbmdEb25lKCk7CiAjZW5kaWYKIH0KQEAgLTExOCw3ICsxMTgsNyBAQCBQYXNzUmVmUHRy
PFNpbXBsZUZvbnREYXRhPiBDU1NGb250RmFjZTo6CiAgICAgQ1NTRm9udFNlbGVjdG9yKiBmb250
U2VsZWN0b3IgPSAoKm1fc2VnbWVudGVkRm9udEZhY2VzLmJlZ2luKCkpLT5mb250U2VsZWN0b3Io
KTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBOb3RM
b2FkZWQpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTm90TG9hZGVkKQogICAg
ICAgICBub3RpZnlGb250TG9hZGVyKExvYWRpbmcpOwogI2VuZGlmCiAKQEAgLTEyNyw3ICsxMjcs
NyBAQCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBDU1NGb250RmFjZTo6CiAgICAgICAgIGlm
IChSZWZQdHI8U2ltcGxlRm9udERhdGE+IHJlc3VsdCA9IG1fc291cmNlc1tpXS0+Z2V0Rm9udERh
dGEoZm9udERlc2NyaXB0aW9uLCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRT
ZWxlY3RvcikpIHsKICAgICAgICAgICAgIG1fYWN0aXZlU291cmNlID0gbV9zb3VyY2VzW2ldLmdl
dCgpOwogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgICAgICAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRl
ID09IExvYWRpbmcgJiYgbV9zb3VyY2VzW2ldLT5pc0xvYWRlZCgpKSB7CisgICAgICAgICAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50
c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nICYmIG1fc291cmNlc1tpXS0+aXNM
b2FkZWQoKSkgewogICAgICAgICAgICAgICAgIG5vdGlmeUZvbnRMb2FkZXIoTG9hZGVkKTsKICAg
ICAgICAgICAgICAgICBub3RpZnlMb2FkaW5nRG9uZSgpOwogICAgICAgICAgICAgfQpAQCAtMTM3
LDcgKzEzNyw3IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IENTU0ZvbnRGYWNlOjoKICAg
ICB9CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9h
ZGluZykgeworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmcpIHsKICAg
ICAgICAgbm90aWZ5Rm9udExvYWRlcihFcnJvcik7CiAgICAgICAgIG5vdGlmeUxvYWRpbmdEb25l
KCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogICAgICAgICAgIChDKSAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emlt
bWVybWFubkBrZGUub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjM1LDcgKzIzNSw3IEBAIHZv
aWQgQ1NTRm9udFNlbGVjdG9yOjphZGRGb250RmFjZVJ1bGUoY28KICAgICAgICAgICAgIFJlZlB0
cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGU7CiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCiAg
ICAgICAgICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMjExNiAtIFRoaXMgQ1NTRm9udEZhY2VSdWxlIGhhcyBubyBwYXJlbnQuCi0gICAgICAg
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkp
CisgICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKICAgICAgICAgICAgICAgICBydWxlID0gc3RhdGlj
X3BvaW50ZXJfY2FzdDxDU1NGb250RmFjZVJ1bGU+KGZvbnRGYWNlUnVsZS0+Y3JlYXRlQ1NTT01X
cmFwcGVyKCkpOwogI2VuZGlmCiAgICAgICAgICAgICBmb250RmFjZSA9IENTU0ZvbnRGYWNlOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8Rm9udFRyYWl0c01hc2s+KHRyYWl0c01hc2spLCBydWxlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAq
IENvcHlyaWdodCAoQykgMjAwNSBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5j
b20pCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEx
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwNyBOaWNob2xhcyBTaGFua3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KICAqIENv
cHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJp
Z2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJvcGVydAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRT
aGFwZU1hcmdpbjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVQYWRkaW5nOgogICAg
ICAgICBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTaGFwZXNFbmFibGVkKCk7CisgICAgICAgIHJldHVybiBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQo
KTsKICNlbmRpZgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3R0b206CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUxlZnQ6CkBAIC0xMDMxLDEzICsxMDMxLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Zh
bGlkS2V5d29yZFByb3BlcnQKICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19FWENMVVNJ
T05TKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRXcmFwRmxvdzoKLSAgICAgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxlZCgpKQorICAgICAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzRXhjbHVzaW9u
c0VuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCb3RoIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVNYXhpbXVtIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDbGVhcikKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
V3JhcFRocm91Z2g6Ci0gICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzRXhj
bHVzaW9uc0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmNzc0V4Y2x1c2lvbnNFbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlV3JhcCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzAxMSw3ICsz
MDExLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRAogI2lmIEVO
QUJMRShDU1NfU0hBUEVTKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZUluc2lkZToK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVPdXRzaWRlOgotICAgICAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1NoYXBlc0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQo
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVl
QXV0bykKICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTMwMjYsNyArMzAy
Niw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgogICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRTaGFwZVBhZGRpbmc6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0g
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1NoYXBlc0VuYWJsZWQoKSAmJiAhaWQgJiYgdmFs
aWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZykpOworICAgICAgICB2YWxpZFByaW1pdGl2
ZSA9IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0Vu
YWJsZWQoKSAmJiAhaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZykpOwog
ICAgICAgICBicmVhazsKICNlbmRpZgogI2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04p
CkBAIC0xMjE5OSw3ICsxMjE5OSw3IEBAIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5
SUQoY29uc3QKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCiAgICAgICAg
IC8vIElmIHRoZSBwcmVmaXggaXMgLWFwcGxlLSBvciAta2h0bWwtLCBjaGFuZ2UgaXQgdG8gLXdl
YmtpdC0uCiAgICAgICAgIC8vIFRoaXMgbWFrZXMgdGhlIHN0cmluZyBvbmUgY2hhcmFjdGVyIGxv
bmdlci4KLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRv
clByZWZpeGVzRW5hYmxlZCgpCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpCiAgICAgICAg
ICAgICAmJiAoaGFzUHJlZml4KGJ1ZmZlciwgbGVuZ3RoLCAiLWFwcGxlLSIpIHx8IGhhc1ByZWZp
eChidWZmZXIsIGxlbmd0aCwgIi1raHRtbC0iKSkpIHsKICAgICAgICAgICAgIG1lbW1vdmUoYnVm
ZmVyICsgNywgYnVmZmVyICsgNiwgbGVuZ3RoICsgMSAtIDYpOwogICAgICAgICAgICAgbWVtY3B5
KGJ1ZmZlciwgIi13ZWJraXQiLCA3KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdt
ZW50ZWRGb250RmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Nl
Z21lbnRlZEZvbnRGYWNlLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsNyArNzUsNyBA
QCB2b2lkIENTU1NlZ21lbnRlZEZvbnRGYWNlOjpmb250TG9hZGVkKENTCiAgICAgcHJ1bmVUYWJs
ZSgpOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmICFpc0xvYWRpbmcoKSkgewor
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2Fk
RXZlbnRzRW5hYmxlZCgpICYmICFpc0xvYWRpbmcoKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRy
PExvYWRGb250Q2FsbGJhY2s+ID4gY2FsbGJhY2tzOwogICAgICAgICBtX2NhbGxiYWNrcy5zd2Fw
KGNhbGxiYWNrcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjYWxs
YmFja3Muc2l6ZSgpOyArK2luZGV4KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSwxMiArMjA5LDEyIEBAIHB1YmxpYzoKICAgICB7CiAj
aWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICAgICAg
QVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSB8fCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNjb3BlZEVuYWJsZWQoKSk7CisgICAgICAgIEFTU0VS
VChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJs
ZWQoKSB8fCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnN0eWxlU2Nv
cGVkRW5hYmxlZCgpKTsKICNlbHNlCi0gICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzdHlsZVNjb3BlZEVuYWJsZWQoKSk7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKICNlbmRp
ZgogI2Vsc2UKLSAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RP
TUVuYWJsZWQoKSk7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSk7CiAjZW5kaWYKICAgICAgICAgaWYgKCFt
X3Njb3BlUmVzb2x2ZXIpCiAgICAgICAgICAgICBtX3Njb3BlUmVzb2x2ZXIgPSBhZG9wdFB0cihu
ZXcgU3R5bGVTY29wZVJlc29sdmVyKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShy
ZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTQ4LDEyICsxMTQ4LDEyIEBAIGJvb2wgRG9jdW1lbnQ6OmNzc1N0aWNr
eVBvc2l0aW9uRW5hYmxlZCgKIAogYm9vbCBEb2N1bWVudDo6Y3NzUmVnaW9uc0VuYWJsZWQoKSBj
b25zdAogewotICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NSZWdpb25zRW5h
YmxlZCgpOyAKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5jc3NSZWdpb25zRW5hYmxlZCgpOyAKIH0KIAogYm9vbCBEb2N1bWVudDo6Y3NzQ29tcG9z
aXRpbmdFbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6Y3NzQ29tcG9zaXRpbmdFbmFibGVkKCk7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzQ29tcG9zaXRpbmdFbmFibGVkKCk7CiB9CiAKIGJv
b2wgRG9jdW1lbnQ6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgY29uc3QKQEAgLTU2OTksNyArNTY5
OSw3IEBAIEhUTUxJRnJhbWVFbGVtZW50KiBEb2N1bWVudDo6c2VhbWxlc3NQYXIKIGJvb2wgRG9j
dW1lbnQ6OnNob3VsZERpc3BsYXlTZWFtbGVzc2x5V2l0aFBhcmVudCgpIGNvbnN0CiB7CiAjaWYg
RU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2VhbWxlc3NJRnJhbWVzRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSB0
aGlzLT5vd25lckVsZW1lbnQoKTsKICAgICBpZiAoIW93bmVyRWxlbWVudCkKQEAgLTU5NzcsNyAr
NTk3Nyw3IEBAIGJvb2wgRG9jdW1lbnQ6OmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIGMKIExvY2Fs
ZSYgRG9jdW1lbnQ6OmdldENhY2hlZExvY2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkK
IHsKICAgICBBdG9taWNTdHJpbmcgbG9jYWxlS2V5ID0gbG9jYWxlOwotICAgIGlmIChsb2NhbGUu
aXNFbXB0eSgpIHx8ICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpIHx8ICFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxhbmdBdHRyaWJ1dGVBd2FyZUZv
cm1Db250cm9sVUlFbmFibGVkKCkpCiAgICAgICAgIGxvY2FsZUtleSA9IGRlZmF1bHRMYW5ndWFn
ZSgpOwogICAgIExvY2FsZUlkZW50aWZpZXJUb0xvY2FsZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9
IG1fbG9jYWxlQ2FjaGUuYWRkKGxvY2FsZUtleSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5p
c05ld0VudHJ5KQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTU2NDA0KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3
LDcgKzE0ODcsNyBAQCBQYXNzUmVmUHRyPFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoCiAg
ICAgICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKIAogI2lmIEVOQUJMRShTSEFET1df
RE9NKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdXRob3JTaGFkb3dET01Gb3JB
bnlFbGVtZW50RW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuYXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoKSkgewog
ICAgICAgICBhZGRTaGFkb3dSb290KFNoYWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCgpLCBTaGFk
b3dSb290OjpBdXRob3JTaGFkb3dSb290KSk7CiAgICAgICAgIHJldHVybiBzaGFkb3dSb290KCk7
CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCShyZXZpc2lvbiAxNTY0MDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Nyw3ICs5Nyw3IEBAIFBvc2l0aW9uOjpQb3Np
dGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2gKICAgICAsIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRp
b24odHJ1ZSkKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBBU1NFUlQoKG1fYW5jaG9y
Tm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpIHx8ICFt
X2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JO
b2RlID09IGNvbnRhaW5lck5vZGUoKSk7CisgICAgQVNTRVJUKChtX2FuY2hvck5vZGUgJiYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkp
IHx8ICFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9h
bmNob3JOb2RlID09IGNvbnRhaW5lck5vZGUoKSk7CiAjZWxzZQogICAgIEFTU0VSVCghbV9hbmNo
b3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpIHx8IG1fYW5jaG9yTm9kZSA9
PSBjb250YWluZXJOb2RlKCkpOwogI2VuZGlmCkBAIC0xMTEsNyArMTExLDcgQEAgUG9zaXRpb246
OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaAogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQ
b3NpdGlvbihmYWxzZSkKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBBU1NFUlQoKG1f
YW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkp
IHx8ICFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9h
bmNob3JOb2RlID09IGNvbnRhaW5lck5vZGUoKSk7CisgICAgQVNTRVJUKChtX2FuY2hvck5vZGUg
JiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFi
bGVkKCkpIHx8ICFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkg
fHwgbV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5vZGUoKSk7CiAjZWxzZQogICAgIEFTU0VSVCgh
bV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpIHx8IG1fYW5jaG9y
Tm9kZSA9PSBjb250YWluZXJOb2RlKCkpOwogI2VuZGlmCkBAIC0xMzAsNyArMTMwLDcgQEAgUG9z
aXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaAogICAgICwgbV9pc0xlZ2FjeUVk
aXRpbmdQb3NpdGlvbihmYWxzZSkKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBBU1NF
UlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFi
bGVkKCkpCisgICAgQVNTRVJUKChtX2FuY2hvck5vZGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkpCiAgICAgICAgICAgIHx8ICFt
X2FuY2hvck5vZGUgfHwgIWVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkp
IHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKICNlbHNlCiAgICAgQVNTRVJUKCFt
X2FuY2hvck5vZGUgfHwgIWVkaXRpbmdJZ25vcmVzQ29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkp
IHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgpKTsKQEAgLTg3NSw3ICs4NzUsNyBAQCBD
b250YWluZXJOb2RlKiBQb3NpdGlvbjo6ZmluZFBhcmVudChjb25zCiAgICAgLy8gRklYTUU6IFNl
ZSBodHRwOi8vd2ViLnVnLzgyNjk3CiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKQorICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIG5vZGUtPnBhcmVudE5vZGUoKTsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vVHJlZVNjb3BlLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBET01T
ZWxlY3Rpb24qIFRyZWVTY29wZTo6Z2V0U2VsZWN0aW9uKCkKICAgICAvLyBhcyBhIGNvbnRhaW5l
ci4gSXQgaXMgbm93IGVuYWJsZWQgb25seSBpZiBydW50aW1lIFNoYWRvdyBET00gZmVhdHVyZSBp
cyBlbmFibGVkLgogICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODI2OTcKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKSB7CiAgICAgICAg
IG1fc2VsZWN0aW9uID0gRE9NU2VsZWN0aW9uOjpjcmVhdGUodGhpcyk7CiAgICAgICAgIHJldHVy
biBtX3NlbGVjdGlvbi5nZXQoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vbWFr
ZV9uYW1lcy5wbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5w
bAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMCw3ICs0MTAsNyBAQCBFTkQKICAgICBteSAkcnVudGltZUNv
bmRpdGlvbmFsID0gJGVuYWJsZWRUYWdzeyR0YWdOYW1lfXtydW50aW1lQ29uZGl0aW9uYWx9Owog
ICAgIGlmICgkcnVudGltZUNvbmRpdGlvbmFsKSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKLSAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJs
ZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
JHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIEVORAog
OwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgRU5ECiAgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBz
dGF0aWMgSlNET01XcmFwcGVyKiBjcmVhdGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKEV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudD4gZWxlbWVudCkKIHsKLSAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJsZWQoKSkgeworICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4ke3J1bnRpbWVD
b25kaXRpb25hbH1FbmFibGVkKCkpIHsKICAgICAgICAgQVNTRVJUKCFlbGVtZW50IHx8IGVsZW1l
bnQtPmlzJHBhcmFtZXRlcnN7ZmFsbGJhY2tJbnRlcmZhY2VOYW1lfSgpKTsKICAgICAgICAgcmV0
dXJuIENSRUFURV9ET01fV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsICRwYXJhbWV0ZXJze2Zh
bGxiYWNrSlNJbnRlcmZhY2VOYW1lfSwgZWxlbWVudC5nZXQoKSk7CiAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtk
ZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAw
NiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTE2NDYsNyArMTY0Niw3IEBAIGJv
b2wgSFRNTElucHV0RWxlbWVudDo6aXNTdGVwcGFibGUoKSBjb24KIGJvb2wgSFRNTElucHV0RWxl
bWVudDo6aXNTcGVlY2hFbmFibGVkKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogQWRkIHN1cHBv
cnQgZm9yIFJBTkdFLCBFTUFJTCwgVVJMLCBDT0xPUiBhbmQgREFURS9USU1FIGlucHV0IHR5cGVz
LgotICAgIHJldHVybiBtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdFNwZWVjaEF0dHJpYnV0ZSgp
ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNwZWVjaElucHV0RW5hYmxlZCgpICYmIGhhc0F0
dHJpYnV0ZSh3ZWJraXRzcGVlY2hBdHRyKTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNob3Vs
ZFJlc3BlY3RTcGVlY2hBdHRyaWJ1dGUoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNwZWVjaElucHV0RW5hYmxlZCgpICYmIGhhc0F0dHJpYnV0ZSh3ZWJraXRz
cGVlY2hBdHRyKTsKIH0KIAogI2VuZGlmCkBAIC0xOTUwLDcgKzE5NTAsNyBAQCBib29sIEhUTUxJ
bnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vCiAgICAgcGFyYW1ldGVycy5taW5pbXVtID0g
bWluaW11bSgpOwogICAgIHBhcmFtZXRlcnMubWF4aW11bSA9IG1heGltdW0oKTsKICAgICBwYXJh
bWV0ZXJzLnJlcXVpcmVkID0gaXNSZXF1aXJlZCgpOwotICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6bGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKKyAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGFuZ0F0dHJpYnV0
ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKICAgICAgICAgcGFyYW1ldGVycy5sb2NhbGUg
PSBkZWZhdWx0TGFuZ3VhZ2UoKTsKICAgICBlbHNlIHsKICAgICAgICAgQXRvbWljU3RyaW5nIGNv
bXB1dGVkTG9jYWxlID0gY29tcHV0ZUluaGVyaXRlZExhbmd1YWdlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUzNSw3ICs1MzUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGls
CiAjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5h
YmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIHRyYWNrRGVzY2VuZGFudHMgPSBk
ZXNjZW5kYW50c09mVHlwZTxIVE1MVHJhY2tFbGVtZW50Pih0aGlzKTsKQEAgLTY2OSw3ICs2Njks
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVsYXllZEFjCiAgICAgfQogCiAj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChhY3Rpb25UeXBlICYgQ29uZmlndXJlVGV4dFRy
YWNrcykpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSAmJiAoYWN0aW9uVHlwZSAmIENvbmZpZ3VyZVRleHRU
cmFja3MpKQogICAgICAgICBzZXRGbGFncyhtX3BlbmRpbmdBY3Rpb25GbGFncywgQ29uZmlndXJl
VGV4dFRyYWNrcyk7CiAjZW5kaWYKIApAQCAtNzA2LDcgKzcwNiw3IEBAIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGkKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJv
dGVjdCgqdGhpcyk7IC8vIGxvYWROZXh0U291cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQn
LCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KIAogI2lmIEVOQUJMRShW
SURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSAmJiAobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBDb25maWd1cmVUZXh0VHJh
Y2tzKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChtX3BlbmRpbmdBY3Rpb25GbGFncyAmIENvbmZp
Z3VyZVRleHRUcmFja3MpKQogICAgICAgICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CiAjZW5kaWYK
IApAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmly
ZWQoVGkKICAgICB9CiAKICNpZiBVU0UoUExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQotICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmICht
X3BlbmRpbmdBY3Rpb25GbGFncyAmIFRleHRUcmFja0NoYW5nZXNOb3RpZmljYXRpb24pKQorICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkgJiYgKG1fcGVuZGluZ0FjdGlvbkZsYWdzICYgVGV4dFRyYWNrQ2hhbmdl
c05vdGlmaWNhdGlvbikpCiAgICAgICAgIG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFu
Z2VzKCk7CiAjZW5kaWYKIApAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6cHJlcGFyZUZvckxvYWQoKQogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5l
bXB0aWVkRXZlbnQpOwogICAgICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICAg
ICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcygwKTsKICNlbmRpZgogICAgIH0KQEAgLTg5OCw3
ICs4OTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCgpCiAKICAgICAv
LyBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzQXJlUmVhZHkgd2lsbCBuZWVkICIuLi4gdGhl
IHRleHQgdHJhY2tzIHdob3NlIG1vZGUgd2FzIG5vdCBpbiB0aGUKICAgICAvLyBkaXNhYmxlZCBz
dGF0ZSB3aGVuIHRoZSBlbGVtZW50J3MgcmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBsYXN0
IHN0YXJ0ZWQiLgotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAgICAgICBtX3RleHRUcmFj
a3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25CZWdhbi5jbGVhcigpOwogICAgICAgICBpZiAobV90ZXh0
VHJhY2tzKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJh
Y2tzLT5sZW5ndGgoKTsgKytpKSB7CkBAIC0xODIyLDcgKzE4MjIsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkCiAgICAgUmVhZHlTdGF0ZSBuZXdTdGF0ZSA9IHN0
YXRpY19jYXN0PFJlYWR5U3RhdGU+KHN0YXRlKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBib29sIHRyYWNrc0FyZVJlYWR5ID0gIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkgfHwgdGV4dFRyYWNrc0FyZVJlYWR5KCk7CisgICAgYm9vbCB0
cmFja3NBcmVSZWFkeSA9ICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgfHwgdGV4dFRyYWNrc0FyZVJlYWR5KCk7CiAKICAg
ICBpZiAobmV3U3RhdGUgPT0gb2xkU3RhdGUgJiYgbV90cmFja3NBcmVSZWFkeSA9PSB0cmFja3NB
cmVSZWFkeSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkyNyw3ICsxOTI3LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOwog
ICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1
cnJlbnRUaW1lKCkpOwogI2VuZGlmCiB9CkBAIC0yODEwLDcgKzI4MTAsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXliYWNrUHJvZ3Jlc3NUCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+
cGxheWJhY2tQcm9ncmVzc2VkKCk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKICAgICAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50
VGltZSgpKTsKICNlbmRpZgogfQpAQCAtMjg2Miw3ICsyODYyLDcgQEAgZG91YmxlIEhUTUxNZWRp
YUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlh
UGxheWVyRGlkQWRkQXVkaW9UcmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBU
cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFjazo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKSk7CkBAIC0y
ODcwLDcgKzI4NzAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRk
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFz
c1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKLSAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyA0LjguMTAuMTIuMiBT
b3VyY2luZyBpbi1iYW5kIHRleHQgdHJhY2tzCkBAIC0yOTA1LDcgKzI5MDUsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZh
dGU+IHBycFRyYWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgYWRkVmlkZW9UcmFjayhWaWRlb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2sp
KTsKQEAgLTMwMTAsNyArMzAxMCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VDYXB0
aW9uVHJhY2sKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFBhc3NSZWZQ
dHI8QXVkaW9UcmFjaz4gdHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBhdWRpb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOwpAQCAtMzAxOCw3
ICszMDE4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFBhcwogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4g
dHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0cmFjayk7CkBAIC0zMDI4LDcgKzMwMjgsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhQYXNzCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6YWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrKQogewotICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdmlkZW9UcmFja3Mo
KS0+YXBwZW5kKHRyYWNrKTsKQEAgLTMwMzYsNyArMzAzNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6YWRkVmlkZW9UcmFjayhQYXMKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVB
dWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRyYWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9hdWRpb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKQEAg
LTMwNDQsNyArMzA0NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFj
aygKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKiB0
cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFRyYWNrRGlzcGxheVVwZGF0ZVNjb3BlIHNjb3BlKHRoaXMpOwpAQCAtMzA1OSw3ICszMDU5LDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVUZXh0VHJhY2soVAogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVvVHJhY2soVmlkZW9UcmFjayogdHJhY2spCiB7Ci0gICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQor
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZpZGVvVHJhY2tz
LT5yZW1vdmUodHJhY2spOwpAQCAtMzA4Niw3ICszMDg2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZW1vdmVBbGxJbmJhbmRUcgogCiBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlh
RWxlbWVudDo6YWRkVGV4dFRyYWNrKGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQor
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIDQuOC4xMC4x
Mi40IFRleHQgdHJhY2sgQVBJCkBAIC0zMTIzLDcgKzMxMjMsNyBAQCBQYXNzUmVmUHRyPFRleHRU
cmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6CiAKIEF1ZGlvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVt
ZW50OjphdWRpb1RyYWNrcygpCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIGlmICghbV9hdWRpb1RyYWNrcykKQEAgLTMxMzQsNyArMzEzNCw3IEBA
IEF1ZGlvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1QKIAogVGV4dFRyYWNrTGlz
dCogSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrcygpIAogewotICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fdGV4dFRyYWNrcykKQEAgLTMx
NDUsNyArMzE0NSw3IEBAIFRleHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmEK
IAogVmlkZW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKCkKIHsKLSAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX3Zp
ZGVvVHJhY2tzKQpAQCAtMzE1OCw3ICszMTU4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRBZGRUZXh0VHJhY2soSAogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUo
dHJhY2tUYWcpKTsKIAotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gNC44LjEwLjEyLjMgU291cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKQEAg
LTMxODQsNyArMzE4NCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRy
YWMKIHsKICAgICBBU1NFUlQodHJhY2tFbGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAK
LSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogI2lmICFMT0dfRElT
QUJMRUQKQEAgLTM2MjYsNyArMzYyNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJUaW1lQ2gKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXll
clRpbWVDaGFuZ2VkIik7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKICAgICAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgp
KTsKICNlbmRpZgogCkBAIC00MTE3LDcgKzQxMTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnVzZXJDYW5jZWxsZWRMb2FkCiAgICAgbV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOwogICAg
IHVwZGF0ZU1lZGlhQ29udHJvbGxlcigpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKQogICAgICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKDApOwog
I2VuZGlmCiB9CkBAIC00NDgzLDcgKzQ0ODMsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhh
c0Nsb3NlZENhcHRpb25zCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSB8fCAhbV90ZXh0VHJhY2tzKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHx8ICFtX3Rl
eHRUcmFja3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpIHsKQEAgLTQ1MjcsNyArNDUyNyw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0Q2xvc2VkQ2FwdGlvbnMKICAgICBtX3BsYXll
ci0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKGNsb3NlZENhcHRpb25WaXNpYmxlKTsKIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgeworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKICAgICAgICAg
bWFya0NhcHRpb25BbmRTdWJ0aXRsZVRyYWNrc0FzVW5jb25maWd1cmVkKEltbWVkaWF0ZWx5KTsK
ICAgICAgICAgdXBkYXRlVGV4dFRyYWNrRGlzcGxheSgpOwogICAgIH0KQEAgLTQ3MjcsNyArNDcy
Nyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJlVGV4dFRyYWMKIAogICAgIG1l
ZGlhQ29udHJvbHMoKS0+Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpOwogICAgIAot
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAgICAgICB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5
KCk7CiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY28KICAgICBpZiAobmFtZSA9PSB0aXRsZUF0dHIgJiYgc2hlZXQoKSkK
ICAgICAgICAgc2hlZXQoKS0+c2V0VGl0bGUodmFsdWUpOwogI2lmIEVOQUJMRShTVFlMRV9TQ09Q
RUQpCi0gICAgZWxzZSBpZiAobmFtZSA9PSBzY29wZWRBdHRyICYmIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gc2NvcGVk
QXR0ciAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnN0eWxlU2Nv
cGVkRW5hYmxlZCgpKQogICAgICAgICBzY29wZWRBdHRyaWJ1dGVDaGFuZ2VkKCF2YWx1ZS5pc051
bGwoKSk7CiAjZW5kaWYKICAgICBlbHNlIGlmIChuYW1lID09IG1lZGlhQXR0cikgewpAQCAtMTAx
LDcgKzEwMSw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWwKICNp
ZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpzY29wZWRBdHRy
aWJ1dGVDaGFuZ2VkKGJvb2wgc2NvcGVkKQogewotICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzdHlsZVNjb3BlZEVuYWJsZWQoKSk7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpOwogCiAgICAg
aWYgKCFpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1OSw3ICsxNTksNyBAQCB2
b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aFNjb3BpCiAKIHZvaWQgSFRNTFN0eWxl
RWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY29waW5nTm9kZShDb250YWluZXJOb2RlKiBzY29wZSkK
IHsKLSAgICBBU1NFUlQobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlICE9IE5vdFJlZ2lz
dGVyZWQgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsK
KyAgICBBU1NFUlQobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlICE9IE5vdFJlZ2lzdGVy
ZWQgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29w
ZWRFbmFibGVkKCkpOwogICAgIGlmICghaXNSZWdpc3RlcmVkQXNTY29wZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojp1bnJl
Z2lzdGVyV2l0aFNjbwogCiBib29sIEhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BlZCgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgp
ICYmIGZhc3RIYXNBdHRyaWJ1dGUoc2NvcGVkQXR0cik7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkgJiYgZmFz
dEhhc0F0dHJpYnV0ZShzY29wZWRBdHRyKTsKIH0KIAogdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojpz
ZXRTY29wZWQoYm9vbCBzY29wZWRWYWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05Myw3ICs5Myw3IEBAIHZv
aWQgSFRNTFRyYWNrRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGEKIAogdm9pZCBIVE1MVHJhY2tF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKQogewotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAgICAg
ICBpZiAobmFtZSA9PSBzcmNBdHRyKSB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHko
KSkKICAgICAgICAgICAgICAgICBzY2hlZHVsZUxvYWQoKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2
b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCgpCiAgICAgaWYgKG1fbG9hZFRpbWVy
LmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gMi4gSWYgdGhlIHRleHQgdHJhY2sncyB0ZXh0IHRy
YWNrIG1vZGUgaXMgbm90IHNldCB0byBvbmUgb2YgaGlkZGVuIG9yIHNob3dpbmcsIGFib3J0IHRo
ZXNlIHN0ZXBzLgpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6bG9h
ZFRpbWVyRmlyZWQoVGkKIAogYm9vbCBIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIs
NyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAg
KiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJv
c2t1cnlha292IChhcEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdl
aW5pZyAoc2FtQHdlYmtpdC5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEs
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTk5LDE1ICs5OSwxNSBA
QCBzdGF0aWMgT3duUHRyPElucHV0VHlwZUZhY3RvcnlNYXA+IGNyZWF0CiAgICAgbWFwLT5hZGQo
SW5wdXRUeXBlTmFtZXM6OmNvbG9yKCksICZDb2xvcklucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlucHV0VHlwZURhdGVFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBlRGF0ZUVuYWJsZWQoKSkKICAgICAgICAg
bWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmRhdGUoKSwgJkRhdGVJbnB1dFR5cGU6OmNyZWF0ZSk7
CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoKSkK
KyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5
cGVEYXRlVGltZUVuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmRh
dGV0aW1lKCksICZEYXRlVGltZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJs
ZWQoKSkKICAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lbG9jYWwoKSwg
JkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYKICAgICBtYXAtPmFkZChJ
bnB1dFR5cGVOYW1lczo6ZW1haWwoKSwgJkVtYWlsSW5wdXRUeXBlOjpjcmVhdGUpOwpAQCAtMTE1
LDcgKzExNSw3IEBAIHN0YXRpYyBPd25QdHI8SW5wdXRUeXBlRmFjdG9yeU1hcD4gY3JlYXQKICAg
ICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6aGlkZGVuKCksICZIaWRkZW5JbnB1dFR5cGU6OmNy
ZWF0ZSk7CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmltYWdlKCksICZJbWFnZUlucHV0
VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKLSAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlTW9udGhFbmFibGVkKCkpCisgICAgaWYgKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBlTW9udGhFbmFi
bGVkKCkpCiAgICAgICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjptb250aCgpLCAmTW9udGhJ
bnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6
bnVtYmVyKCksICZOdW1iZXJJbnB1dFR5cGU6OmNyZWF0ZSk7CkBAIC0xMjcsMTIgKzEyNywxMiBA
QCBzdGF0aWMgT3duUHRyPElucHV0VHlwZUZhY3RvcnlNYXA+IGNyZWF0CiAgICAgbWFwLT5hZGQo
SW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCgpLCAmU3VibWl0SW5wdXRUeXBlOjpjcmVhdGUpOwogICAg
IG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjp0ZWxlcGhvbmUoKSwgJlRlbGVwaG9uZUlucHV0VHlw
ZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVUaW1lRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlucHV0VHlwZVRpbWVFbmFibGVkKCkp
CiAgICAgICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjp0aW1lKCksICZUaW1lSW5wdXRUeXBl
OjpjcmVhdGUpOwogI2VuZGlmCiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnVybCgpLCAm
VVJMSW5wdXRUeXBlOjpjcmVhdGUpOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCi0gICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZVdlZWtFbmFibGVkKCkpCisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBlV2Vl
a0VuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OndlZWsoKSwgJldl
ZWtJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYKICAgICAvLyBObyBuZWVkIHRvIHJlZ2lzdGVy
ICJ0ZXh0IiBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IHR5cGUuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCShyZXZpc2lvbiAxNTY0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMTkwNSw3ICsxOTA2LDcgQEAgdm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9y
dEJsb2NrZQogYm9vbCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OmV4cGVyaW1lbnRhbEZlYXR1cmVz
RW5hYmxlZCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKENTUF9ORVhUKQotICAgIHJldHVybiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0
dXJlc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5leHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJs
ZWQoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MjQsMTAgKzE2MjQsMTAgQEAgYm9v
bCBET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQQogICAgIGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JldW5sb2FkRXZlbnQgJiYgYWxsb3dzQmVmb3JlVW5s
b2FkTGlzdGVuZXJzKHRoaXMpKQogICAgICAgICBhZGRCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVy
KHRoaXMpOwogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2Vtb3Rpb25FdmVudCAmJiBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpkZXZpY2VNb3Rpb25FbmFibGVkKCkpIHsKKyAgICBlbHNlIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZGV2aWNlTW90aW9uRW5hYmxlZCgpKSB7CiAgICAgICAg
IGlmIChEZXZpY2VNb3Rpb25Db250cm9sbGVyKiBjb250cm9sbGVyID0gRGV2aWNlTW90aW9uQ29u
dHJvbGxlcjo6ZnJvbShwYWdlKCkpKQogICAgICAgICAgICAgY29udHJvbGxlci0+YWRkRGV2aWNl
RXZlbnRMaXN0ZW5lcih0aGlzKTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpk
ZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQoKSkgeworICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkpIHsKICAg
ICAgICAgaWYgKERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IERldmlj
ZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKCkpKQogICAgICAgICAgICAgY29udHJv
bGxlci0+YWRkRGV2aWNlRXZlbnRMaXN0ZW5lcih0aGlzKTsKICAgICB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAgKiAgICAg
ICAgICAgICAgICAgICAgIDE5OTkgTGFycyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KICAqICAgICAg
ICAgICAgICAgICAgICAgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KICAq
ICAgICAgICAgICAgICAgICAgICAgMjAwMCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAg
ICAgICAgIChDKSAyMDA2IEdyYWhhbSBEZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQog
ICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkK
ICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpA
QCAtMjc2Niw3ICsyNzY2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFz
a3MoKQogICAgICAgICBmcmFtZSgpLmxvYWRlcigpLmRpZExheW91dChtaWxlc3RvbmVzQWNoaWV2
ZWQpOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpKQog
ICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCktPmZvbnRsb2FkZXIoKS0+ZGlkTGF5b3V0KCk7CiAj
ZW5kaWYKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbFNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTUgKzY2LDE1IEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRp
bmdzJiBzZXR0aW5ncykKLSAgICA6IG1fb3JpZ2luYWxDU1NFeGNsdXNpb25zRW5hYmxlZChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxlZCgpKQotICAgICwgbV9vcmln
aW5hbENTU1NoYXBlc0VuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5h
YmxlZCgpKQorICAgIDogbV9vcmlnaW5hbENTU0V4Y2x1c2lvbnNFbmFibGVkKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSkKKyAg
ICAsIG1fb3JpZ2luYWxDU1NTaGFwZXNFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuY3NzU2hhcGVzRW5hYmxlZCgpKQogICAgICwgbV9vcmlnaW5hbENTU1Zh
cmlhYmxlc0VuYWJsZWQoc2V0dGluZ3MuY3NzVmFyaWFibGVzRW5hYmxlZCgpKQogI2lmIEVOQUJM
RShTSEFET1dfRE9NKQotICAgICwgbV9vcmlnaW5hbFNoYWRvd0RPTUVuYWJsZWQoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKQotICAgICwgbV9vcmlnaW5hbEF1dGhv
clNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1
dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKCkpCisgICAgLCBtX29yaWdpbmFsU2hh
ZG93RE9NRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNo
YWRvd0RPTUVuYWJsZWQoKSkKKyAgICAsIG1fb3JpZ2luYWxBdXRob3JTaGFkb3dET01Gb3JBbnlF
bGVtZW50RW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF1
dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUo
U1RZTEVfU0NPUEVEKQotICAgICwgbV9vcmlnaW5hbFN0eWxlU2NvcGVkKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpKQorICAgICwgbV9vcmlnaW5hbFN0eWxlU2Nv
cGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRF
bmFibGVkKCkpCiAjZW5kaWYKICAgICAsIG1fb3JpZ2luYWxFZGl0aW5nQmVoYXZpb3Ioc2V0dGlu
Z3MuZWRpdGluZ0JlaGF2aW9yVHlwZSgpKQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBA
IC04NSw3ICs4NSw3IEBAIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmcK
ICAgICAsIG1fb3JpZ2luYWxNZWRpYVR5cGVPdmVycmlkZShzZXR0aW5ncy5tZWRpYVR5cGVPdmVy
cmlkZSgpKQogICAgICwgbV9vcmlnaW5hbENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcoc2V0
dGluZ3MuY2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZygpKQogICAgICwgbV9vcmlnaW5hbE1v
Y2tTY3JvbGxiYXJzRW5hYmxlZChzZXR0aW5ncy5tb2NrU2Nyb2xsYmFyc0VuYWJsZWQoKSkKLSAg
ICAsIG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6bGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKKyAg
ICAsIG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJv
bFVJRW5hYmxlZCgpKQogICAgICwgbV9pbWFnZXNFbmFibGVkKHNldHRpbmdzLmFyZUltYWdlc0Vu
YWJsZWQoKSkKICAgICAsIG1fbWluaW11bVRpbWVySW50ZXJ2YWwoc2V0dGluZ3MubWluRE9NVGlt
ZXJJbnRlcnZhbCgpKQogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAgLTEwMiwxNSArMTAyLDE1
IEBAIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmcKIAogdm9pZCBJbnRl
cm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0g
ICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQobV9vcmln
aW5hbENTU0V4Y2x1c2lvbnNFbmFibGVkKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRDU1NTaGFwZXNFbmFibGVkKG1fb3JpZ2luYWxDU1NTaGFwZXNFbmFibGVkKTsKKyAgICBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU0V4Y2x1c2lvbnNFbmFi
bGVkKG1fb3JpZ2luYWxDU1NFeGNsdXNpb25zRW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NTaGFwZXNFbmFibGVkKG1fb3JpZ2luYWxD
U1NTaGFwZXNFbmFibGVkKTsKICAgICBzZXR0aW5ncy5zZXRDU1NWYXJpYWJsZXNFbmFibGVkKG1f
b3JpZ2luYWxDU1NWYXJpYWJsZXNFbmFibGVkKTsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKG1fb3JpZ2luYWxT
aGFkb3dET01FbmFibGVkKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRBdXRob3JT
aGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChtX29yaWdpbmFsQXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuc2V0U2hhZG93RE9NRW5hYmxlZChtX29yaWdpbmFsU2hhZG93RE9NRW5hYmxlZCk7
CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRBdXRob3JT
aGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChtX29yaWdpbmFsQXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQobV9vcmlnaW5h
bFN0eWxlU2NvcGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldFN0eWxlU2NvcGVkRW5hYmxlZChtX29yaWdpbmFsU3R5bGVTY29wZWQpOwogI2VuZGlm
CiAgICAgc2V0dGluZ3Muc2V0RWRpdGluZ0JlaGF2aW9yVHlwZShtX29yaWdpbmFsRWRpdGluZ0Jl
aGF2aW9yKTsKICNpZiBFTkFCTEUoVEVYVF9BVVRPU0laSU5HKQpAQCAtMTIxLDcgKzEyMSw3IEBA
IHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8KICAgICBzZXR0aW5ncy5z
ZXRNZWRpYVR5cGVPdmVycmlkZShtX29yaWdpbmFsTWVkaWFUeXBlT3ZlcnJpZGUpOwogICAgIHNl
dHRpbmdzLnNldENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcobV9vcmlnaW5hbENhbnZhc1Vz
ZXNBY2NlbGVyYXRlZERyYXdpbmcpOwogICAgIHNldHRpbmdzLnNldE1vY2tTY3JvbGxiYXJzRW5h
YmxlZChtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkKTsKLSAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChtX2xh
bmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250
cm9sVUlFbmFibGVkKG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOwog
ICAgIHNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQobV9pbWFnZXNFbmFibGVkKTsKICAgICBzZXR0
aW5ncy5zZXRNaW5ET01UaW1lckludGVydmFsKG1fbWluaW11bVRpbWVySW50ZXJ2YWwpOwogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIEludGVybmFsU2V0
dGluZ3M6OnNldFNoYWRvd0RPTUVuYWJsCiAgICAgfQogCiAjaWYgRU5BQkxFKFNIQURPV19ET00p
Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVk
KTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNoYWRv
d0RPTUVuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIC8vIEV2ZW4gU0hBRE9XX0RPTSBpcyBv
ZmYsIEludGVybmFsU2V0dGluZ3MgYWxsb3dzIHNldFNoYWRvd0RPTUVuYWJsZWQoZmFsc2UpIHRv
CiAgICAgLy8gaGF2ZSBicm9hZGVyIHRlc3QgY292ZXJhZ2UuIEJ1dCBpdCBjYW5ub3QgYmUgc2V0
U2hhZG93RE9NRW5hYmxlZCh0cnVlKS4KQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEludGVybmFs
U2V0dGluZ3M6OnNldFNoYWRvd0RPTUVuYWJsCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldEF1
dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKGJvb2wgaXNFbmFibGVkKQogewogI2lm
IEVOQUJMRShTSEFET1dfRE9NKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEF1dGhv
clNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKGlzRW5hYmxlZCk7CisgICAgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRBdXRob3JTaGFkb3dET01Gb3JBbnlF
bGVtZW50RW5hYmxlZChpc0VuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNFbmFi
bGVkKTsKICNlbmRpZgpAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6
c2V0QXV0aG9yU2hhZG93RE8KIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U3R5bGVTY29wZWRF
bmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChlbmFibGVkKTsKKyAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFN0eWxlU2NvcGVk
RW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2Vu
ZGlmCkBAIC0zNDYsMTMgKzM0NiwxMyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFRleHRB
dXRvc2l6aW5nCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldENTU0V4Y2x1c2lvbnNFbmFibGVk
KGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVj
KTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NFeGNsdXNpb25zRW5hYmxlZChl
bmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNl
dENTU0V4Y2x1c2lvbnNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIEludGVybmFsU2V0dGlu
Z3M6OnNldENTU1NoYXBlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBVTlVTRURfUEFSQU0oZWMpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dENTU1NoYXBlc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NTaGFwZXNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lk
IEludGVybmFsU2V0dGluZ3M6OnNldENTU1ZhcmlhYmxlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTQ0OSw3ICs0NDksNyBAQCB2b2lkIEludGVybmFsU2V0dGlu
Z3M6OnNldFN0b3JhZ2VCbG9ja2luCiAKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0
dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlF
bmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoZW5hYmxlZCk7
CiB9CiAKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4My4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZTo6b3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIpOiBVc2UK
KyAgICAgICAgU2luZ2xldG9uIGFjY2Vzc29yLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZTo6c2V0U2hhZG93RE9NRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlOjpzZXRDU1NSZWdpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVu
ZGxlOjpzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZTo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQ
cmVmZXJlbmNlcyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2Vi
UHJvY2Vzcyk6IERpdHRvLgorCiAyMDEzLTA5LTI1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGggUXQg
NS4yIFF0UG9zaXRpb24gbW9kdWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNp
b24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5MSwxMiArMTkxLDEyIEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9vbFByZWZlcmUKIAogI2lmIEVOQUJMRShDU1NfUkVH
SU9OUykKICAgICBpZiAocHJlZmVyZW5jZSA9PSAiV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWQiKQot
ICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChlbmFi
bGVkKTsKKyAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19D
T01QT1NJVElORykKICAgICBpZiAocHJlZmVyZW5jZSA9PSAiV2ViS2l0Q1NTQ29tcG9zaXRpbmdF
bmFibGVkIikKLSAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29tcG9zaXRp
bmdFbmFibGVkKGVuYWJsZWQpOworICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgog
CiAgICAgLy8gTWFwIHRoZSBuYW1lcyB1c2VkIGluIExheW91dFRlc3RzIHdpdGggdGhlIG5hbWVz
IHVzZWQgaW4gV2ViQ29yZTo6U2V0dGluZ3MgYW5kIFdlYlByZWZlcmVuY2VzU3RvcmUuCkBAIC02
NDYsNyArNjQ2LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0U2VyaWFsTG9hZGluZ0VuYQog
dm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0U2hhZG93RE9NRW5hYmxlZChib29sIGVuYWJsZWQpCiB7
CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0
U2hhZG93RE9NRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtNjU1LDcgKzY1NSw3IEBAIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OnNldFNoYWRvd0RPTUVuYWJsZWQKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6
OnNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ1NTX1JF
R0lPTlMpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQo
ZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZWQpOwogI2VuZGlmCkBAIC02NjQsNyArNjY0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
c2V0Q1NTUmVnaW9uc0VuYWJsZQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q1NTQ29tcG9zaXRp
bmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQot
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChlbmFi
bGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENT
U0NvbXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVu
YWJsZWQpOwogI2VuZGlmCkBAIC02NzMsNyArNjczLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6
c2V0Q1NTQ29tcG9zaXRpbmdFbgogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0U2VhbWxlc3NJRnJh
bWVzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykK
LSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVu
YWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0
U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGVuYWJsZWQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OTEsOCAr
MjQ5MSw4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKICAgICBz
ZXR0aW5ncy5zZXRTaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3Ioc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGVL
ZXkoKSkpOwogICAgIHNldHRpbmdzLnNldEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChz
dG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFnZ3Jlc3NpdmVUaWxl
UmV0ZW50aW9uRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0Q1NTQ3VzdG9tRmlsdGVy
RW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc0N1
c3RvbUZpbHRlckVuYWJsZWRLZXkoKSkpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dENTU1JlZ2lvbnNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNl
c0tleTo6Y3NzUmVnaW9uc0VuYWJsZWRLZXkoKSkpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2Vi
UHJlZmVyZW5jZXNLZXk6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZEtleSgpKSk7CisgICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChz
dG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc1JlZ2lvbnNFbmFi
bGVkS2V5KCkpKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Mu
c2V0Q1NTR3JpZExheW91dEVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5Ojpjc3NHcmlkTGF5b3V0RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0
UmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJl
ZmVyZW5jZXNLZXk6OnJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRp
bmdzLnNldFdlYkdMRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5j
ZXNLZXk6OndlYkdMRW5hYmxlZEtleSgpKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEz
OCw3ICsxMzgsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAg
ICAgfQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRT
cGVlY2hJbnB1dEVuYWJsZWQoZmFsc2UpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U3BlZWNoSW5wdXRFbmFibGVkKGZhbHNlKTsKIAog
ICAgIC8vIFdlJ2xsIG9ubHkgaW5zdGFsbCB0aGUgUXQgYnVpbHRpbiBidW5kbGUgaWYgd2UgZG9u
J3QgaGF2ZSBvbmUgZ2l2ZW4gYnkgdGhlIFVJIHByb2Nlc3MuCiAgICAgLy8gQ3VycmVudGx5IG9u
bHkgV1RSIHByb3ZpZGVzIGl0cyBvd24gYnVuZGxlLgpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1
NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMTMtMDktMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dpbmRvd3NdIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMg
YSBTaW5nbGV0b24gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjE4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRz
LmRlZi5pbjoKKyAgICAgICAgRXhwb3NlIHNpbmdsZXRvbiBhY2Nlc3NvciBmb3IgRExMIGNsaWVu
dHMuCisKIDIwMTMtMDktMjUgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBk
aWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggYnVpbGQgd2l0aCBRdCA1LjIgUXRQb3NpdGlv
biBtb2R1bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0
R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVm
LmluCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dl
YktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgkod29ya2luZyBjb3B5KQpA
QCAtMjM3LDggKzIzNyw2IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Rp
c2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWiwgP2Rp
c2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0b3JDb250cm9sbGVyQFdlYkNvcmVAQFFFQUFYWFopCiAj
ZW5kaWYKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRA
V2ViQ29yZUBAWUFfTlBCVk5vZGVAMUBAWiwgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29y
ZUBAWUFfTlBFQlZOb2RlQDFAQFopCi0gICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQotICAgICAgICA/aXNDU1NTaGFwZXNF
bmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICBzeW1i
b2xXaXRoUG9pbnRlcig/aXNQcmVsb2FkZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBA
UUJFX05BQlZTdHJpbmdAV1RGQEBAWiwgP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVy
QFdlYkNvcmVAQFFFQkFfTkFFQlZTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBv
aW50ZXIoP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNA
UEFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNv
cmVAQEBXVEZAQEBaLCA/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQRUFWRXhl
Y1N0YXRlQDNAUEVBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5n
TGlzdEBXZWJDb3JlQEBAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2xhc3RD
aGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVf
TlhaLCA/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdl
YkNvcmVAQFFFQkFfTlhaKQpAQCAtMjk5LDYgKzI5Nyw3IEBAIEVYUE9SVFMKICAgICAgICAgc3lt
Ym9sV2l0aFBvaW50ZXIoP3NldFBzZXVkb0BFbGVtZW50QFdlYkNvcmVAQFFBRVhBQlZBdG9taWNT
dHJpbmdAV1RGQEBAWiwgP3NldFBzZXVkb0BFbGVtZW50QFdlYkNvcmVAQFFFQUFYQUVCVkF0b21p
Y1N0cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0TWVkaWFUeXBl
T3ZlcnJpZGVAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVlN0cmluZ0BXVEZAQEBaLCA/c2V0TWVk
aWFUeXBlT3ZlcnJpZGVAU2V0dGluZ3NAV2ViQ29yZUBAUUVBQVhBRUJWU3RyaW5nQFdURkBAQFop
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3JlQEBR
QkVQQVZTZXR0aW5nc0AyQFhaLCA/c2V0dGluZ3NARG9jdW1lbnRAV2ViQ29yZUBAUUVCQVBFQVZT
ZXR0aW5nc0AyQFhaKQorICAgICAgICA/c2hhcmVkRmVhdHVyZXNAUnVudGltZUVuYWJsZWRGZWF0
dXJlc0BXZWJDb3JlQEBTQUFBVjEyQFhaCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zdWJz
dHJpbmdAU3RyaW5nQFdURkBAUUJFP0FWMTJASUlAWiwgP3N1YnN0cmluZ0BTdHJpbmdAV1RGQEBR
RUJBP0FWMTJASUlAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3N1Z2dlc3RlZFZhbHVl
QEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUJFQUJWU3RyaW5nQFdURkBAWFosID9zdWdnZXN0
ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFFQkFBRUJWU3RyaW5nQFdURkBAWFop
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD90YXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBA
UUJFQUJWU3RyaW5nQFdURkBAWFosID90YXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUVCQUFF
QlZTdHJpbmdAV1RGQEBYWikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkocmV2
aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMgYXMgYSBTaW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjE4ODMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHA6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldFN0eWxlU2NvcGVkRW5hYmxlZCk6
IHVzZQorICAgICAgICBzaW5nbGV0b24gYWNjZXNzb3IuCisKIDIwMTMtMDktMjMgIEphY2t5IEpp
YW5nICA8emhhamlhbmdAYmxhY2tiZXJyeS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFBv
b3IgcmVuZGVyaW5nIG9wZW5pbmcgYSBHb29nbGUgbWFwIHNob3J0IGxpbmsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
UmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl
bmVyYWwgUHVibGljCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnQ6OnNjYWxlUGFnZUJ5KAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydDo6c2V0U3R5bGVTY29wZWRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQoZW5hYmxlZCk7
CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTdHlsZVNj
b3BlZEVuYWJsZWQoZW5hYmxlZCk7CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwko
cmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVs
Z2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJl
cyBhcyBhIFNpbmdsZXRvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyMTg4My4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldENTU1JlZ2lvbnNFbmFibGVk
KTogVXNlIHNpbmdsZXRvbi4KKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0
U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6IERpdHRvLgorICAgICAgICAqIGV3ay9ld2tfc2V0dGlu
Z3MuY3BwOgorICAgICAgICAoZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxlX2dldCk6IERp
dHRvLgorICAgICAgICAoZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxlX3NldCk6CisgICAg
ICAgICogZXdrL2V3a192aWV3LmNwcDoKKyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6IERp
dHRvLgorCiAyMDEzLTA5LTIwICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ft
c3VuZy5jb20+CiAKICAgICAgICAgW0FUS10gRG8gbm90IGV4cG9zZSBhcmlhLWhlbHAgaW4gQVRL
IGJhc2VkIHBsYXRmb3JtcwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCShyZXZpc2lv
biAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENv
cHlyaWdodCAoQykgMjAxMSBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwogICAgIENvcHlyaWdo
dCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgICAgQ29weXJpZ2h0IChDKSAyMDEyIElu
dGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTMyMCwxMyArMzIxLDEzIEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRD
U1NSZWcKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdl
KTsKIAotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNF
bmFibGVkKGVuYWJsZWQpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7
CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oZW5hYmxlZCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0
dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGlu
Z3MuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Nl
dHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAgICBDb3B5cmlnaHQg
KEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwogICAgIENvcHlyaWdodCAo
QykgMjAwOS0yMDEwIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAgICBDb3B5cmlnaHQgKEMpIDIwMTIg
SW50ZWwgQ29ycG9yYXRpb24KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNTUsNyArMjU2LDcgQEAg
dm9pZCBld2tfc2V0dGluZ3Nfb2JqZWN0X2NhY2hlX2VuYWJsZV9zZQogRWluYV9Cb29sIGV3a19z
ZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZV9nZXQoKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9N
KQotICAgIHJldHVybiBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01F
bmFibGVkKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpOwogI2Vsc2UKICAgICByZXR1cm4gZmFs
c2U7CiAjZW5kaWYKQEAgLTI2NSw3ICsyNjYsNyBAQCBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX3No
YWRvd19kb21fZW5hYmxlCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgZW5hYmxlID0g
ISFlbmFibGU7Ci0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93
RE9NRW5hYmxlZChlbmFibGUpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGUpOwogICAgIHJldHVy
biB0cnVlOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAgICBD
b3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwogICAgIENv
cHlyaWdodCAoQykgMjAwOS0yMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAgICBDb3B5cmlnaHQg
KEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03MzYsOSAr
NzM3LDkgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgIHBy
aXYtPnBhZ2VTZXR0aW5ncy0+c2V0U2Fuc1NlcmlmRm9udEZhbWlseSgic2FucyIpOwogICAgIHBy
aXYtPnBhZ2VTZXR0aW5ncy0+c2V0U3RhbmRhcmRGb250RmFtaWx5KCJzYW5zIik7CiAgICAgcHJp
di0+cGFnZVNldHRpbmdzLT5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoZmFsc2UpOwotICAg
IFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKHRy
dWUpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQodHJ1ZSk7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVT
UykKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFt
ZXNFbmFibGVkKHRydWUpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCh0cnVlKTsKICNlbmRpZgog
ICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2
LT5wYWdlU2V0dGluZ3MtPnNldFBsdWdpbnNFbmFibGVkKHRydWUpOwpJbmRleDogU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRG
ZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEyMTg4My4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENTU1JlZ2lvbnNF
bmFibGVkKTogVXNlIHNpbmdsZXRvbi4KKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6c2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKToK
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0U2VhbWxlc3NJRnJhbWVzRW5h
YmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFNoYWRvd0RPTUVu
YWJsZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTdHlsZVNjb3Bl
ZEVuYWJsZWQpOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MpOiBEaXR0by4KKwogMjAxMy0wOS0yNCAg
TG9yZW56byBUaWx2ZSAgPGx0aWx2ZUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBj
b21waWxhdGlvbiBwcm9ibGVtcyB3aGVuIHNldHRpbmcgRU5BQkxFX0RSQUdfU1VQUE9SVCA9IEZB
TFNFCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysr
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAy
MDEwIEpvb25lIEh1ciA8am9vbmVAa2xkcC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDExIEln
YWxpYSBTLkwuCi0gKiAgQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtNTc1LDcgKzU3NSw3IEBAIHZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRDU1NHcmkKIAogdm9pZCBEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnNldENTU1JlZ2lvbnNFbmFibGVkKFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXcsIGJvb2wgZW5hYmxlZCkKIHsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NS
ZWdpb25zRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q1NTQ3VzdG9tRmlsdGVyRW5hYmxlZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBib29sIGVuYWJsZWQpCkBAIC01ODgsMjggKzU4OCwyOCBAQCB2b2lk
IER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q1NTQ3VzCiB2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6c2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNF
bmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVh
dHVyZXNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNF
bmFibGVkKGVuYWJsZWQpOwogI2VuZGlmCiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFC
TEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1s
ZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOwogI2Vu
ZGlmCiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTaGFkb3dET01FbmFi
bGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2hhZG93RE9NRW5hYmxlZChl
bmFibGVkKTsKICNlbmRpZgogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0
U3R5bGVTY29wZWRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoU1RZTEVfU0NP
UEVEKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChl
bmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNl
dFN0eWxlU2NvcGVkRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisr
KyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyLDYgKzEyLDcgQEAKICAqICBDb3B5cmlnaHQgKEMpIDIwMDkgQm9iYnkgUG93ZXJz
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEpvb25lIEh1ciA8am9vbmVAa2xkcC5vcmc+CiAgKiAg
Q29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM1
ODMsNyArMzU4NCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGkK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRNZWRpYVN0cmVhbUVuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5l
bmFibGVNZWRpYVN0cmVhbSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRNZWRpYVN0cmVhbUVuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5l
bmFibGVNZWRpYVN0cmVhbSk7CiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEz
LTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJl
ZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogVXNlIHNpbmds
ZXRvbiBhY2Nlc3Nvci4KKyAgICAgICAgKC1bV2ViVmlldyBfc2V0RGFzaGJvYXJkQmVoYXZpb3I6
dG86XSk6IERpdHRvLgorCiAyMDEzLTA5LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KIAogICAgICAgICBDaGFuZ2UgSlNDIGRlYnVnIGhvb2tzIHRvIHBhc3MgYSBDYWxsRnJhbWUq
IGluc3RlYWQgb2YgYSBEZWJ1Z2dlckNhbGxGcmFtZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDUtMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNv
bSkKICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCiAgKgpAQCAtMTUyMSwxMyArMTUy
MSwxMyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAjaWYgRU5B
QkxFKENTU19TSEFERVJTKQogICAgIHNldHRpbmdzLnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQo
W3ByZWZlcmVuY2VzIGNzc0N1c3RvbUZpbHRlckVuYWJsZWRdKTsKICNlbmRpZgotICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBjc3NS
ZWdpb25zRW5hYmxlZF0pOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0NvbXBv
c2l0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgY3NzQ29tcG9zaXRpbmdFbmFibGVkXSk7CisgICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5h
YmxlZChbcHJlZmVyZW5jZXMgY3NzUmVnaW9uc0VuYWJsZWRdKTsKKyAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChbcHJl
ZmVyZW5jZXMgY3NzQ29tcG9zaXRpbmdFbmFibGVkXSk7CiAjaWYgRU5BQkxFKFdFQl9BVURJTykK
ICAgICBzZXR0aW5ncy5zZXRXZWJBdWRpb0VuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkF1ZGlvRW5h
YmxlZF0pOwogI2VuZGlmCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKFtwcmVmZXJlbmNlcyBz
ZWFtbGVzc0lGcmFtZXNFbmFibGVkXSk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKFtwcmVmZXJlbmNlcyBzZWFt
bGVzc0lGcmFtZXNFbmFibGVkXSk7CiAjZW5kaWYKICAgICBzZXR0aW5ncy5zZXRDU1NHcmlkTGF5
b3V0RW5hYmxlZChbcHJlZmVyZW5jZXMgY3NzR3JpZExheW91dEVuYWJsZWRdKTsKICNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0yMTg2LDcgKzIxODYsNyBAQCAtICh2b2lkKV9zZXREYXNo
Ym9hcmRCZWhhdmlvcjooV2ViRGFzaGJvCiAgICAgICAgICAgICBpZiAoX3ByaXZhdGUtPnBhZ2Up
CiAgICAgICAgICAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0VXNlc0Rhc2hi
b2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUoZmxhZyk7CiAjaWYgRU5BQkxFKExFR0FDWV9D
U1NfVkVORE9SX1BSRUZJWEVTKQotICAgICAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0TGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKGZsYWcpOworICAgICAgICAgICAgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRMZWdhY3lDU1NWZW5kb3JQ
cmVmaXhlc0VuYWJsZWQoZmxhZyk7CiAjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wOS0y
NSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3Rv
ciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6
CisgICAgICAgIChRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSk6IFVzZSBzaW5nbGV0b24gYWNj
ZXNzb3IuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFNlYW1sZXNzSUZyYW1l
c0VuYWJsZWQpOiBEaXR0by4KKwogMjAxMy0wOS0yNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBidWlsZCB3aXRoIFF0
IDUuMiBRdFBvc2l0aW9uIG1vZHVsZQpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNl
dHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGlu
Z3MuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0
dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmln
aHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CisgICAgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
IAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTczLDEwICsxNzQsMTAgQEAgdm9pZCBRV2ViU2V0dGlu
Z3NQcml2YXRlOjphcHBseSgpCiAKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFX
ZWJTZXR0aW5nczo6Q1NTUmVnaW9uc0VuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NSZWdpb25z
RW5hYmxlZCkpOwotICAgICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRD
U1NSZWdpb25zRW5hYmxlZCh2YWx1ZSk7CisgICAgICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQodmFsdWUpOwog
ICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NDb21wb3Np
dGluZ0VuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0
dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NDb21wb3NpdGluZ0VuYWJsZWQpKTsKLSAg
ICAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29tcG9zaXRpbmdF
bmFibGVkKHZhbHVlKTsKKyAgICAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQodmFsdWUpOwogICAgICAg
ICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NHcmlkTGF5b3V0RW5h
YmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRl
cy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0dyaWRMYXlvdXRFbmFibGVkKSk7CiAgICAgICAgIHNl
dHRpbmdzLT5zZXRDU1NHcmlkTGF5b3V0RW5hYmxlZCh2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydFF0LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIs
NyArMiw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJv
YmVydGhvZ2FuLm5ldD4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykg
MjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCi0gICAgQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDEyIEFwcGxlIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIsIDIwMTMg
QXBwbGUgSW5jLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6Z2V0VHJhY2tlZAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYg
RU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOworICAgIFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVz
RW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0w
OS0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2lu
ZG93c10gUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOiBVc2Ugc2lu
Z2xldG9uIGFjY2Vzc29yCisKIDIwMTMtMDktMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbmRvd3NdIFVucmV2aWV3ZWQgY3Jhc2ggZml4IGFmdGVy
IHIxNTYzMjEuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3ODMsMTIg
KzQ3ODMsMTIgQEAgSFJFU1VMVCBXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAg
IGhyID0gcHJlZmVyZW5jZXMtPmlzQ1NTUmVnaW9uc0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlm
IChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoISFlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKCEhZW5hYmxl
ZCk7CiAKICAgICBociA9IHByZWZlcmVuY2VzLT5hcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkKCZl
bmFibGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoISFlbmFibGVk
KTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1s
ZXNzSUZyYW1lc0VuYWJsZWQoISFlbmFibGVkKTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212612</attachid>
            <date>2013-09-25 12:05:19 -0700</date>
            <delta_ts>2013-09-25 13:38:58 -0700</delta_ts>
            <desc>Removed offending WebCore.exp.in entries</desc>
            <filename>bug-121883-20130925120504.patch</filename>
            <type>text/plain</type>
            <size>129647</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzNCBAQAorMjAxMy0wOS0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0
b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgV2luZG93
cyBpcyBleHBlcmllbmNpbmcgY3Jhc2hlcyB3aGVuIGNsaWVudCBwcm9ncmFtcyAoc3VjaCBhcwor
ICAgICAgICBEdW1wUmVuZGVyVHJlZSkgYXR0ZW1wIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUg
UnVudGltZUVuYWJsZWRGZWF0dXJlcworICAgICAgICBvYmplY3QuIFRoZSBpbmxpbmVkIHN0YXRp
YyBhY2Nlc3NvciBtZXRob2RzIGFyZSBub3QgYWNjZXNzaW5nCisgICAgICAgIG1lbW9yeSBzYWZl
bHkgKHdoZW4gY29tcGlsZWQgYnkgVmlzdWFsIFN0dWRpbykgcmVzdWx0aW5nIGluCisgICAgICAg
IGNyYXNoZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjogUmVtb3ZlIHN0YXRpYyBhY2Nlc3NvcnMgZm9yIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuCisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcDogU3dpdGNoIG1ldGhvZHMgdG8KKyAgICAgICAgY29uZm9ybSB0byBhIHNp
bmdsZXRvbiBwYXR0ZXJuLgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6UnVudGltZUVuYWJsZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZpbGVTeXN0ZW1FbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmphdmFTY3JpcHRJMThOQVBJRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1l
ZGlhRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhQ29udHJvbGxl
ckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVk
aWFFcnJvckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6dGltZVJhbmdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlU3luY0VuYWJsZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExvY2FsU3Rv
cmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2Vzc2lvblN0b3JhZ2VFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdE5vdGlmaWNhdGlvbnNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdE5v
dGlmaWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldERhdGFUcmFuc2Zlckl0ZW1zRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkYXRhVHJh
bnNmZXJJdGVtc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0R2VvbG9jYXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Omdlb2xvY2F0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJraXRJbmRleGVkREJFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEluZGV4ZWREQkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5kZXhlZERC
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRD
YW52YXNQYXRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjYW52YXNQYXRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRDU1NFeGNsdXNpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NTaGFwZXNFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1NoYXBlc0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9u
c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3Nz
UmVnaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEZ1
bGxTY3JlZW5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldFdlYmtpdEZ1bGxTY3JlZW5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRJc0Z1bGxT
Y3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdEZ1bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZEVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5F
bGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbHNjcmVlbkVs
ZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6dG91Y2hFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFRvdWNoRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXREZXZpY2VNb3Rpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmlj
ZU1vdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6ZGV2aWNlTW90aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Om9uZGV2aWNlbW90aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXREZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRp
b25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRl
dmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Om9uZGV2aWNlb3JpZW50YXRpb25FbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNwZWVjaElucHV0RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzcGVlY2hJbnB1dEVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0U3Bl
ZWNoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRHcmFtbWFyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRTY3JpcHRlZFNwZWVjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2NyaXB0ZWRTcGVlY2hFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaFJlY29nbml0aW9uRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRT
cGVlY2hSZWNvZ25pdGlvbkVycm9yRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbkV2ZW50RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hHcmFt
bWFyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0RmlsZVN5c3RlbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SmF2YVNjcmlwdEkxOE5BUElFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhU3RyZWFtRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRNZWRp
YVN0cmVhbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0R2V0VXNlck1lZGlhRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRNZWRpYVN0cmVhbUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6cGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFBlZXJDb25uZWN0aW9u
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0TGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZp
eGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRXZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0R2V0R2FtZXBhZHNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnF1b3RhRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRRdW90YUVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFTb3VyY2VFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU291cmNlRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjplbmNyeXB0
ZWRNZWRpYUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0RW5jcnlwdGVkTWVkaWFFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdFZpZGVvVHJhY2tFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93
RE9NRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjph
dXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjdXN0b21E
T01FbGVtZW50c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0Q3VzdG9tRE9NRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVEYXRl
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1
dFR5cGVEYXRlVGltZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0SW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldElucHV0VHlwZURh
dGVUaW1lTG9jYWxFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlucHV0VHlwZU1vbnRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVNb250aEVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlVGltZUVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5wdXRUeXBlVGltZUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRU
eXBlV2Vla0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0SW5wdXRUeXBlV2Vla0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6ZXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEV4
cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZWFtbGVzc0lGcmFtZXNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNz
SUZyYW1lc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6bGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNv
bnRyb2xVSUVuYWJsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDU1NQcm9wZXJ0eU5hbWVQcmVm
aXgpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3Bl
cnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZSk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0UnVudGltZUVuYWJsZUZ1bmN0
aW9uTmFtZSk6IEdlbmVyYXRlIHNpbmdsZXRvbiB2ZXJzaW9uIG9mCisgICAgICAgIGFjY2Vzc29y
cy4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2U6OmZvbnRMb2FkZWQpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpnZXRGb250RGF0YSk6IERpdHRvLgorICAgICAgICAqIGNz
cy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9y
OjphZGRGb250RmFjZVJ1bGUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzU2ltcGxlTGVuZ3RoUHJvcGVydHlJRCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRM
b2FkZWQpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6ZW5zdXJlU2NvcGVSZXNvbHZlcik6IERpdHRvLgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3Nz
UmVnaW9uc0VuYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjc3ND
b21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNob3VsZERp
c3BsYXlTZWFtbGVzc2x5V2l0aFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Z2V0Q2FjaGVkTG9jYWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290KTogRGl0dG8uCisgICAgICAgICogZG9t
L1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3NpdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmZpbmRQYXJlbnQpOgorICAgICAgICAq
IGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpnZXRTZWxl
Y3Rpb24pOiBEaXR0by4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHBy
aW50Q29uc3RydWN0b3JJbnRlcmlvcik6IEdlbmVyYXRlIHNpbmdsZXRvbiB2ZXJzaW9uIG9mIGFj
Y2Vzc29ycy4KKyAgICAgICAgKHByaW50V3JhcHBlckZ1bmN0aW9ucyk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50Ojppc1NwZWVjaEVuYWJsZWQpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFy
YW1ldGVycyk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVs
YXllZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9y
TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dyZXNzVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRp
ZEFkZEF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
cmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
dWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9u
c1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJl
VGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpzY29wZWRBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJX
aXRoU2NvcGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6c2Nv
cGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKToKKyAgICAgICAgKiBodG1sL0lucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKTog
RGl0dG8uCisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpleHBlcmltZW50YWxGZWF0dXJlc0Vu
YWJsZWQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Q
b3N0TGF5b3V0VGFza3MpOiBEaXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNr
dXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6
cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldFNoYWRv
d0RPTUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0QXV0
aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxTZXR0aW5nczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsU2V0dGluZ3M6OnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldENTU1NoYXBlc0VuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRy
b2xVSUVuYWJsZWQpOgorCiAyMDEzLTA5LTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTU2MzU1KSBMaW5rcyAvIGludGVyYWN0aXZl
IGVsZW1lbnRzIGluc2lkZSBuZXN0ZWQgdGFibGVzIGFyZSB1bmNsaWNrYWJsZQpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotLm9iamNfY2xhc3NfbmFt
ZV9ET01BYnN0cmFjdFZpZXcKK3ZvYmpjX2NsYXNzX25hbWVfRE9NQWJzdHJhY3RWaWV3CiAub2Jq
Y19jbGFzc19uYW1lX0RPTUNTU1N0eWxlRGVjbGFyYXRpb24KIC5vYmpjX2NsYXNzX25hbWVfRE9N
Q2hhcmFjdGVyRGF0YQogLm9iamNfY2xhc3NfbmFtZV9ET01Eb2N1bWVudApAQCAtNzM4LDEwICs3
MzgsNiBAQCBfX1pON1dlYkNvcmUyMXNldEdsb2JhbEljb25EYXRhYmFzZUVQTlNfCiBfX1pON1dl
YkNvcmUyMXNldFBsYXRmb3JtU3RyYXRlZ2llc0VQTlNfMThQbGF0Zm9ybVN0cmF0ZWdpZXNFCiBf
X1pON1dlYkNvcmUyMkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQyNHJlc3RhcnRTbmFwc2hvdHRlZFBs
dWdJbkV2CiBfX1pON1dlYkNvcmUyMkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQyOXNldElzUHJpbWFy
eVNuYXBzaG90dGVkUGx1Z0luRWIKLV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJl
czIzaXNDU1NDb21wb3NpdGluZ0VuYWJsZWRFCi1fX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMyMmlzQ1NTRXhjbHVzaW9uc0VuYWJsZWRFCi1fX1pON1dlYkNvcmUyMlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMxOGlzQ1NTU2hhcGVzRW5hYmxlZEUKLV9fWk43V2ViQ29yZTIyUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczQwaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxl
ZEUKIF9fWk43V2ViQ29yZTIyU2NyaXB0RXhlY3V0aW9uQ29udGV4dDI2Y2FuU3VzcGVuZEFjdGl2
ZURPTU9iamVjdHNFdgogX19aTjdXZWJDb3JlMjJTdG9yYWdlRXZlbnREaXNwYXRjaGVyMzRkaXNw
YXRjaExvY2FsU3RvcmFnZUV2ZW50c1RvRnJhbWVzRVJOU185UGFnZUdyb3VwRVJLTjNXVEY2VmVj
dG9ySU5TM182UmVmUHRySU5TXzVGcmFtZUVFRUxtMEVOUzNfMTVDcmFzaE9uT3ZlcmZsb3dFRUVS
S05TM182U3RyaW5nRVNFX1NFX1NFX1BOU18xNFNlY3VyaXR5T3JpZ2luRQogX19aTjdXZWJDb3Jl
MjJVUkxXaXRoVXNlclR5cGVkU3RyaW5nRVA4TlNTdHJpbmdQNU5TVVJMCkBAIC0yNjk1LDggKzI2
OTEsNiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjVzZXJ2aWNlU2NyaXB0ZWRBCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzMThpc1NoYWRvd0RPTUVuYWJsZWRFCi1fX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXMzN2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWRFCiBfX1pON1dl
YkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18x
MFNoYWRvd1Jvb3RFCiAjZW5kaWYKIApAQCAtMjc2NCwxOCArMjc1OCw2IEBAIF9fWk43V2ViQ29y
ZTRQYWdlMTFzZXRWaWV3TW9kZUVOUzBfOFZpZXcKIF9fWk43V2ViQ29yZTEyV29ya2VyVGhyZWFk
MTd3b3JrZXJUaHJlYWRDb3VudEV2CiAjZW5kaWYKIAotI2lmIEVOQUJMRShDU1NfUkVHSU9OUykK
LV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE5aXNDU1NSZWdpb25zRW5hYmxl
ZEUKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLV9fWk43V2ViQ29yZTIy
UnVudGltZUVuYWJsZWRGZWF0dXJlczI1YXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZEUKLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotX19aTjdXZWJDb3Jl
MjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMzJpc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZEUKLSNlbmRpZgotCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQV9WMikKIF9fWk43V2ViQ29y
ZTNDRE0xOHJlZ2lzdGVyQ0RNRmFjdG9yeUVQRk4zV1RGMTBQYXNzT3duUHRySU5TXzE5Q0RNUHJp
dmF0ZUludGVyZmFjZUVFRVBTMF9FUEZiUktOUzFfNlN0cmluZ0VFUEZiU0FfU0FfRQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVh
dHVyZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMv
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzUsNiArMzYsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCiAjaW5jbHVk
ZSAiU2hhcmVkV29ya2VyUmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2lu
Y2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQog
I2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgpAQCAtNDIsMjAxICs0NCwxODkgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzTG9jYWxT
dG9yYWdlRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzU2Vz
c2lvblN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGZhbHNlOwotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQgPSB0cnVlOwotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0dlb2xvY2F0aW9uRW5hYmxlZCA9IHRydWU7Ci1i
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5kZXhlZERCRW5hYmxlZCA9IGZhbHNlOwot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1RvdWNoRW5hYmxlZCA9IHRydWU7Ci1ib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2aWNlTW90aW9uRW5hYmxlZCA9IHRydWU7Ci1i
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkID0g
dHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNTcGVlY2hJbnB1dEVuYWJsZWQg
PSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0NhbnZhc1BhdGhFbmFibGVk
ID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzQ1NTRXhjbHVzaW9uc0Vu
YWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0NTU1NoYXBlc0Vu
YWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0NTU1JlZ2lvbnNF
bmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzQ1NTQ29tcG9z
aXRpbmdFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzTGFu
Z0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBmYWxzZTsKLQorUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6UnVudGltZUVuYWJsZWRGZWF0dXJlcygpCisgICAgOiBtX2lzTG9jYWxT
dG9yYWdlRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCh0cnVl
KQorICAgICwgbV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKGZhbHNlKQorICAgICwgbV9p
c0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKHRydWUpCisgICAgLCBtX2lzRGF0YVRyYW5zZmVySXRl
bXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzR2VvbG9jYXRpb25FbmFibGVkKHRydWUpCisgICAg
LCBtX2lzSW5kZXhlZERCRW5hYmxlZChmYWxzZSkKKyAgICAsIG1faXNUb3VjaEVuYWJsZWQodHJ1
ZSkKKyAgICAsIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkKHRydWUpCisgICAgLCBtX2lzRGV2aWNl
T3JpZW50YXRpb25FbmFibGVkKHRydWUpCisgICAgLCBtX2lzU3BlZWNoSW5wdXRFbmFibGVkKHRy
dWUpCisgICAgLCBtX2lzQ2FudmFzUGF0aEVuYWJsZWQoZmFsc2UpCisgICAgLCBtX2lzQ1NTRXhj
bHVzaW9uc0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNDU1NTaGFwZXNFbmFibGVkKHRydWUpCisg
ICAgLCBtX2lzQ1NTUmVnaW9uc0VuYWJsZWQoZmFsc2UpCisgICAgLCBtX2lzQ1NTQ29tcG9zaXRp
bmdFbmFibGVkKGZhbHNlKQorICAgICwgbV9pc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9s
VUlFbmFibGVkKGZhbHNlKQogI2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCi1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkID0gZmFsc2U7CisgICAg
LCBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkKGZhbHNlKQogI2VuZGlmCi0KICNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc01lZGlhU3RyZWFt
RW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzUGVlckNvbm5l
Y3Rpb25FbmFibGVkID0gdHJ1ZTsKKyAgICAsIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQodHJ1ZSkK
KyAgICAsIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQodHJ1ZSkKICNlbmRpZgotCiAjaWYgRU5B
QkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGZhbHNlOworICAgICwgbV9p
c0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChmYWxzZSkKICNlbmRpZgotCiAjaWYgRU5B
QkxFKEdBTUVQQUQpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzR2FtZXBhZEVuYWJs
ZWQgPSBmYWxzZTsKKyAgICAsIG1faXNHYW1lcGFkRW5hYmxlZChmYWxzZSkKICNlbmRpZgotCiAj
aWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0Zp
bGVTeXN0ZW1FbmFibGVkID0gZmFsc2U7CisgICAgLCBtX2lzRmlsZVN5c3RlbUVuYWJsZWQoZmFs
c2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9JMThOX0FQSSkKKyAgICAsIG1faXNK
YXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoUVVPVEEp
CisgICAgLCBtX2lzUXVvdGFFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgICwgbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkKHRydWUpCisjZW5kaWYK
KyNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQorICAgICwgbV9pc01lZGlhU291cmNlRW5hYmxlZChm
YWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFURk9STShCTEFDS0JFUlJZ
KSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQorICAgICwgbV9pc1ZpZGVvVHJhY2tF
bmFibGVkKHRydWUpCisjZWxzZQorICAgICwgbV9pc1ZpZGVvVHJhY2tFbmFibGVkKGZhbHNlKQor
I2VuZGlmCisjZW5kaWYKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorICAgICwgbV9pc0Vu
Y3J5cHRlZE1lZGlhRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShTSEFET1dfRE9N
KQorICAgICwgbV9pc1NoYWRvd0RPTUVuYWJsZWQoZmFsc2UpCisgICAgLCBtX2lzQXV0aG9yU2hh
ZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoQ1VT
VE9NX0VMRU1FTlRTKQorICAgICwgbV9pc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZChmYWxzZSkK
KyNlbmRpZgorI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCisgICAgLCBtX2lzU3R5bGVTY29wZWRF
bmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURSkKKyAgICAs
IG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZCh0cnVlKQorI2VuZGlmCisjaWYgRU5BQkxFKElOUFVU
X1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKKyAgICAsIG1faXNJbnB1dFR5cGVEYXRlVGltZUVu
YWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FM
KQorICAgICwgbV9pc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKHRydWUpCisjZW5kaWYK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKKyAgICAsIG1faXNJbnB1dFR5cGVNb250aEVu
YWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCisgICAgLCBt
X2lzSW5wdXRUeXBlVGltZUVuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9U
WVBFX1dFRUspCisgICAgLCBtX2lzSW5wdXRUeXBlV2Vla0VuYWJsZWQodHJ1ZSkKKyNlbmRpZgor
I2lmIEVOQUJMRShDU1BfTkVYVCkKKyAgICAsIG1fYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxFKElGUkFN
RV9TRUFNTEVTUykKKyAgICAsIG1fYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZChmYWxzZSkKKyNl
bmRpZgorI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQorICAgICwgbV9pc0ZvbnRMb2FkRXZl
bnRzRW5hYmxlZChmYWxzZSkKKyNlbmRpZgoreworfQorCitSdW50aW1lRW5hYmxlZEZlYXR1cmVz
JiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+IHJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM7CiAKKyAgICByZXR1cm4gcnVudGltZUVuYWJsZWRGZWF0dXJlczsKK30KKworI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZmlsZVN5c3Rl
bUVuYWJsZWQoKQogewotICAgIHJldHVybiBpc0ZpbGVTeXN0ZW1FbmFibGVkICYmIEFzeW5jRmls
ZVN5c3RlbTo6aXNBdmFpbGFibGUoKTsKKyAgICByZXR1cm4gbV9pc0ZpbGVTeXN0ZW1FbmFibGVk
ICYmIEFzeW5jRmlsZVN5c3RlbTo6aXNBdmFpbGFibGUoKTsKIH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omlz
SmF2YVNjcmlwdEkxOE5BUElFbmFibGVkID0gZmFsc2U7Ci0KIGJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6amF2YVNjcmlwdEkxOE5BUElFbmFibGVkKCkKIHsKLSAgICByZXR1cm4gaXNKYXZh
U2NyaXB0STE4TkFQSUVuYWJsZWQ7CisgICAgcmV0dXJuIG1faXNKYXZhU2NyaXB0STE4TkFQSUVu
YWJsZWQ7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFTykKLQotYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjphdWRpb0VuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjphdWRpb0VuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFp
bGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sTWVkaWFFbGVt
ZW50RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxNZWRpYUVsZW1l
bnRFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxl
KCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVu
YWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sQXVkaW9FbGVtZW50RW5h
YmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwog
fQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxWaWRlb0VsZW1lbnRFbmFibGVk
KCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQo
KSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNlRWxlbWVudEVuYWJsZWQoKQor
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sU291cmNlRWxlbWVudEVuYWJsZWQoKSBj
b25zdAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUNvbnRyb2xsZXJFbmFibGVkKCkKK2Jvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJyb3JFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6bWVkaWFFcnJvckVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRp
YVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp0aW1lUmFuZ2VzRW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnRpbWVS
YW5nZXNFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxh
YmxlKCk7CiB9Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQotYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRXb3JrZXJFbmFibGVkKCkKK2Jvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIFNoYXJlZFdvcmtlclJlcG9zaXRvcnk6OmlzQXZhaWxhYmxlKCk7CiB9CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShXRUJfU09DS0VUUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Vi
U29ja2V0RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYlNvY2tldEVu
YWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBXZWJTb2NrZXQ6OmlzQXZhaWxhYmxlKCk7CiB9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi1ib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpvcGVuRGF0YWJhc2VFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gRGF0YWJhc2VN
YW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Om9wZW5EYXRhYmFzZVN5bmNFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4g
RGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaXNBdmFpbGFibGUoKTsKIH0KICNlbmRpZgogCi0j
aWYgRU5BQkxFKFFVT1RBKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1F1b3RhRW5h
YmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi1ib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRnVsbFNjcmVlbkFQSUVuYWJsZWQgPSB0cnVlOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotYm9vbCBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppc01lZGlhU291cmNlRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oV0lOKSB8fCBQ
TEFURk9STShRVCkKLSAgICBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzVmlkZW9UcmFj
a0VuYWJsZWQgPSB0cnVlOwotI2Vsc2UKLSAgICBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmlzVmlkZW9UcmFja0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoRU5DUllQVEVEX01FRElBKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0VuY3J5
cHRlZE1lZGlhRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU0hBRE9XX0RP
TSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNTaGFkb3dET01FbmFibGVkID0gZmFs
c2U7Ci0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNBdXRob3JTaGFkb3dET01Gb3JB
bnlFbGVtZW50RW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ1VTVE9NX0VM
RU1FTlRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0N1c3RvbURPTUVsZW1lbnRz
RW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1N0eWxlU2NvcGVkRW5hYmxlZCA9IGZhbHNlOwot
I2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQotYm9vbCBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjppc0lucHV0VHlwZURhdGVFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYg
RU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKLWJvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLWJvb2wgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCA9IHRydWU7Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX01PTlRIKQotYm9vbCBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVO
QUJMRShJTlBVVF9UWVBFX1RJTUUpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5w
dXRUeXBlVGltZUVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9XRUVLKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZVdlZWtFbmFi
bGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENTUF9ORVhUKQotYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjphcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0
dXJlc0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVT
UykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxl
ZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNGb250TG9hZEV2ZW50c0VuYWJsZWQgPSBmYWxzZTsK
LSNlbmRpZgotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaAko
cmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAKICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTMyLDYgKzMzLDcgQEAKICNkZWZp
bmUgUnVudGltZUVuYWJsZWRGZWF0dXJlc19oCiAKICNpbmNsdWRlICJQbGF0Zm9ybUV4cG9ydE1h
Y3Jvcy5oIgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTQwLDM3MSArNDIsMzgxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIGdl
bmVyYXRpb24gdG8gd29yayBwcm9wZXJseS4KIAogY2xhc3MgUnVudGltZUVuYWJsZWRGZWF0dXJl
cyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUnVudGltZUVuYWJsZWRGZWF0dXJlcyk7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBpc0xvY2FsU3RvcmFnZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
Ym9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkKCkgeyByZXR1cm4gaXNMb2NhbFN0b3JhZ2VFbmFibGVk
OyB9CisgICAgdm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1f
aXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBsb2NhbFN0b3Jh
Z2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xvY2FsU3RvcmFnZUVuYWJsZWQ7IH0KIAot
ICAgIHN0YXRpYyB2b2lkIHNldFNlc3Npb25TdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IHNlc3Npb25TdG9yYWdlRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVk
OyB9CisgICAgdm9pZCBzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
bV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc2Vzc2lv
blN0b3JhZ2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1Nlc3Npb25TdG9yYWdlRW5hYmxl
ZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0V2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIHdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKCkgeyByZXR1cm4g
aXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0V2Via2l0Tm90aWZp
Y2F0aW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNF
bmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXROb3RpZmljYXRpb25zRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsgfQogCi0g
ICAgc3RhdGljIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIGFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkgeyByZXR1cm4gaXNBcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZUVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAg
Ym9vbCBhcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0RGF0YVRyYW5zZmVySXRl
bXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0g
aXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKCkg
eyByZXR1cm4gaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldERhdGFU
cmFuc2Zlckl0ZW1zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRGF0YVRyYW5zZmVySXRl
bXNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBkYXRhVHJhbnNmZXJJdGVtc0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkOyB9CiAKLSAg
ICBzdGF0aWMgdm9pZCBzZXRHZW9sb2NhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNH
ZW9sb2NhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBnZW9sb2Nh
dGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0dlb2xvY2F0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQg
c2V0R2VvbG9jYXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNHZW9sb2NhdGlvbkVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGdlb2xvY2F0aW9uRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNHZW9sb2NhdGlvbkVuYWJsZWQ7IH0KIAotICAgIHN0YXRpYyB2b2lkIHNl
dFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbmRleGVkREJFbmFi
bGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0SW5kZXhlZERCRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzSW5kZXhlZERCRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGluZGV4
ZWREQkVuYWJsZWQoKSB7IHJldHVybiBpc0luZGV4ZWREQkVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dFdlYmtpdEluZGV4ZWREQkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0luZGV4ZWREQkVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEluZGV4ZWREQkVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzSW5kZXhlZERCRW5hYmxlZDsgfQorICAgIGJvb2wgaW5kZXhlZERC
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbmRleGVkREJFbmFibGVkOyB9CiAKICNpZiBF
TkFCTEUoQ0FOVkFTX1BBVEgpCi0gICAgc3RhdGljIHZvaWQgc2V0Q2FudmFzUGF0aEVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNDYW52YXNQYXRoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAg
IHN0YXRpYyBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkgeyByZXR1cm4gaXNDYW52YXNQYXRoRW5h
YmxlZDsgfQorICAgIHZvaWQgc2V0Q2FudmFzUGF0aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
bV9pc0NhbnZhc1BhdGhFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBjYW52YXNQYXRo
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDYW52YXNQYXRoRW5hYmxlZDsgfQogI2Vsc2UK
LSAgICBzdGF0aWMgdm9pZCBzZXRDYW52YXNQYXRoRW5hYmxlZChib29sKSB7IH0KLSAgICBzdGF0
aWMgYm9vbCBjYW52YXNQYXRoRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBz
ZXRDYW52YXNQYXRoRW5hYmxlZChib29sKSB7IH0KKyAgICBib29sIGNhbnZhc1BhdGhFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19FWENM
VVNJT05TKQotICAgIHN0YXRpYyB2b2lkIHNldENTU0V4Y2x1c2lvbnNFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IGlzQ1NTRXhjbHVzaW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgYm9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIHsgcmV0dXJuIGlzQ1NTRXhjbHVzaW9uc0Vu
YWJsZWQ7IH0KKyAgICB2b2lkIHNldENTU0V4Y2x1c2lvbnNFbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IG1faXNDU1NFeGNsdXNpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgY3Nz
RXhjbHVzaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJs
ZWQ7IH0KICNlbHNlCi0gICAgc3RhdGljIHZvaWQgc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQoYm9v
bCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQoYm9vbCkgeyB9CisgICAg
Ym9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIHN0YXRpYyB2b2lkIHNldENTU1NoYXBl
c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NTaGFwZXNFbmFibGVkID0gaXNFbmFibGVk
OyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIHsgcmV0dXJuIGlzQ1NTU2hh
cGVzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTU2hhcGVzRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBtX2lzQ1NTU2hhcGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgY3NzU2hh
cGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDU1NTaGFwZXNFbmFibGVkOyB9CiAjZWxz
ZQotICAgIHN0YXRpYyB2b2lkIHNldENTU1NoYXBlc0VuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3Rh
dGljIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBz
ZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzU2hhcGVzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfUkVHSU9O
UykKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBpc0NTU1JlZ2lvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgY3Nz
UmVnaW9uc0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU1JlZ2lvbnNFbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQ1NTUmVnaW9uc0Vu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NTU1JlZ2lvbnNFbmFibGVkOyB9CiAjZWxzZQotICAgIHN0YXRpYyB2b2lk
IHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wpIHsgfQotICAgIHN0YXRpYyBib29sIGNzc1JlZ2lv
bnNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldENTU1JlZ2lvbnNFbmFi
bGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NDb21wb3NpdGluZ0Vu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NDb21wb3NpdGluZ0VuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NDb21wb3NpdGluZ0VuYWJsZWQoKSB7IHJldHVybiBp
c0NTU0NvbXBvc2l0aW5nRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTQ29tcG9zaXRpbmdFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NDb21wb3NpdGluZ0VuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KKyAgICBib29sIGNzc0NvbXBvc2l0aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDU1NDb21wb3NpdGluZ0VuYWJsZWQ7IH0KIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRT
KQotICAgIHN0YXRpYyB2b2lkIHNldEZvbnRMb2FkRXZlbnRzRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIHsgcmV0dXJuIGlzRm9udExvYWRFdmVudHNFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZm9u
dExvYWRFdmVudHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZvbnRMb2FkRXZlbnRzRW5h
YmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQo
Ym9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgZm9udExvYWRFdmVudHNFbmFibGVkKCkgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldEZvbnRMb2FkRXZlbnRzRW5hYmxlZChib29sKSB7IH0K
KyAgICBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICAvLyBNb3ppbGxhIHZlcnNpb24K
LSAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZCgpIHsgcmV0dXJuIGlz
RnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRGdWxsU2Ny
ZWVuQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0Z1bGxTY3JlZW5BUElFbmFibGVkID0g
aXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5FbmFi
bGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IHdlYmtpdElzRnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFi
bGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRBbGxv
d2VkRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgYm9vbCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVkKCkgeyByZXR1cm4g
aXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdENhbmNlbEZ1
bGxTY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAg
IGJvb2wgd2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVs
bFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdEZ1bGxTY3JlZW5BUElFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRJc0Z1bGxT
Y3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9
CisgICAgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWRFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1
bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQogCiAgICAg
Ly8gVzNDIHZlcnNpb24KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVu
YWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJv
b2wgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVu
QVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3
ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElF
bmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEZ1
bGxzY3JlZW5FbGVtZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJ
RW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RXhpdEZ1bGxzY3JlZW5FbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRSZXF1
ZXN0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVu
YWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHN0YXRpYyBib29sIGF1
ZGlvRW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIGh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCk7
Ci0gICAgc3RhdGljIGJvb2wgaHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQoKTsKLSAgICBzdGF0aWMg
Ym9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIGh0bWxTb3Vy
Y2VFbGVtZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIG1lZGlhQ29udHJvbGxlckVuYWJs
ZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBtZWRpYUVycm9yRW5hYmxlZCgpOwotICAgIHN0YXRpYyBi
b29sIHRpbWVSYW5nZXNFbmFibGVkKCk7CisgICAgYm9vbCBhdWRpb0VuYWJsZWQoKSBjb25zdDsK
KyAgICBib29sIGh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBodG1s
QXVkaW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgaHRtbFZpZGVvRWxlbWVudEVu
YWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpIGNvbnN0
OworICAgIGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgbWVk
aWFFcnJvckVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIHRpbWVSYW5nZXNFbmFibGVkKCkgY29u
c3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLSAgICBzdGF0aWMgYm9v
bCBzaGFyZWRXb3JrZXJFbmFibGVkKCk7CisgICAgYm9vbCBzaGFyZWRXb3JrZXJFbmFibGVkKCkg
Y29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKLSAgICBzdGF0aWMgYm9v
bCB3ZWJTb2NrZXRFbmFibGVkKCk7CisgICAgYm9vbCB3ZWJTb2NrZXRFbmFibGVkKCkgY29uc3Q7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCi0gICAgc3RhdGljIGJvb2wgb3Bl
bkRhdGFiYXNlRW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIG9wZW5EYXRhYmFzZVN5bmNFbmFi
bGVkKCk7CisgICAgYm9vbCBvcGVuRGF0YWJhc2VFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBv
cGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9V
Q0hfRVZFTlRTKQotICAgIHN0YXRpYyBib29sIHRvdWNoRW5hYmxlZCgpIHsgcmV0dXJuIGlzVG91
Y2hFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0VG91Y2hFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IGlzVG91Y2hFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB0b3VjaEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzVG91Y2hFbmFibGVkOyB9CisgICAgdm9pZCBzZXRUb3Vj
aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1RvdWNoRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQogI2VuZGlmCiAKLSAgICBzdGF0aWMgdm9pZCBzZXREZXZpY2VNb3Rpb25FbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGlzRGV2aWNlTW90aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIGRldmljZU1vdGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1vdGlvbkVu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBkZXZpY2VNb3Rpb25FdmVudEVuYWJsZWQoKSB7IHJl
dHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBvbmRldmljZW1v
dGlvbkVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KLQotICAgIHN0
YXRpYyB2b2lkIHNldERldmljZU9yaWVudGF0aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzRGV2aWNlT3JpZW50YXRpb25F
bmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNlT3JpZW50YXRpb25FdmVudEVuYWJsZWQo
KSB7IHJldHVybiBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IG9uZGV2aWNlb3JpZW50YXRpb25FbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VPcmllbnRhdGlv
bkVuYWJsZWQ7IH0KLQotICAgIHN0YXRpYyB2b2lkIHNldFNwZWVjaElucHV0RW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBpc1NwZWVjaElucHV0RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIHNwZWVjaElucHV0RW5hYmxlZCgpIHsgcmV0dXJuIGlzU3BlZWNoSW5wdXRFbmFi
bGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoRW5hYmxlZCgpIHsgcmV0dXJuIGlz
U3BlZWNoSW5wdXRFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0R3JhbW1hckVuYWJs
ZWQoKSB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RGV2aWNl
TW90aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRGV2aWNlTW90aW9uRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZGV2aWNlTW90aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9CisgICAgYm9vbCBkZXZpY2VNb3Rpb25FdmVu
dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQorICAg
IGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldmljZU1v
dGlvbkVuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0RGV2aWNlT3JpZW50YXRpb25FbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KKyAgICBib29sIGRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KKyAgICBib29sIGRldmljZU9yaWVudGF0aW9u
RXZlbnRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldmljZU9yaWVudGF0aW9uRW5hYmxl
ZDsgfQorICAgIGJvb2wgb25kZXZpY2VvcmllbnRhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9CisKKyAgICB2b2lkIHNldFNwZWVjaElu
cHV0RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzU3BlZWNoSW5wdXRFbmFibGVkID0gaXNF
bmFibGVkOyB9CisgICAgYm9vbCBzcGVlY2hJbnB1dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU3BlZWNoSW5wdXRFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1NwZWVjaElucHV0RW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0
R3JhbW1hckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3BlZWNoSW5wdXRFbmFibGVkOyB9
CiAKICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQotICAgIHN0YXRpYyB2b2lkIHNldFNjcmlw
dGVkU3BlZWNoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1NjcmlwdGVkU3BlZWNoRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHNjcmlwdGVkU3BlZWNoRW5hYmxlZCgp
IHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Vi
a2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRlZFNwZWVjaEVu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbkVycm9yRW5h
YmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJv
b2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FdmVudEVuYWJsZWQoKSB7IHJldHVybiBpc1Njcmlw
dGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFNwZWVjaEdyYW1tYXJF
bmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
Ym9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJsZWQoKSB7IHJldHVybiBpc1NjcmlwdGVk
U3BlZWNoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2NyaXB0ZWRTcGVlY2hFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAg
ICBib29sIHNjcmlwdGVkU3BlZWNoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRl
ZFNwZWVjaEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAgICBib29s
IHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRXJyb3JFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9p
c1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRp
b25FdmVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVk
OyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaEdyYW1t
YXJMaXN0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7
IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIHN0YXRpYyBib29sIGZp
bGVTeXN0ZW1FbmFibGVkKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0RmlsZVN5c3RlbUVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNGaWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAg
IGJvb2wgZmlsZVN5c3RlbUVuYWJsZWQoKSBjb25zdDsKKyAgICB2b2lkIHNldEZpbGVTeXN0ZW1F
bmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGaWxlU3lzdGVtRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9JMThOX0FQSSkKLSAgICBzdGF0
aWMgYm9vbCBqYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoKTsKLSAgICBzdGF0aWMgdm9pZCBzZXRK
YXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNKYXZhU2NyaXB0STE4
TkFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGphdmFTY3JpcHRJMThOQVBJRW5h
YmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0SmF2YVNjcmlwdEkxOE5BUElFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBzdGF0aWMgYm9vbCBtZWRp
YVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQotICAgIHN0
YXRpYyB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc01lZGlh
U3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdEdldFVz
ZXJNZWRpYUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIHdlYmtpdE1lZGlhU3RyZWFtRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJl
YW1FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgYm9vbCBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSB7
IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZCAmJiBpc1BlZXJDb25uZWN0aW9uRW5hYmxlZDsg
fQotICAgIHN0YXRpYyB2b2lkIHNldFBlZXJDb25uZWN0aW9uRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc1BlZXJDb25uZWN0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIHBlZXJDb25uZWN0
aW9uRW5hYmxlZCgpOyB9CisgICAgYm9vbCBtZWRpYVN0cmVhbUVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzTWVkaWFTdHJlYW1FbmFibGVkOyB9CisgICAgdm9pZCBzZXRNZWRpYVN0cmVhbUVu
YWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc01lZGlhU3RyZWFtRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIGJvb2wgd2Via2l0R2V0VXNlck1lZGlhRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdE1lZGlhU3RyZWFtRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KKworICAgIGJv
b2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lZGlhU3RyZWFt
RW5hYmxlZCAmJiBtX2lzUGVlckNvbm5lY3Rpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRQZWVy
Q29ubmVjdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1BlZXJDb25uZWN0aW9uRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0UlRDUGVlckNvbm5lY3Rpb25FbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gcGVlckNvbm5lY3Rpb25FbmFibGVkKCk7IH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotICAgIHN0YXRpYyB2b2lk
IHNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0xl
Z2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIGxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpIHsgcmV0dXJuIGlzTGVnYWN5Q1NT
VmVuZG9yUHJlZml4ZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRMZWdhY3lDU1NWZW5kb3JQcmVm
aXhlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVz
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgbGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBzdGF0aWMgdm9pZCBzZXRX
ZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNHYW1lcGFkRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdEdldEdhbWVwYWRzRW5hYmxl
ZCgpIHsgcmV0dXJuIGlzR2FtZXBhZEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdEdldEdh
bWVwYWRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzR2FtZXBhZEVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEdldEdhbWVwYWRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNHYW1lcGFkRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoUVVPVEEpCi0g
ICAgc3RhdGljIGJvb2wgcXVvdGFFbmFibGVkKCkgeyByZXR1cm4gaXNRdW90YUVuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgdm9pZCBzZXRRdW90YUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNRdW90
YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHF1b3RhRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNRdW90YUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFF1b3RhRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzUXVvdGFFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgc3RhdGljIGJvb2wgbWVkaWFTb3VyY2VFbmFi
bGVkKCkgeyByZXR1cm4gaXNNZWRpYVNvdXJjZUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRNZWRpYVNvdXJjZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVNvdXJjZUVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIG1lZGlhU291cmNlRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNNZWRpYVNvdXJjZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldE1lZGlhU291cmNl
RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTWVkaWFTb3VyY2VFbmFibGVkID0gaXNFbmFi
bGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAgc3RhdGlj
IGJvb2wgZW5jcnlwdGVkTWVkaWFFbmFibGVkKCkgeyByZXR1cm4gaXNFbmNyeXB0ZWRNZWRpYUVu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRFbmNyeXB0ZWRNZWRpYUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBi
b29sIGVuY3J5cHRlZE1lZGlhRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNFbmNyeXB0ZWRN
ZWRpYUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEVuY3J5cHRlZE1lZGlhRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBtX2lzRW5jcnlwdGVkTWVkaWFFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpIHsgcmV0dXJuIGlzVmlkZW9UcmFja0VuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgdm9pZCBzZXRXZWJraXRWaWRlb1RyYWNrRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1Zp
ZGVvVHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNWaWRlb1RyYWNrRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0V2Via2l0VmlkZW9UcmFja0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1ZpZGVv
VHJhY2tFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTSEFET1df
RE9NKQotICAgIHN0YXRpYyBib29sIHNoYWRvd0RPTUVuYWJsZWQoKSB7IHJldHVybiBpc1NoYWRv
d0RPTUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTaGFkb3dET01FbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGlzU2hhZG93RE9NRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wg
c2hhZG93RE9NRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaGFkb3dET01FbmFibGVkOyB9
CisgICAgdm9pZCBzZXRTaGFkb3dET01FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNTaGFk
b3dET01FbmFibGVkID0gaXNFbmFibGVkOyB9CiAKLSAgICBzdGF0aWMgYm9vbCBhdXRob3JTaGFk
b3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlzQXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRBdXRob3JTaGFkb3dET01G
b3JBbnlFbGVtZW50RW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0F1dGhvclNoYWRvd0RPTUZv
ckFueUVsZW1lbnRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBhdXRob3JTaGFkb3dE
T01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRob3JTaGFkb3dE
T01Gb3JBbnlFbGVtZW50RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0QXV0aG9yU2hhZG93RE9NRm9y
QW55RWxlbWVudEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0F1dGhvclNoYWRvd0RPTUZv
ckFueUVsZW1lbnRFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShD
VVNUT01fRUxFTUVOVFMpCi0gICAgc3RhdGljIGJvb2wgY3VzdG9tRE9NRWxlbWVudHNFbmFibGVk
KCkgeyByZXR1cm4gaXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9p
ZCBzZXRDdXN0b21ET01FbGVtZW50cyhib29sIGlzRW5hYmxlZCkgeyBpc0N1c3RvbURPTUVsZW1l
bnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgY3VzdG9tRE9NRWxlbWVudHNFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZDsgfQorICAg
IHZvaWQgc2V0Q3VzdG9tRE9NRWxlbWVudHMoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0N1c3RvbURP
TUVsZW1lbnRzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1RZ
TEVfU0NPUEVEKQotICAgIHN0YXRpYyBib29sIHN0eWxlU2NvcGVkRW5hYmxlZCgpIHsgcmV0dXJu
IGlzU3R5bGVTY29wZWRFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0U3R5bGVTY29wZWRF
bmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU3R5bGVTY29wZWRFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCBzdHlsZVNjb3BlZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU3R5
bGVTY29wZWRFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgbV9pc1N0eWxlU2NvcGVkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlw
ZURhdGVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVEYXRlRW5hYmxlZDsgfQotICAgIHN0
YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5w
dXRUeXBlRGF0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGlucHV0VHlwZURhdGVF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZURhdGVFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRJbnB1dFR5cGVEYXRlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRU
eXBlRGF0ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRl
VGltZUVuYWJsZWQoKSB7IHJldHVybiBpc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsgfQotICAg
IHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVUaW1lRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBpc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaW5w
dXRUeXBlRGF0ZVRpbWVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZURhdGVU
aW1lRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBzdGF0
aWMgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5wdXRU
eXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRJbnB1dFR5cGVE
YXRlVGltZUxvY2FsRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZURhdGVUaW1l
TG9jYWxFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUxv
Y2FsRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5h
YmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkID0gaXNFbmFibGVk
OyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX01PTlRIKQotICAgIHN0YXRpYyBi
b29sIGlucHV0VHlwZU1vbnRoRW5hYmxlZCgpIHsgcmV0dXJuIGlzSW5wdXRUeXBlTW9udGhFbmFi
bGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5wdXRUeXBlTW9udGhFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IGlzSW5wdXRUeXBlTW9udGhFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9v
bCBpbnB1dFR5cGVNb250aEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRUeXBlTW9u
dGhFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVNb250aEVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlw
ZVRpbWVFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsgfQotICAgIHN0
YXRpYyB2b2lkIHNldElucHV0VHlwZVRpbWVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5w
dXRUeXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGlucHV0VHlwZVRpbWVF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZVRpbWVFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRJbnB1dFR5cGVUaW1lRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRU
eXBlVGltZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfV0VFSykKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVXZWVrRW5hYmxlZCgpIHsgcmV0
dXJuIGlzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRJbnB1dFR5
cGVXZWVrRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZVdlZWtFbmFibGVkID0g
aXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVXZWVrRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJbnB1dFR5cGVXZWVrRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlV2Vl
a0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZVdlZWtFbmFibGVkID0gaXNF
bmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1BfTkVYVCkKLSAgICBzdGF0aWMgYm9v
bCBleHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoKSB7IHJl
dHVybiBhcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQ7
IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lG
ZWF0dXJlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgYXJlRXhwZXJpbWVudGFsQ29udGVudFNl
Y3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBleHBl
cmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxl
ZDsgfQorICAgIHZvaWQgc2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVy
ZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgc3RhdGljIGJvb2wgc2VhbWxlc3NJRnJhbWVzRW5h
YmxlZCgpIHsgcmV0dXJuIGFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
dm9pZCBzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGFyZVNlYW1s
ZXNzSUZyYW1lc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHNlYW1sZXNzSUZyYW1l
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9h
cmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAotICAgIHN0
YXRpYyBib29sIGxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkgeyByZXR1
cm4gaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZDsgfQorICAgIGJvb2wg
bGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7IH0KICAgICAvLyBUaGUg
bGFuZyBhdHRyaWJ1dGUgc3VwcG9ydCBpcyBpbmNvbXBsZXRlIGFuZCBzaG91bGQgb25seSBiZSB0
dXJuZWQgb24gZm9yIHRlc3RzLgotICAgIHN0YXRpYyB2b2lkIHNldExhbmdBdHRyaWJ1dGVBd2Fy
ZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldExhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNM
YW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorCisg
ICAgc3RhdGljIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMmIHNoYXJlZEZlYXR1cmVzKCk7CiAKIHBy
aXZhdGU6CiAgICAgLy8gTmV2ZXIgaW5zdGFudGlhdGUuCi0gICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlcygpIHsgfQorICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKTsKIAotICAgIHN0YXRpYyBi
b29sIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1Nlc3Npb25TdG9y
YWdlRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVk
OwotICAgIHN0YXRpYyBib29sIGlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7Ci0gICAgc3RhdGlj
IGJvb2wgaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNHZW9s
b2NhdGlvbkVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNJbmRleGVkREJFbmFibGVkOwotICAg
IHN0YXRpYyBib29sIGlzVG91Y2hFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzRGV2aWNlTW90
aW9uRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsK
LSAgICBzdGF0aWMgYm9vbCBpc1NwZWVjaElucHV0RW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBp
c0NhbnZhc1BhdGhFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzQ1NTRXhjbHVzaW9uc0VuYWJs
ZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNDU1NTaGFwZXNFbmFibGVkOwotICAgIHN0YXRpYyBib29s
IGlzQ1NTUmVnaW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNDU1NDb21wb3NpdGluZ0Vu
YWJsZWQ7Ci0gICAgV0VCQ09SRV9URVNUSU5HIHN0YXRpYyBib29sIGlzTGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzTG9jYWxTdG9yYWdlRW5hYmxl
ZDsKKyAgICBib29sIG1faXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzV2Vi
a2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQ7CisgICAgYm9vbCBtX2lzRGF0YVRyYW5zZmVySXRlbXNFbmFibGVkOworICAgIGJvb2wg
bV9pc0dlb2xvY2F0aW9uRW5hYmxlZDsKKyAgICBib29sIG1faXNJbmRleGVkREJFbmFibGVkOwor
ICAgIGJvb2wgbV9pc1RvdWNoRW5hYmxlZDsKKyAgICBib29sIG1faXNEZXZpY2VNb3Rpb25FbmFi
bGVkOworICAgIGJvb2wgbV9pc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsKKyAgICBib29sIG1f
aXNTcGVlY2hJbnB1dEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzQ2FudmFzUGF0aEVuYWJsZWQ7Cisg
ICAgYm9vbCBtX2lzQ1NTRXhjbHVzaW9uc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzQ1NTU2hhcGVz
RW5hYmxlZDsKKyAgICBib29sIG1faXNDU1NSZWdpb25zRW5hYmxlZDsKKyAgICBib29sIG1faXND
U1NDb21wb3NpdGluZ0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9y
bUNvbnRyb2xVSUVuYWJsZWQ7CiAjaWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKLSAgICBzdGF0
aWMgYm9vbCBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsKKyAgICBib29sIG1faXNTY3JpcHRlZFNw
ZWVjaEVuYWJsZWQ7CiAjZW5kaWYKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgc3RhdGlj
IGJvb2wgaXNGaWxlU3lzdGVtRW5hYmxlZDsKKyAgICBib29sIG1faXNGaWxlU3lzdGVtRW5hYmxl
ZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCi0gICAgc3RhdGlj
IGJvb2wgaXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzSmF2YVNjcmlw
dEkxOE5BUElFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAg
IHN0YXRpYyBib29sIGlzTWVkaWFTdHJlYW1FbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzUGVl
ckNvbm5lY3Rpb25FbmFibGVkOworICAgIGJvb2wgbV9pc01lZGlhU3RyZWFtRW5hYmxlZDsKKyAg
ICBib29sIG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShH
QU1FUEFEKQotICAgIHN0YXRpYyBib29sIGlzR2FtZXBhZEVuYWJsZWQ7CisgICAgYm9vbCBtX2lz
R2FtZXBhZEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9Q
UkVGSVhFUykKLSAgICBzdGF0aWMgYm9vbCBpc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZDsKKyAgICBib29sIG1faXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQ7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShRVU9UQSkKLSAgICBzdGF0aWMgYm9vbCBpc1F1b3RhRW5hYmxlZDsKKyAg
ICBib29sIG1faXNRdW90YUVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKLSAgICBzdGF0aWMgYm9vbCBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOworICAgIGJvb2wg
bV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQotICAgIHN0YXRpYyBib29sIGlzTWVkaWFTb3VyY2VFbmFibGVkOworICAgIGJvb2wgbV9p
c01lZGlhU291cmNlRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJ
QSkKLSAgICBzdGF0aWMgYm9vbCBpc0VuY3J5cHRlZE1lZGlhRW5hYmxlZDsKKyAgICBib29sIG1f
aXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSURFT19UUkFD
SykKLSAgICBzdGF0aWMgYm9vbCBpc1ZpZGVvVHJhY2tFbmFibGVkOworICAgIGJvb2wgbV9pc1Zp
ZGVvVHJhY2tFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBz
dGF0aWMgYm9vbCBpc1NoYWRvd0RPTUVuYWJsZWQ7Ci0KLSAgICBzdGF0aWMgYm9vbCBpc0F1dGhv
clNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkOworICAgIGJvb2wgbV9pc1NoYWRvd0RPTUVu
YWJsZWQ7CisgICAgYm9vbCBtX2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQ7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0gICAgc3RhdGljIGJvb2wg
aXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzQ3VzdG9tRE9NRWxlbWVu
dHNFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIHN0YXRp
YyBib29sIGlzU3R5bGVTY29wZWRFbmFibGVkOworICAgIGJvb2wgbV9pc1N0eWxlU2NvcGVkRW5h
YmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURSkKLSAgICBzdGF0aWMg
Ym9vbCBpc0lucHV0VHlwZURhdGVFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlwZURhdGVF
bmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNPTVBM
RVRFKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkOworICAgIGJv
b2wgbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElO
UFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlwZURhdGVU
aW1lTG9jYWxFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFi
bGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9NT05USCkKLSAgICBzdGF0aWMg
Ym9vbCBpc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsKKyAgICBib29sIG1faXNJbnB1dFR5cGVNb250
aEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCi0gICAgc3Rh
dGljIGJvb2wgaXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsKKyAgICBib29sIG1faXNJbnB1dFR5cGVU
aW1lRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKLSAgICBz
dGF0aWMgYm9vbCBpc0lucHV0VHlwZVdlZWtFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlw
ZVdlZWtFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgc3RhdGlj
IGJvb2wgYXJlRXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVk
OworICAgIGJvb2wgbV9hcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJl
c0VuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgc3Rh
dGljIGJvb2wgYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZDsKKyAgICBib29sIG1fYXJlU2VhbWxl
c3NJRnJhbWVzRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMp
Ci0gICAgc3RhdGljIGJvb2wgaXNGb250TG9hZEV2ZW50c0VuYWJsZWQ7CisgICAgYm9vbCBtX2lz
Rm9udExvYWRFdmVudHNFbmFibGVkOwogI2VuZGlmCiAKKyNpZm5kZWYgQ0xBU1NfSUZfR0NDCisj
aWYgQ09NUElMRVIoR0NDKQorI2RlZmluZSBDTEFTU19JRl9HQ0MgY2xhc3MKKyNlbHNlCisjZGVm
aW5lIENMQVNTX0lGX0dDQworI2VuZGlmCisjZW5kaWYKKyAgICBmcmllbmQgQ0xBU1NfSUZfR0ND
IE5ldmVyRGVzdHJveWVkPFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM+OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHls
ZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAxNTY0MDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjAsNyArMTIw
LDcgQEAgc3RhdGljIFByb3BlcnR5TmFtZVByZWZpeCBnZXRDU1NQcm9wZXJ0eQogICAgIHN3aXRj
aCAoZmlyc3RDaGFyKSB7CiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQog
ICAgIGNhc2UgJ2EnOgotICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5
Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZp
eChwcm9wZXJ0eU5hbWUsICJhcHBsZSIpKQorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSAm
JiBtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImFwcGxlIikpCiAg
ICAgICAgICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4QXBwbGU7CiAgICAgICAgIGJyZWFr
OwogI2VuZGlmCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIFByb3BlcnR5TmFtZVByZWZpeCBn
ZXRDU1NQcm9wZXJ0eQogICAgICAgICBicmVhazsKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5E
T1JfUFJFRklYRVMpCiAgICAgY2FzZSAnayc6Ci0gICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpsZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSAmJiBtYXRjaGVzQ1NTUHJv
cGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImtodG1sIikpCisgICAgICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUNTU1ZlbmRvclByZWZp
eGVzRW5hYmxlZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1l
LCAia2h0bWwiKSkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eU5hbWVQcmVmaXhLSFRNTDsK
ICAgICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTIyMyw3ICsyMjMsNyBAQCBzdGF0aWMgQ1NTUHJv
cGVydHlJbmZvIGNzc1Byb3BlcnR5SURGb3JKCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9S
X1BSRUZJWEVTKQogICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4QXBwbGU6CiAgICAgY2FzZSBQ
cm9wZXJ0eU5hbWVQcmVmaXhLSFRNTDoKLSAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpKTsKKyAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9y
UHJlZml4ZXNFbmFibGVkKCkpOwogICAgICAgICB3cml0ZVdlYktpdFByZWZpeChidWZmZXJQdHIp
OwogICAgICAgICBpICs9IDU7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDE1
NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDYg
QW5kZXJzIENhcmxzc29uIDxhbmRlcnNjYUBtYWMuY29tPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+CiAjIENvcHlyaWdodCAoQykgMjAw
NiBBbGV4ZXkgUHJvc2t1cnlha292IDxhcEB3ZWJraXQub3JnPgotIyBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgQ2FtZXJv
biBNY0Nvcm1hY2sgPGNhbUBtY2MuaWQuYXU+CiAjIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChD
KSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQpAQCAt
MTQ0NCwxMSArMTQ0NCwxMSBAQCBzdWIgR2V0UnVudGltZUVuYWJsZUZ1bmN0aW9uTmFtZQogewog
ICAgIG15ICRzaWduYXR1cmUgPSBzaGlmdDsKIAotICAgICMgSWYgYSBwYXJhbWV0ZXIgaXMgZ2l2
ZW4gKGUuZy4gIkVuYWJsZWRBdFJ1bnRpbWU9RmVhdHVyZU5hbWUiKSByZXR1cm4gdGhlIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OntGZWF0dXJlTmFtZX1FbmFibGVkKCkgbWV0aG9kLgotICAgIHJl
dHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6IiAuIFRvTWV0aG9kTmFtZSgkc2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9KSAuICJFbmFibGVkIiBp
ZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSAm
JiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9IG5l
ICJWQUxVRV9JU19NSVNTSU5HIik7CisgICAgIyBJZiBhIHBhcmFtZXRlciBpcyBnaXZlbiAoZS5n
LiAiRW5hYmxlZEF0UnVudGltZT1GZWF0dXJlTmFtZSIpIHJldHVybiB0aGUgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS57RmVhdHVyZU5hbWV9RW5hYmxlZCgpIG1ldGhv
ZC4KKyAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
IiAuIFRvTWV0aG9kTmFtZSgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxl
ZEF0UnVudGltZSJ9KSAuICJFbmFibGVkIiBpZiAoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSAmJiAkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9IG5lICJWQUxVRV9JU19NSVNTSU5HIik7CiAKLSAgICAj
IE90aGVyd2lzZSByZXR1cm4gYSBmdW5jdGlvbiBuYW1lZCBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp7bWV0aG9kTmFtZX1FbmFibGVkKCkuCi0gICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjoiIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1cmUtPm5hbWUpIC4gIkVuYWJsZWQiOworICAg
ICMgT3RoZXJ3aXNlIHJldHVybiBhIGZ1bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkue21ldGhvZE5hbWV9RW5hYmxlZCgpLgorICAgIHJldHVybiAi
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1l
KCRzaWduYXR1cmUtPm5hbWUpIC4gIkVuYWJsZWQiOwogfQogCiBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCShyZXZpc2lvbiAxNTY0
MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDgsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgQ1NTRm9udEZhY2U6
OmZvbnRMb2FkZWQoQ1NTRm9udEZhY2UKICAgICBmb250U2VsZWN0b3ItPmZvbnRMb2FkZWQoKTsK
IAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5n
KSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9u
dExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZykgewogICAgICAg
ICBpZiAoc291cmNlLT5lbnN1cmVGb250RGF0YSgpKQogICAgICAgICAgICAgbm90aWZ5Rm9udExv
YWRlcihMb2FkZWQpOwogICAgICAgICBlbHNlIGlmICghaXNWYWxpZCgpKQpAQCAtMTAzLDcgKzEw
Myw3IEBAIHZvaWQgQ1NTRm9udEZhY2U6OmZvbnRMb2FkZWQoQ1NTRm9udEZhY2UKICAgICAgICAg
KCppdCktPmZvbnRMb2FkZWQodGhpcyk7CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykK
LSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkp
CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExv
YWRFdmVudHNFbmFibGVkKCkpCiAgICAgICAgIG5vdGlmeUxvYWRpbmdEb25lKCk7CiAjZW5kaWYK
IH0KQEAgLTExOCw3ICsxMTgsNyBAQCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBDU1NGb250
RmFjZTo6CiAgICAgQ1NTRm9udFNlbGVjdG9yKiBmb250U2VsZWN0b3IgPSAoKm1fc2VnbWVudGVk
Rm9udEZhY2VzLmJlZ2luKCkpLT5mb250U2VsZWN0b3IoKTsKIAogI2lmIEVOQUJMRShGT05UX0xP
QURfRVZFTlRTKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50
c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBOb3RMb2FkZWQpCisgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkg
JiYgbV9sb2FkU3RhdGUgPT0gTm90TG9hZGVkKQogICAgICAgICBub3RpZnlGb250TG9hZGVyKExv
YWRpbmcpOwogI2VuZGlmCiAKQEAgLTEyNyw3ICsxMjcsNyBAQCBQYXNzUmVmUHRyPFNpbXBsZUZv
bnREYXRhPiBDU1NGb250RmFjZTo6CiAgICAgICAgIGlmIChSZWZQdHI8U2ltcGxlRm9udERhdGE+
IHJlc3VsdCA9IG1fc291cmNlc1tpXS0+Z2V0Rm9udERhdGEoZm9udERlc2NyaXB0aW9uLCBzeW50
aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnRTZWxlY3RvcikpIHsKICAgICAgICAgICAg
IG1fYWN0aXZlU291cmNlID0gbV9zb3VyY2VzW2ldLmdldCgpOwogI2lmIEVOQUJMRShGT05UX0xP
QURfRVZFTlRTKQotICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRM
b2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmcgJiYgbV9zb3VyY2Vz
W2ldLT5pc0xvYWRlZCgpKSB7CisgICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0
ZSA9PSBMb2FkaW5nICYmIG1fc291cmNlc1tpXS0+aXNMb2FkZWQoKSkgewogICAgICAgICAgICAg
ICAgIG5vdGlmeUZvbnRMb2FkZXIoTG9hZGVkKTsKICAgICAgICAgICAgICAgICBub3RpZnlMb2Fk
aW5nRG9uZSgpOwogICAgICAgICAgICAgfQpAQCAtMTM3LDcgKzEzNyw3IEBAIFBhc3NSZWZQdHI8
U2ltcGxlRm9udERhdGE+IENTU0ZvbnRGYWNlOjoKICAgICB9CiAKICNpZiBFTkFCTEUoRk9OVF9M
T0FEX0VWRU5UUykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVu
dHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZykgeworICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgp
ICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmcpIHsKICAgICAgICAgbm90aWZ5Rm9udExvYWRlcihF
cnJvcik7CiAgICAgICAgIG5vdGlmeUxvYWRpbmdEb25lKCk7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAy
MDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgQ1NTRm9udFNlbGVjdG9yOjphZGRG
b250RmFjZVJ1bGUoY28KICAgICAgICAgICAgIFJlZlB0cjxDU1NGb250RmFjZVJ1bGU+IHJ1bGU7
CiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCiAgICAgICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjExNiAtIFRoaXMgQ1NTRm9u
dEZhY2VSdWxlIGhhcyBubyBwYXJlbnQuCi0gICAgICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkpCisgICAgICAgICAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQo
KSkKICAgICAgICAgICAgICAgICBydWxlID0gc3RhdGljX3BvaW50ZXJfY2FzdDxDU1NGb250RmFj
ZVJ1bGU+KGZvbnRGYWNlUnVsZS0+Y3JlYXRlQ1NTT01XcmFwcGVyKCkpOwogI2VuZGlmCiAgICAg
ICAgICAgICBmb250RmFjZSA9IENTU0ZvbnRGYWNlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Rm9udFRy
YWl0c01hc2s+KHRyYWl0c01hc2spLCBydWxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDMgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqIENvcHlyaWdodCAoQykgMjAwNSBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gKGtkZUBjYXJld29sZi5jb20pCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBOaWNob2xhcyBTaGFu
a3MgPHdlYmtpdEBuaWNrc2hhbmtzLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNl
aWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmls
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8p
CkBAIC01ODYsNyArNTg2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJv
cGVydAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZU1hcmdpbjoKICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0U2hhcGVQYWRkaW5nOgogICAgICAgICBhY2NlcHRzTmVnYXRpdmVOdW1i
ZXJzID0gZmFsc2U7Ci0gICAgICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NT
aGFwZXNFbmFibGVkKCk7CisgICAgICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKTsKICNlbmRpZgogICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3R0b206CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUxlZnQ6CkBAIC0xMDMxLDEzICsx
MDMxLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3BlcnQKICAgICAg
ICAgYnJlYWs7CiAjaWYgRU5BQkxFKENTU19FWENMVVNJT05TKQogICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRXcmFwRmxvdzoKLSAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpj
c3NFeGNsdXNpb25zRW5hYmxlZCgpKQorICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVCb3RoIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYXhpbXVtIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVDbGVhcikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcFRocm91Z2g6Ci0gICAgICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzRXhjbHVzaW9uc0VuYWJsZWQoKSkKKyAgICAg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc0V4Y2x1
c2lvbnNFbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICh2
YWx1ZUlEID09IENTU1ZhbHVlV3JhcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwpAQCAtMzAxMSw3ICszMDExLDcgQEAgYm9vbCBDU1NQYXJzZXI6
OnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQogICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZUluc2lkZToKICAgICBjYXNlIENTU1Byb3BlcnR5V2Vi
a2l0U2hhcGVPdXRzaWRlOgotICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c1NoYXBlc0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKGlkID09IENTU1ZhbHVlQXV0bykKICAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKQEAgLTMwMjYsNyArMzAyNiw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVZhbHVlKENTU1Byb3BlcnR5SUQKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZVBh
ZGRpbmc6Ci0gICAgICAgIHZhbGlkUHJpbWl0aXZlID0gKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc1NoYXBlc0VuYWJsZWQoKSAmJiAhaWQgJiYgdmFsaWRVbml0KHZhbHVlLCBGTGVuZ3RoIHwg
Rk5vbk5lZykpOworICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKSAmJiAhaWQgJiYgdmFsaWRV
bml0KHZhbHVlLCBGTGVuZ3RoIHwgRk5vbk5lZykpOwogICAgICAgICBicmVhazsKICNlbmRpZgog
I2lmIEVOQUJMRShDU1NfSU1BR0VfT1JJRU5UQVRJT04pCkBAIC0xMjE5OSw3ICsxMjE5OSw3IEBA
IHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SUQoY29uc3QKICNpZiBFTkFCTEUoTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCiAgICAgICAgIC8vIElmIHRoZSBwcmVmaXggaXMgLWFw
cGxlLSBvciAta2h0bWwtLCBjaGFuZ2UgaXQgdG8gLXdlYmtpdC0uCiAgICAgICAgIC8vIFRoaXMg
bWFrZXMgdGhlIHN0cmluZyBvbmUgY2hhcmFjdGVyIGxvbmdlci4KLSAgICAgICAgaWYgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpCisgICAg
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUNT
U1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpCiAgICAgICAgICAgICAmJiAoaGFzUHJlZml4KGJ1ZmZl
ciwgbGVuZ3RoLCAiLWFwcGxlLSIpIHx8IGhhc1ByZWZpeChidWZmZXIsIGxlbmd0aCwgIi1raHRt
bC0iKSkpIHsKICAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyICsgNywgYnVmZmVyICsgNiwgbGVu
Z3RoICsgMSAtIDYpOwogICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgIi13ZWJraXQiLCA3KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAkocmV2
aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIENTU1NlZ21lbnRlZEZvbnRG
YWNlOjpmb250TG9hZGVkKENTCiAgICAgcHJ1bmVUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEZPTlRf
TE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZl
bnRzRW5hYmxlZCgpICYmICFpc0xvYWRpbmcoKSkgeworICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmICFpc0xv
YWRpbmcoKSkgewogICAgICAgICBWZWN0b3I8UmVmUHRyPExvYWRGb250Q2FsbGJhY2s+ID4gY2Fs
bGJhY2tzOwogICAgICAgICBtX2NhbGxiYWNrcy5zd2FwKGNhbGxiYWNrcyk7CiAgICAgICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBjYWxsYmFja3Muc2l6ZSgpOyArK2luZGV4KSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHJldmlzaW9uIDE1NjQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIw
OSwxMiArMjA5LDEyIEBAIHB1YmxpYzoKICAgICB7CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkK
ICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSB8fCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHls
ZVNjb3BlZEVuYWJsZWQoKSk7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSB8fCBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKICNlbHNlCi0g
ICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNjb3BlZEVuYWJsZWQo
KSk7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKICNlbmRpZgogI2Vsc2UKLSAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSk7CisgICAgICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVu
YWJsZWQoKSk7CiAjZW5kaWYKICAgICAgICAgaWYgKCFtX3Njb3BlUmVzb2x2ZXIpCiAgICAgICAg
ICAgICBtX3Njb3BlUmVzb2x2ZXIgPSBhZG9wdFB0cihuZXcgU3R5bGVTY29wZVJlc29sdmVyKCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ4LDEyICsx
MTQ4LDEyIEBAIGJvb2wgRG9jdW1lbnQ6OmNzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCgKIAogYm9v
bCBEb2N1bWVudDo6Y3NzUmVnaW9uc0VuYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NSZWdpb25zRW5hYmxlZCgpOyAKKyAgICByZXR1cm4gUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NSZWdpb25zRW5hYmxlZCgp
OyAKIH0KIAogYm9vbCBEb2N1bWVudDo6Y3NzQ29tcG9zaXRpbmdFbmFibGVkKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzQ29tcG9zaXRpbmdFbmFibGVk
KCk7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
Y3NzQ29tcG9zaXRpbmdFbmFibGVkKCk7CiB9CiAKIGJvb2wgRG9jdW1lbnQ6OmNzc0dyaWRMYXlv
dXRFbmFibGVkKCkgY29uc3QKQEAgLTU2OTksNyArNTY5OSw3IEBAIEhUTUxJRnJhbWVFbGVtZW50
KiBEb2N1bWVudDo6c2VhbWxlc3NQYXIKIGJvb2wgRG9jdW1lbnQ6OnNob3VsZERpc3BsYXlTZWFt
bGVzc2x5V2l0aFBhcmVudCgpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykK
LSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNlYW1sZXNzSUZyYW1lc0VuYWJsZWQo
KSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2Vh
bWxlc3NJRnJhbWVzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSB0aGlzLT5vd25lckVsZW1lbnQoKTsKICAg
ICBpZiAoIW93bmVyRWxlbWVudCkKQEAgLTU5NzcsNyArNTk3Nyw3IEBAIGJvb2wgRG9jdW1lbnQ6
OmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpIGMKIExvY2FsZSYgRG9jdW1lbnQ6OmdldENhY2hlZExv
Y2FsZShjb25zdCBBdG9taWNTdHJpbmcmIGxvY2FsZSkKIHsKICAgICBBdG9taWNTdHJpbmcgbG9j
YWxlS2V5ID0gbG9jYWxlOwotICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpIHx8ICFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQor
ICAgIGlmIChsb2NhbGUuaXNFbXB0eSgpIHx8ICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCiAg
ICAgICAgIGxvY2FsZUtleSA9IGRlZmF1bHRMYW5ndWFnZSgpOwogICAgIExvY2FsZUlkZW50aWZp
ZXJUb0xvY2FsZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbG9jYWxlQ2FjaGUuYWRkKGxvY2Fs
ZUtleSwgbnVsbHB0cik7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQpJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDg3LDcgKzE0ODcsNyBAQCBQYXNzUmVmUHRy
PFNoYWRvd1Jvb3Q+IEVsZW1lbnQ6OmNyZWF0ZVNoCiAgICAgICAgIGVuc3VyZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoKTsKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjphdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpKSB7Cisg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXV0aG9yU2hh
ZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoKSkgewogICAgICAgICBhZGRTaGFkb3dSb290KFNo
YWRvd1Jvb3Q6OmNyZWF0ZShkb2N1bWVudCgpLCBTaGFkb3dSb290OjpBdXRob3JTaGFkb3dSb290
KSk7CiAgICAgICAgIHJldHVybiBzaGFkb3dSb290KCk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
UG9zaXRpb24uY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vUG9z
aXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDksIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC05Nyw3ICs5Nyw3IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFu
Y2gKICAgICAsIG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24odHJ1ZSkKIHsKICNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKLSAgICBBU1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpIHx8ICFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9y
Tm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5vZGUoKSk7
CisgICAgQVNTRVJUKChtX2FuY2hvck5vZGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkpIHx8ICFtX2FuY2hvck5vZGUgfHwgIW1f
YW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5v
ZGUoKSk7CiAjZWxzZQogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUt
PmlzU2hhZG93Um9vdCgpIHx8IG1fYW5jaG9yTm9kZSA9PSBjb250YWluZXJOb2RlKCkpOwogI2Vu
ZGlmCkBAIC0xMTEsNyArMTExLDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9k
ZT4gYW5jaAogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbihmYWxzZSkKIHsKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLSAgICBBU1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpIHx8ICFtX2FuY2hvck5vZGUgfHwgIW1f
YW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5v
ZGUoKSk7CisgICAgQVNTRVJUKChtX2FuY2hvck5vZGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkpIHx8ICFtX2FuY2hvck5vZGUg
fHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRh
aW5lck5vZGUoKSk7CiAjZWxzZQogICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hv
ck5vZGUtPmlzU2hhZG93Um9vdCgpIHx8IG1fYW5jaG9yTm9kZSA9PSBjb250YWluZXJOb2RlKCkp
OwogI2VuZGlmCkBAIC0xMzAsNyArMTMwLDcgQEAgUG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQ
dHI8Tm9kZT4gYW5jaAogICAgICwgbV9pc0xlZ2FjeUVkaXRpbmdQb3NpdGlvbihmYWxzZSkKIHsK
ICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBBU1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpCisgICAgQVNTRVJUKChtX2Fu
Y2hvck5vZGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zaGFk
b3dET01FbmFibGVkKCkpCiAgICAgICAgICAgIHx8ICFtX2FuY2hvck5vZGUgfHwgIWVkaXRpbmdJ
Z25vcmVzQ29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkpIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hh
ZG93Um9vdCgpKTsKICNlbHNlCiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIWVkaXRpbmdJ
Z25vcmVzQ29udGVudChtX2FuY2hvck5vZGUuZ2V0KCkpIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hh
ZG93Um9vdCgpKTsKQEAgLTg3NSw3ICs4NzUsNyBAQCBDb250YWluZXJOb2RlKiBQb3NpdGlvbjo6
ZmluZFBhcmVudChjb25zCiAgICAgLy8gRklYTUU6IFNlZSBodHRwOi8vd2ViLnVnLzgyNjk3CiAK
ICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhZG93RE9NRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG5vZGUtPnBh
cmVudE5vZGUoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAkocmV2
aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBET01TZWxlY3Rpb24qIFRyZWVTY29wZTo6Z2V0
U2VsZWN0aW9uKCkKICAgICAvLyBhcyBhIGNvbnRhaW5lci4gSXQgaXMgbm93IGVuYWJsZWQgb25s
eSBpZiBydW50aW1lIFNoYWRvdyBET00gZmVhdHVyZSBpcyBlbmFibGVkLgogICAgIC8vIFNlZSBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI2OTcKICNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5h
YmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2hhZG93RE9NRW5hYmxlZCgpKSB7CiAgICAgICAgIG1fc2VsZWN0aW9uID0gRE9NU2VsZWN0
aW9uOjpjcmVhdGUodGhpcyk7CiAgICAgICAgIHJldHVybiBtX3NlbGVjdGlvbi5nZXQoKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAkocmV2aXNpb24gMTU2NDA0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJKHdvcmtpbmcgY29weSkKQEAgLTQxMCw3
ICs0MTAsNyBAQCBFTkQKICAgICBteSAkcnVudGltZUNvbmRpdGlvbmFsID0gJGVuYWJsZWRUYWdz
eyR0YWdOYW1lfXtydW50aW1lQ29uZGl0aW9uYWx9OwogICAgIGlmICgkcnVudGltZUNvbmRpdGlv
bmFsKSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuJHtydW50aW1lQ29uZGl0aW9uYWx9RW5h
YmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIEVORAogOwpAQCAtMTA5Niw3ICsxMDk2LDcgQEAg
RU5ECiAgICAgICAgICAgICBwcmludCBGIDw8RU5ECiBzdGF0aWMgSlNET01XcmFwcGVyKiBjcmVh
dGUke0pTSW50ZXJmYWNlTmFtZX1XcmFwcGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUGFzc1JlZlB0cjwkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxl
bWVudD4gZWxlbWVudCkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiR7cnVu
dGltZUNvbmRpdGlvbmFsfUVuYWJsZWQoKSkgeworICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4ke3J1bnRpbWVDb25kaXRpb25hbH1FbmFibGVkKCkpIHsK
ICAgICAgICAgQVNTRVJUKCFlbGVtZW50IHx8IGVsZW1lbnQtPmlzJHBhcmFtZXRlcnN7ZmFsbGJh
Y2tJbnRlcmZhY2VOYW1lfSgpKTsKICAgICAgICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihl
eGVjLCBnbG9iYWxPYmplY3QsICRwYXJhbWV0ZXJze2ZhbGxiYWNrSlNJbnRlcmZhY2VOYW1lfSwg
ZWxlbWVudC5nZXQoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1
dEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAg
KEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdl
YmtpdC5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KQEAgLTE2NDYsNyArMTY0Niw3IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNT
dGVwcGFibGUoKSBjb24KIGJvb2wgSFRNTElucHV0RWxlbWVudDo6aXNTcGVlY2hFbmFibGVkKCkg
Y29uc3QKIHsKICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIFJBTkdFLCBFTUFJTCwgVVJM
LCBDT0xPUiBhbmQgREFURS9USU1FIGlucHV0IHR5cGVzLgotICAgIHJldHVybiBtX2lucHV0VHlw
ZS0+c2hvdWxkUmVzcGVjdFNwZWVjaEF0dHJpYnV0ZSgpICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNwZWVjaElucHV0RW5hYmxlZCgpICYmIGhhc0F0dHJpYnV0ZSh3ZWJraXRzcGVlY2hBdHRy
KTsKKyAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RTcGVlY2hBdHRyaWJ1dGUo
KSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNwZWVjaElucHV0
RW5hYmxlZCgpICYmIGhhc0F0dHJpYnV0ZSh3ZWJraXRzcGVlY2hBdHRyKTsKIH0KIAogI2VuZGlm
CkBAIC0xOTUwLDcgKzE5NTAsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRp
bWVDaG9vCiAgICAgcGFyYW1ldGVycy5taW5pbXVtID0gbWluaW11bSgpOwogICAgIHBhcmFtZXRl
cnMubWF4aW11bSA9IG1heGltdW0oKTsKICAgICBwYXJhbWV0ZXJzLnJlcXVpcmVkID0gaXNSZXF1
aXJlZCgpOwotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkubGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQoKSkKICAgICAgICAgcGFyYW1ldGVycy5sb2NhbGUgPSBkZWZhdWx0TGFuZ3VhZ2UoKTsKICAg
ICBlbHNlIHsKICAgICAgICAgQXRvbWljU3RyaW5nIGNvbXB1dGVkTG9jYWxlID0gY29tcHV0ZUlu
aGVyaXRlZExhbmd1YWdlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsCiAjZW5kaWYKICAgICAKICNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHRyYWNrRGVzY2VuZGFudHMgPSBkZXNjZW5kYW50c09mVHlwZTxIVE1MVHJh
Y2tFbGVtZW50Pih0aGlzKTsKQEAgLTY2OSw3ICs2NjksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OnNjaGVkdWxlRGVsYXllZEFjCiAgICAgfQogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
ICYmIChhY3Rpb25UeXBlICYgQ29uZmlndXJlVGV4dFRyYWNrcykpCisgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSAmJiAoYWN0aW9uVHlwZSAmIENvbmZpZ3VyZVRleHRUcmFja3MpKQogICAgICAgICBzZXRGbGFn
cyhtX3BlbmRpbmdBY3Rpb25GbGFncywgQ29uZmlndXJlVGV4dFRyYWNrcyk7CiAjZW5kaWYKIApA
QCAtNzA2LDcgKzcwNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQo
VGkKICAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7IC8vIGxvYWROZXh0
U291cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJh
cnkgRE9NIG11dGF0aW9ucy4KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSAmJiAobV9wZW5k
aW5nQWN0aW9uRmxhZ3MgJiBDb25maWd1cmVUZXh0VHJhY2tzKSkKKyAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
ICYmIChtX3BlbmRpbmdBY3Rpb25GbGFncyAmIENvbmZpZ3VyZVRleHRUcmFja3MpKQogICAgICAg
ICBjb25maWd1cmVUZXh0VHJhY2tzKCk7CiAjZW5kaWYKIApAQCAtNzE4LDcgKzcxOCw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGkKICAgICB9CiAKICNpZiBVU0Uo
UExBVEZPUk1fVEVYVF9UUkFDS19NRU5VKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChtX3BlbmRpbmdBY3Rpb25GbGFncyAmIFRl
eHRUcmFja0NoYW5nZXNOb3RpZmljYXRpb24pKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKG1fcGVu
ZGluZ0FjdGlvbkZsYWdzICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlmaWNhdGlvbikpCiAgICAgICAg
IG5vdGlmeU1lZGlhUGxheWVyT2ZUZXh0VHJhY2tDaGFuZ2VzKCk7CiAjZW5kaWYKIApAQCAtODMz
LDcgKzgzMyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cHJlcGFyZUZvckxvYWQoKQogICAg
ICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS5lbXB0aWVkRXZlbnQpOwogICAgICAgICB1
cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQor
ICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNr
Q3VlcygwKTsKICNlbmRpZgogICAgIH0KQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmxvYWRJbnRlcm5hbCgpCiAKICAgICAvLyBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0
VHJhY2tzQXJlUmVhZHkgd2lsbCBuZWVkICIuLi4gdGhlIHRleHQgdHJhY2tzIHdob3NlIG1vZGUg
d2FzIG5vdCBpbiB0aGUKICAgICAvLyBkaXNhYmxlZCBzdGF0ZSB3aGVuIHRoZSBlbGVtZW50J3Mg
cmVzb3VyY2Ugc2VsZWN0aW9uIGFsZ29yaXRobSBsYXN0IHN0YXJ0ZWQiLgotICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CisgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkgewogICAgICAgICBtX3RleHRUcmFja3NXaGVuUmVzb3VyY2VTZWxlY3Rpb25C
ZWdhbi5jbGVhcigpOwogICAgICAgICBpZiAobV90ZXh0VHJhY2tzKSB7CiAgICAgICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKSB7CkBA
IC0xODIyLDcgKzE4MjIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUo
TWVkCiAgICAgUmVhZHlTdGF0ZSBuZXdTdGF0ZSA9IHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KHN0
YXRlKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBib29sIHRyYWNrc0FyZVJlYWR5
ID0gIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgfHwg
dGV4dFRyYWNrc0FyZVJlYWR5KCk7CisgICAgYm9vbCB0cmFja3NBcmVSZWFkeSA9ICFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkgfHwgdGV4dFRyYWNrc0FyZVJlYWR5KCk7CiAKICAgICBpZiAobmV3U3RhdGUgPT0gb2xkU3Rh
dGUgJiYgbV90cmFja3NBcmVSZWFkeSA9PSB0cmFja3NBcmVSZWFkeSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMTkyNyw3ICsxOTI3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0
YXRlKE1lZAogICAgIHVwZGF0ZVBsYXlTdGF0ZSgpOwogICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxl
cigpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAg
ICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogI2VuZGlmCiB9
CkBAIC0yODEwLDcgKzI4MTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXliYWNrUHJv
Z3Jlc3NUCiAgICAgICAgIG1lZGlhQ29udHJvbHMoKS0+cGxheWJhY2tQcm9ncmVzc2VkKCk7CiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAg
dXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKICNlbmRpZgogfQpAQCAt
Mjg2Miw3ICsyODYyLDcgQEAgZG91YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OnBlcmNlbnRMb2FkZWQo
KQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkQXVkaW9UcmFjayhQ
YXNzUmVmUHRyPEF1ZGlvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKLSAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGFkZEF1ZGlvVHJhY2soQXVkaW9UcmFj
azo6Y3JlYXRlKHRoaXMsIHBycFRyYWNrKSk7CkBAIC0yODcwLDcgKzI4NzAsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2soUGFzc1JlZlB0cjxJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlPiBwcnBUcmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKICAgICAvLyA0LjguMTAuMTIuMiBTb3VyY2luZyBpbi1iYW5kIHRleHQgdHJh
Y2tzCkBAIC0yOTA1LDcgKzI5MDUsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxh
eWVyRGlkQWRkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRl
b1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFja1ByaXZhdGU+IHBycFRyYWNrKQogewotICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYWRkVmlkZW9UcmFjayhW
aWRlb1RyYWNrOjpjcmVhdGUodGhpcywgcHJwVHJhY2spKTsKQEAgLTMwMTAsNyArMzAxMCw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y2xvc2VDYXB0aW9uVHJhY2sKIAogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFjaz4gdHJhY2spCiB7
Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdWRpb1Ry
YWNrcygpLT5hcHBlbmQodHJhY2spOwpAQCAtMzAxOCw3ICszMDE4LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjphZGRBdWRpb1RyYWNrKFBhcwogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFk
ZFRleHRUcmFjayhQYXNzUmVmUHRyPFRleHRUcmFjaz4gdHJhY2spCiB7Ci0gICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICB0ZXh0VHJhY2tzKCktPmFwcGVuZCh0
cmFjayk7CkBAIC0zMDI4LDcgKzMwMjgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRl
eHRUcmFjayhQYXNzCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayhQYXNz
UmVmUHRyPFZpZGVvVHJhY2s+IHRyYWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgdmlkZW9UcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKQEAgLTMw
MzYsNyArMzAzNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVmlkZW9UcmFjayhQYXMK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBdWRpb1RyYWNrKEF1ZGlvVHJhY2sqIHRy
YWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9hdWRpb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKQEAgLTMwNDQsNyArMzA0NCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQXVkaW9UcmFjaygKIAogdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpyZW1vdmVUZXh0VHJhY2soVGV4dFRyYWNrKiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYWNrRGlzcGxheVVwZGF0ZVNjb3Bl
IHNjb3BlKHRoaXMpOwpAQCAtMzA1OSw3ICszMDU5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2soVAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVZpZGVv
VHJhY2soVmlkZW9UcmFjayogdHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3ZpZGVvVHJhY2tzLT5yZW1vdmUodHJhY2spOwpAQCAtMzA4
Niw3ICszMDg2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVBbGxJbmJhbmRUcgog
CiBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKGNv
bnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5n
dWFnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIC8vIDQuOC4xMC4xMi40IFRleHQgdHJhY2sgQVBJCkBAIC0z
MTIzLDcgKzMxMjMsNyBAQCBQYXNzUmVmUHRyPFRleHRUcmFjaz4gSFRNTE1lZGlhRWxlbWVudDo6
CiAKIEF1ZGlvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50OjphdWRpb1RyYWNrcygpCiB7Ci0g
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghbV9h
dWRpb1RyYWNrcykKQEAgLTMxMzQsNyArMzEzNCw3IEBAIEF1ZGlvVHJhY2tMaXN0KiBIVE1MTWVk
aWFFbGVtZW50OjphdWRpb1QKIAogVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dGV4
dFRyYWNrcygpIAogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICBpZiAoIW1fdGV4dFRyYWNrcykKQEAgLTMxNDUsNyArMzE0NSw3IEBAIFRleHRUcmFj
a0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmEKIAogVmlkZW9UcmFja0xpc3QqIEhUTUxN
ZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKCkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX3ZpZGVvVHJhY2tzKQpAQCAtMzE1OCw3ICsz
MTU4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpkaWRBZGRUZXh0VHJhY2soSAogewogICAg
IEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUodHJhY2tUYWcpKTsKIAotICAgIGlmICgh
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gNC44LjEwLjEyLjMgU291
cmNpbmcgb3V0LW9mLWJhbmQgdGV4dCB0cmFja3MKQEAgLTMxODQsNyArMzE4NCw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6ZGlkUmVtb3ZlVGV4dFRyYWMKIHsKICAgICBBU1NFUlQodHJhY2tF
bGVtZW50LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAogI2lmICFMT0dfRElTQUJMRUQKQEAgLTM2MjYsNyArMzYyNiw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2gKICAgICBMT0coTWVk
aWEsICJIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllclRpbWVDaGFuZ2VkIik7CiAKICNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgdXBkYXRl
QWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKICNlbmRpZgogCkBAIC00MTE3LDcg
KzQxMTcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkCiAgICAg
bV9yZWFkeVN0YXRlID0gSEFWRV9OT1RISU5HOwogICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxlcigp
OwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAg
ICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKDApOwogI2VuZGlmCiB9CkBAIC00NDgzLDcgKzQ0
ODMsNyBAQCBib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omhhc0Nsb3NlZENhcHRpb25zCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSB8fCAhbV90ZXh0VHJh
Y2tzKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHx8ICFtX3RleHRUcmFja3MpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3RleHRUcmFja3MtPmxl
bmd0aCgpOyArK2kpIHsKQEAgLTQ1MjcsNyArNDUyNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6c2V0Q2xvc2VkQ2FwdGlvbnMKICAgICBtX3BsYXllci0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNp
YmxlKGNsb3NlZENhcHRpb25WaXNpYmxlKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkg
eworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKICAgICAgICAgbWFya0NhcHRpb25BbmRTdWJ0aXRsZVRy
YWNrc0FzVW5jb25maWd1cmVkKEltbWVkaWF0ZWx5KTsKICAgICAgICAgdXBkYXRlVGV4dFRyYWNr
RGlzcGxheSgpOwogICAgIH0KQEAgLTQ3MjcsNyArNDcyNyw3IEBAIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6Y29uZmlndXJlVGV4dFRyYWMKIAogICAgIG1lZGlhQ29udHJvbHMoKS0+Y2hhbmdlZENs
b3NlZENhcHRpb25zVmlzaWJpbGl0eSgpOwogICAgIAotICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkg
ewogICAgICAgICB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgICAgIHVwZGF0ZUFjdGl2
ZVRleHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY28KICAgICBp
ZiAobmFtZSA9PSB0aXRsZUF0dHIgJiYgc2hlZXQoKSkKICAgICAgICAgc2hlZXQoKS0+c2V0VGl0
bGUodmFsdWUpOwogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi0gICAgZWxzZSBpZiAobmFtZSA9
PSBzY29wZWRBdHRyICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxl
ZCgpKQorICAgIGVsc2UgaWYgKG5hbWUgPT0gc2NvcGVkQXR0ciAmJiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnN0eWxlU2NvcGVkRW5hYmxlZCgpKQogICAgICAgICBz
Y29wZWRBdHRyaWJ1dGVDaGFuZ2VkKCF2YWx1ZS5pc051bGwoKSk7CiAjZW5kaWYKICAgICBlbHNl
IGlmIChuYW1lID09IG1lZGlhQXR0cikgewpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgSFRNTFN0
eWxlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWwKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQog
dm9pZCBIVE1MU3R5bGVFbGVtZW50OjpzY29wZWRBdHRyaWJ1dGVDaGFuZ2VkKGJvb2wgc2NvcGVk
KQogewotICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNjb3BlZEVuYWJs
ZWQoKSk7CisgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc3R5bGVTY29wZWRFbmFibGVkKCkpOwogCiAgICAgaWYgKCFpbkRvY3VtZW50KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJl
Z2lzdGVyV2l0aFNjb3BpCiAKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6dW5yZWdpc3RlcldpdGhT
Y29waW5nTm9kZShDb250YWluZXJOb2RlKiBzY29wZSkKIHsKLSAgICBBU1NFUlQobV9zY29wZWRT
dHlsZVJlZ2lzdHJhdGlvblN0YXRlICE9IE5vdFJlZ2lzdGVyZWQgfHwgIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKKyAgICBBU1NFUlQobV9zY29wZWRTdHls
ZVJlZ2lzdHJhdGlvblN0YXRlICE9IE5vdFJlZ2lzdGVyZWQgfHwgIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpOwogICAgIGlmICgh
aXNSZWdpc3RlcmVkQXNTY29wZWQoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzcsNyArMTc3
LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aFNjbwogCiBib29sIEhU
TUxTdHlsZUVsZW1lbnQ6OnNjb3BlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpICYmIGZhc3RIYXNBdHRyaWJ1dGUoc2Nv
cGVkQXR0cik7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkgJiYgZmFzdEhhc0F0dHJpYnV0ZShzY29wZWRBdHRy
KTsKIH0KIAogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpzZXRTY29wZWQoYm9vbCBzY29wZWRWYWx1
ZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAkocmV2aXNp
b24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMyBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6cmVt
b3ZlZEZyb20oQ29udGEKIAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewot
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Vi
a2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgewogICAgICAgICBpZiAobmFtZSA9PSBzcmNBdHRyKSB7
CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICBzY2hl
ZHVsZUxvYWQoKTsKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnNj
aGVkdWxlTG9hZCgpCiAgICAgaWYgKG1fbG9hZFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
Ly8gMi4gSWYgdGhlIHRleHQgdHJhY2sncyB0ZXh0IHRyYWNrIG1vZGUgaXMgbm90IHNldCB0byBv
bmUgb2YgaGlkZGVuIG9yIHNob3dpbmcsIGFib3J0IHRoZXNlIHN0ZXBzLgpAQCAtMjM0LDcgKzIz
NCw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6bG9hZFRpbWVyRmlyZWQoVGkKIAogYm9vbCBI
VE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAo
IVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEhUTUxNZWRpYUVs
ZW1lbnQqIHBhcmVudCA9IG1lZGlhRWxlbWVudCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9JbnB1dFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRU
eXBlLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5
cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGly
ayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEBueXBvcC5jb20p
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyAoc2FtQHdlYmtpdC5vcmcpCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KQEAgLTk5LDE1ICs5OSwxNSBAQCBzdGF0aWMgT3duUHRyPElucHV0VHlw
ZUZhY3RvcnlNYXA+IGNyZWF0CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmNvbG9yKCks
ICZDb2xvcklucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9UWVBF
X0RBVEUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVFbmFi
bGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
aW5wdXRUeXBlRGF0ZUVuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6
OmRhdGUoKSwgJkRhdGVJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9EQVRFVElNRV9JTkNPTVBMRVRFKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoKSkKICAg
ICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lKCksICZEYXRlVGltZUlucHV0
VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FTE9D
QUwpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lTG9j
YWxFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuaW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQo
SW5wdXRUeXBlTmFtZXM6OmRhdGV0aW1lbG9jYWwoKSwgJkRhdGVUaW1lTG9jYWxJbnB1dFR5cGU6
OmNyZWF0ZSk7CiAjZW5kaWYKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZW1haWwoKSwg
JkVtYWlsSW5wdXRUeXBlOjpjcmVhdGUpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHN0YXRpYyBPd25Q
dHI8SW5wdXRUeXBlRmFjdG9yeU1hcD4gY3JlYXQKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1l
czo6aGlkZGVuKCksICZIaWRkZW5JbnB1dFR5cGU6OmNyZWF0ZSk7CiAgICAgbWFwLT5hZGQoSW5w
dXRUeXBlTmFtZXM6OmltYWdlKCksICZJbWFnZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9NT05USCkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5w
dXRUeXBlTW9udGhFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBlTW9udGhFbmFibGVkKCkpCiAgICAgICAgIG1hcC0+YWRk
KElucHV0VHlwZU5hbWVzOjptb250aCgpLCAmTW9udGhJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5k
aWYKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6bnVtYmVyKCksICZOdW1iZXJJbnB1dFR5
cGU6OmNyZWF0ZSk7CkBAIC0xMjcsMTIgKzEyNywxMiBAQCBzdGF0aWMgT3duUHRyPElucHV0VHlw
ZUZhY3RvcnlNYXA+IGNyZWF0CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnN1Ym1pdCgp
LCAmU3VibWl0SW5wdXRUeXBlOjpjcmVhdGUpOwogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVz
Ojp0ZWxlcGhvbmUoKSwgJlRlbGVwaG9uZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUo
SU5QVVRfVFlQRV9USU1FKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5
cGVUaW1lRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLmlucHV0VHlwZVRpbWVFbmFibGVkKCkpCiAgICAgICAgIG1hcC0+YWRkKElucHV0
VHlwZU5hbWVzOjp0aW1lKCksICZUaW1lSW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAgICAg
bWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnVybCgpLCAmVVJMSW5wdXRUeXBlOjpjcmVhdGUpOwog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlucHV0VHlwZVdlZWtFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBlV2Vla0VuYWJsZWQoKSkKICAgICAgICAgbWFw
LT5hZGQoSW5wdXRUeXBlTmFtZXM6OndlZWsoKSwgJldlZWtJbnB1dFR5cGU6OmNyZWF0ZSk7CiAj
ZW5kaWYKICAgICAvLyBObyBuZWVkIHRvIHJlZ2lzdGVyICJ0ZXh0IiBiZWNhdXNlIGl0IGlzIHRo
ZSBkZWZhdWx0IHR5cGUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2Vj
dXJpdHlQb2xpY3kuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTkwNSw3ICsxOTA2LDcgQEAg
dm9pZCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OnJlcG9ydEJsb2NrZQogYm9vbCBDb250ZW50U2Vj
dXJpdHlQb2xpY3k6OmV4cGVyaW1lbnRhbEZlYXR1cmVzRW5hYmxlZCgpIGNvbnN0CiB7CiAjaWYg
RU5BQkxFKENTUF9ORVhUKQotICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpleHBl
cmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoKTsKKyAgICByZXR1
cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5leHBlcmltZW50YWxD
b250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCShyZXZpc2lv
biAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2MjQsMTAgKzE2MjQsMTAgQEAgYm9vbCBET01XaW5kb3c6OmFkZEV2ZW50TGlz
dGVuZXIoY29uc3QgQQogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVm
b3JldW5sb2FkRXZlbnQgJiYgYWxsb3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKHRoaXMpKQogICAg
ICAgICBhZGRCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOwogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCi0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5k
ZXZpY2Vtb3Rpb25FdmVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VNb3Rpb25F
bmFibGVkKCkpIHsKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmlj
ZW1vdGlvbkV2ZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
ZGV2aWNlTW90aW9uRW5hYmxlZCgpKSB7CiAgICAgICAgIGlmIChEZXZpY2VNb3Rpb25Db250cm9s
bGVyKiBjb250cm9sbGVyID0gRGV2aWNlTW90aW9uQ29udHJvbGxlcjo6ZnJvbShwYWdlKCkpKQog
ICAgICAgICAgICAgY29udHJvbGxlci0+YWRkRGV2aWNlRXZlbnRMaXN0ZW5lcih0aGlzKTsKLSAg
ICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25F
dmVudCAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQo
KSkgeworICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2Vvcmll
bnRhdGlvbkV2ZW50ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkpIHsKICAgICAgICAgaWYgKERldmljZU9yaWVudGF0
aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IERldmljZU9yaWVudGF0aW9uQ29udHJvbGxlcjo6
ZnJvbShwYWdlKCkpKQogICAgICAgICAgICAgY29udHJvbGxlci0+YWRkRGV2aWNlRXZlbnRMaXN0
ZW5lcih0aGlzKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZp
c2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgIDE5OTkgTGFy
cyBLbm9sbCA8a25vbGxAa2RlLm9yZz4KICAqICAgICAgICAgICAgICAgICAgICAgMTk5OSBBbnR0
aSBLb2l2aXN0byA8a29pdmlzdG9Aa2RlLm9yZz4KICAqICAgICAgICAgICAgICAgICAgICAgMjAw
MCBEaXJrIE11ZWxsZXIgPG11ZWxsZXJAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA2IEdyYWhhbSBE
ZW5uaXMgKGdyYWhhbS5kZW5uaXNAZ21haWwuY29tKQogICogICAgICAgICAgIChDKSAyMDA2IEFs
ZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjc2Niw3ICsyNzY2LDcgQEAgdm9p
ZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogICAgICAgICBmcmFtZSgpLmxv
YWRlcigpLmRpZExheW91dChtaWxlc3RvbmVzQWNoaWV2ZWQpOwogCiAjaWYgRU5BQkxFKEZPTlRf
TE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZl
bnRzRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpKQogICAgICAgICBmcmFtZSgpLmRvY3VtZW50
KCktPmZvbnRsb2FkZXIoKS0+ZGlkTGF5b3V0KCk7CiAjZW5kaWYKICAgICAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkocmV2aXNpb24gMTU2NDA0
KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsMTUgKzY2LDE1IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmdzJiBzZXR0aW5ncykKLSAgICA6IG1f
b3JpZ2luYWxDU1NFeGNsdXNpb25zRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NF
eGNsdXNpb25zRW5hYmxlZCgpKQotICAgICwgbV9vcmlnaW5hbENTU1NoYXBlc0VuYWJsZWQoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCgpKQorICAgIDogbV9vcmlnaW5h
bENTU0V4Y2x1c2lvbnNFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSkKKyAgICAsIG1fb3JpZ2luYWxDU1NTaGFwZXNF
bmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzU2hhcGVz
RW5hYmxlZCgpKQogICAgICwgbV9vcmlnaW5hbENTU1ZhcmlhYmxlc0VuYWJsZWQoc2V0dGluZ3Mu
Y3NzVmFyaWFibGVzRW5hYmxlZCgpKQogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgICwgbV9v
cmlnaW5hbFNoYWRvd0RPTUVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9N
RW5hYmxlZCgpKQotICAgICwgbV9vcmlnaW5hbEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRF
bmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1l
bnRFbmFibGVkKCkpCisgICAgLCBtX29yaWdpbmFsU2hhZG93RE9NRW5hYmxlZChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkKKyAgICAs
IG1fb3JpZ2luYWxBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1l
bnRFbmFibGVkKCkpCiAjZW5kaWYKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgICwgbV9v
cmlnaW5hbFN0eWxlU2NvcGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5h
YmxlZCgpKQorICAgICwgbV9vcmlnaW5hbFN0eWxlU2NvcGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpCiAjZW5kaWYKICAgICAs
IG1fb3JpZ2luYWxFZGl0aW5nQmVoYXZpb3Ioc2V0dGluZ3MuZWRpdGluZ0JlaGF2aW9yVHlwZSgp
KQogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC04NSw3ICs4NSw3IEBAIEludGVybmFs
U2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFNldHRpbmcKICAgICAsIG1fb3JpZ2luYWxNZWRpYVR5
cGVPdmVycmlkZShzZXR0aW5ncy5tZWRpYVR5cGVPdmVycmlkZSgpKQogICAgICwgbV9vcmlnaW5h
bENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcoc2V0dGluZ3MuY2FudmFzVXNlc0FjY2VsZXJh
dGVkRHJhd2luZygpKQogICAgICwgbV9vcmlnaW5hbE1vY2tTY3JvbGxiYXJzRW5hYmxlZChzZXR0
aW5ncy5tb2NrU2Nyb2xsYmFyc0VuYWJsZWQoKSkKLSAgICAsIG1fbGFuZ0F0dHJpYnV0ZUF3YXJl
Rm9ybUNvbnRyb2xVSUVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGFuZ0F0dHJpYnV0
ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKKyAgICAsIG1fbGFuZ0F0dHJpYnV0ZUF3YXJl
Rm9ybUNvbnRyb2xVSUVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQogICAgICwgbV9p
bWFnZXNFbmFibGVkKHNldHRpbmdzLmFyZUltYWdlc0VuYWJsZWQoKSkKICAgICAsIG1fbWluaW11
bVRpbWVySW50ZXJ2YWwoc2V0dGluZ3MubWluRE9NVGltZXJJbnRlcnZhbCgpKQogI2lmIEVOQUJM
RShWSURFT19UUkFDSykKQEAgLTEwMiwxNSArMTAyLDE1IEBAIEludGVybmFsU2V0dGluZ3M6OkJh
Y2t1cDo6QmFja3VwKFNldHRpbmcKIAogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJl
c3RvcmVUbyhTZXR0aW5ncyYgc2V0dGluZ3MpCiB7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQobV9vcmlnaW5hbENTU0V4Y2x1c2lvbnNFbmFibGVk
KTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NTaGFwZXNFbmFibGVkKG1fb3Jp
Z2luYWxDU1NTaGFwZXNFbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKG1fb3JpZ2luYWxDU1NFeGNsdXNp
b25zRW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5zZXRDU1NTaGFwZXNFbmFibGVkKG1fb3JpZ2luYWxDU1NTaGFwZXNFbmFibGVkKTsKICAgICBz
ZXR0aW5ncy5zZXRDU1NWYXJpYWJsZXNFbmFibGVkKG1fb3JpZ2luYWxDU1NWYXJpYWJsZXNFbmFi
bGVkKTsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzZXRTaGFkb3dET01FbmFibGVkKG1fb3JpZ2luYWxTaGFkb3dET01FbmFibGVkKTsKLSAgICBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5h
YmxlZChtX29yaWdpbmFsQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQpOworICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2hhZG93RE9NRW5h
YmxlZChtX29yaWdpbmFsU2hhZG93RE9NRW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5h
YmxlZChtX29yaWdpbmFsQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQobV9vcmlnaW5hbFN0eWxlU2NvcGVkKTsKKyAgICBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFN0eWxlU2NvcGVkRW5hYmxl
ZChtX29yaWdpbmFsU3R5bGVTY29wZWQpOwogI2VuZGlmCiAgICAgc2V0dGluZ3Muc2V0RWRpdGlu
Z0JlaGF2aW9yVHlwZShtX29yaWdpbmFsRWRpdGluZ0JlaGF2aW9yKTsKICNpZiBFTkFCTEUoVEVY
VF9BVVRPU0laSU5HKQpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6
QmFja3VwOjpyZXN0b3JlVG8KICAgICBzZXR0aW5ncy5zZXRNZWRpYVR5cGVPdmVycmlkZShtX29y
aWdpbmFsTWVkaWFUeXBlT3ZlcnJpZGUpOwogICAgIHNldHRpbmdzLnNldENhbnZhc1VzZXNBY2Nl
bGVyYXRlZERyYXdpbmcobV9vcmlnaW5hbENhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcpOwog
ICAgIHNldHRpbmdzLnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChtX29yaWdpbmFsTW9ja1Njcm9s
bGJhcnNFbmFibGVkKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMYW5nQXR0cmli
dXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250
cm9sVUlFbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKG1fbGFuZ0F0dHJp
YnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOwogICAgIHNldHRpbmdzLnNldEltYWdlc0Vu
YWJsZWQobV9pbWFnZXNFbmFibGVkKTsKICAgICBzZXR0aW5ncy5zZXRNaW5ET01UaW1lckludGVy
dmFsKG1fbWluaW11bVRpbWVySW50ZXJ2YWwpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKQEAg
LTIxNSw3ICsyMTUsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFNoYWRvd0RPTUVuYWJs
CiAgICAgfQogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxlZCk7CiAj
ZWxzZQogICAgIC8vIEV2ZW4gU0hBRE9XX0RPTSBpcyBvZmYsIEludGVybmFsU2V0dGluZ3MgYWxs
b3dzIHNldFNoYWRvd0RPTUVuYWJsZWQoZmFsc2UpIHRvCiAgICAgLy8gaGF2ZSBicm9hZGVyIHRl
c3QgY292ZXJhZ2UuIEJ1dCBpdCBjYW5ub3QgYmUgc2V0U2hhZG93RE9NRW5hYmxlZCh0cnVlKS4K
QEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFNoYWRvd0RPTUVu
YWJsCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1l
bnRFbmFibGVkKGJvb2wgaXNFbmFibGVkKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRF
bmFibGVkKGlzRW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5zZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChpc0VuYWJsZWQp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXNFbmFibGVkKTsKICNlbmRpZgpAQCAtMjM2LDcg
KzIzNiw3IEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0QXV0aG9yU2hhZG93RE8KIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
ICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dFN0eWxlU2NvcGVkRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNldFN0eWxlU2NvcGVkRW5hYmxlZChlbmFibGVkKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC0zNDYsMTMgKzM0NiwxMyBA
QCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFRleHRBdXRvc2l6aW5nCiB2b2lkIEludGVybmFs
U2V0dGluZ3M6OnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRDU1NFeGNsdXNpb25zRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKGVu
YWJsZWQpOwogfQogCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldENTU1NoYXBlc0VuYWJsZWQo
Ym9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBVTlVTRURfUEFSQU0oZWMp
OwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1NoYXBlc0VuYWJsZWQoZW5hYmxl
ZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NT
aGFwZXNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldENT
U1ZhcmlhYmxlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTQ0
OSw3ICs0NDksNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldFN0b3JhZ2VCbG9ja2luCiAK
IHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQoYm9vbCBlbmFibGVkKQogewotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0TGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxTZXR0
aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpJ
bmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDktMjUgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUnVudGltZUVu
YWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4My4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6b3ZlcnJpZGVC
b29sUHJlZmVyZW5jZUZvclRlc3RSdW5uZXIpOiBVc2UKKyAgICAgICAgU2luZ2xldG9uIGFjY2Vz
c29yLgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0U2hhZG93RE9NRW5hYmxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRDU1NSZWdpb25zRW5hYmxl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRDU1NDb21wb3NpdGluZ0Vu
YWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6c2V0U2VhbWxlc3NJRnJh
bWVzRW5hYmxlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyk6IERpdHRvLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplV2ViUHJvY2Vzcyk6IERpdHRvLgorCiAyMDEz
LTA5LTI1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgog
CiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGggUXQgNS4yIFF0UG9zaXRpb24gbW9kdWxlCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTE5MSwxMiArMTkxLDEyIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRl
Qm9vbFByZWZlcmUKIAogI2lmIEVOQUJMRShDU1NfUkVHSU9OUykKICAgICBpZiAocHJlZmVyZW5j
ZSA9PSAiV2ViS2l0Q1NTUmVnaW9uc0VuYWJsZWQiKQotICAgICAgICBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChlbmFi
bGVkKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICBpZiAocHJl
ZmVyZW5jZSA9PSAiV2ViS2l0Q1NTQ29tcG9zaXRpbmdFbmFibGVkIikKLSAgICAgICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOworICAg
ICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU0NvbXBv
c2l0aW5nRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogCiAgICAgLy8gTWFwIHRoZSBuYW1lcyB1
c2VkIGluIExheW91dFRlc3RzIHdpdGggdGhlIG5hbWVzIHVzZWQgaW4gV2ViQ29yZTo6U2V0dGlu
Z3MgYW5kIFdlYlByZWZlcmVuY2VzU3RvcmUuCkBAIC02NDYsNyArNjQ2LDcgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZTo6c2V0U2VyaWFsTG9hZGluZ0VuYQogdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0
U2hhZG93RE9NRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00p
Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVk
KTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNoYWRv
d0RPTUVuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsK
ICNlbmRpZgpAQCAtNjU1LDcgKzY1NSw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFNoYWRv
d0RPTUVuYWJsZWQKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldENTU1JlZ2lvbnNFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChlbmFi
bGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC02NjQs
NyArNjY0LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q1NTUmVnaW9uc0VuYWJsZQogdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkK
IHsKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChlbmFi
bGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC02NzMs
NyArNjczLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0Q1NTQ29tcG9zaXRpbmdFbgogdm9p
ZCBJbmplY3RlZEJ1bmRsZTo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChib29sIGVuYWJsZWQp
CiB7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChl
bmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZp
c2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0OTEsOCArMjQ5MSw4IEBAIHZvaWQgV2ViUGFnZTo6
dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2UKICAgICBzZXR0aW5ncy5zZXRTaG93VGlsZWRTY3Jv
bGxpbmdJbmRpY2F0b3Ioc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
Ojp0aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGVLZXkoKSkpOwogICAgIHNldHRpbmdzLnNl
dEFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OmFnZ3Jlc3NpdmVUaWxlUmV0ZW50aW9uRW5hYmxlZEtleSgpKSk7
CiAgICAgc2V0dGluZ3Muc2V0Q1NTQ3VzdG9tRmlsdGVyRW5hYmxlZChzdG9yZS5nZXRCb29sVmFs
dWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc0N1c3RvbUZpbHRlckVuYWJsZWRLZXkoKSkp
OwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzUmVnaW9uc0VuYWJsZWRL
ZXkoKSkpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0NvbXBvc2l0aW5nRW5h
YmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc0NvbXBv
c2l0aW5nRW5hYmxlZEtleSgpKSk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OmNzc1JlZ2lvbnNFbmFibGVkS2V5KCkpKTsKKyAgICBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU0NvbXBvc2l0aW5nRW5hYmxl
ZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc0NvbXBvc2l0
aW5nRW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0Q1NTR3JpZExheW91dEVuYWJsZWQo
c3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NHcmlkTGF5b3V0
RW5hYmxlZEtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0UmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxl
ZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnJlZ2lvbkJhc2Vk
Q29sdW1uc0VuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldFdlYkdMRW5hYmxlZChzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OndlYkdMRW5hYmxlZEtleSgp
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQu
Y3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dl
YlByb2Nlc3NRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByCiAgICAgfQogI2VuZGlmCiAKLSAgICBXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTcGVlY2hJbnB1dEVuYWJsZWQoZmFsc2Up
OworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2V0U3BlZWNoSW5wdXRFbmFibGVkKGZhbHNlKTsKIAogICAgIC8vIFdlJ2xsIG9ubHkgaW5zdGFs
bCB0aGUgUXQgYnVpbHRpbiBidW5kbGUgaWYgd2UgZG9uJ3QgaGF2ZSBvbmUgZ2l2ZW4gYnkgdGhl
IFVJIHByb2Nlc3MuCiAgICAgLy8gQ3VycmVudGx5IG9ubHkgV1RSIHByb3ZpZGVzIGl0cyBvd24g
YnVuZGxlLgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDktMjQgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dpbmRvd3NdIFJl
ZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24gCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dl
YktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKyAgICAgICAgRXhwb3Nl
IHNpbmdsZXRvbiBhY2Nlc3NvciBmb3IgRExMIGNsaWVudHMuCisKIDIwMTMtMDktMjUgIEFsbGFu
IFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0
XSBGaXggYnVpbGQgd2l0aCBRdCA1LjIgUXRQb3NpdGlvbiBtb2R1bGUKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMu
ZGVmLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0
RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCShyZXZpc2lvbiAxNTY0MDQpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJL
aXRFeHBvcnRzLmRlZi5pbgkod29ya2luZyBjb3B5KQpAQCAtMjM3LDggKzIzNyw2IEBAIEVYUE9S
VFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0
b3JDb250cm9sbGVyQFdlYkNvcmVAQFFBRVhYWiwgP2Rpc2Nvbm5lY3RGcm9udGVuZEBJbnNwZWN0
b3JDb250cm9sbGVyQFdlYkNvcmVAQFFFQUFYWFopCiAjZW5kaWYKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBCVk5vZGVAMUBA
WiwgP2lzQWN0aXZlSW5zZXJ0aW9uUG9pbnRAV2ViQ29yZUBAWUFfTlBFQlZOb2RlQDFAQFopCi0g
ICAgICAgID9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVhdHVyZXNAV2Vi
Q29yZUBAMF9OQQotICAgICAgICA/aXNDU1NTaGFwZXNFbmFibGVkQFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXNAV2ViQ29yZUBAMF9OQQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXNQcmVsb2Fk
ZWRAQ2FjaGVkUmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUJFX05BQlZTdHJpbmdAV1RGQEBAWiwg
P2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9hZGVyQFdlYkNvcmVAQFFFQkFfTkFFQlZTdHJp
bmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2pzQXJyYXlAV2ViQ29yZUBA
WUE/QVZKU1ZhbHVlQEpTQ0BAUEFWRXhlY1N0YXRlQDNAUEFWSlNET01HbG9iYWxPYmplY3RAMUBW
PyRQYXNzUmVmUHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaLCA/anNBcnJheUBX
ZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQRUFWRXhlY1N0YXRlQDNAUEVBVkpTRE9NR2xvYmFs
T2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3RyaW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWikK
ICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudEBXZWJDb3JlQEBRQkVfTlhaLCA/bGFzdENoYW5nZVdhc1VzZXJF
ZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50QFdlYkNvcmVAQFFFQkFfTlhaKQpAQCAtMjk5
LDYgKzI5Nyw3IEBAIEVYUE9SVFMKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NldFBzZXVk
b0BFbGVtZW50QFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBAWiwgP3NldFBzZXVk
b0BFbGVtZW50QFdlYkNvcmVAQFFFQUFYQUVCVkF0b21pY1N0cmluZ0BXVEZAQEBaKQogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0TWVkaWFUeXBlT3ZlcnJpZGVAU2V0dGluZ3NAV2ViQ29y
ZUBAUUFFWEFCVlN0cmluZ0BXVEZAQEBaLCA/c2V0TWVkaWFUeXBlT3ZlcnJpZGVAU2V0dGluZ3NA
V2ViQ29yZUBAUUVBQVhBRUJWU3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZTZXR0aW5nc0AyQFhaLCA/c2V0
dGluZ3NARG9jdW1lbnRAV2ViQ29yZUBAUUVCQVBFQVZTZXR0aW5nc0AyQFhaKQorICAgICAgICA/
c2hhcmVkRmVhdHVyZXNAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEBTQUFBVjEyQFha
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zdWJzdHJpbmdAU3RyaW5nQFdURkBAUUJFP0FW
MTJASUlAWiwgP3N1YnN0cmluZ0BTdHJpbmdAV1RGQEBRRUJBP0FWMTJASUlAWikKICAgICAgICAg
c3ltYm9sV2l0aFBvaW50ZXIoP3N1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29y
ZUBAUUJFQUJWU3RyaW5nQFdURkBAWFosID9zdWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50
QFdlYkNvcmVAQFFFQkFBRUJWU3RyaW5nQFdURkBAWFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2lu
dGVyKD90YXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUJFQUJWU3RyaW5nQFdURkBAWFosID90
YXJnZXRASGlzdG9yeUl0ZW1AV2ViQ29yZUBAUUVCQUFFQlZTdHJpbmdAV1RGQEBYWikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
IEBACisyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRT
dXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnQ6OnNldFN0eWxlU2NvcGVkRW5hYmxlZCk6IHVzZQorICAgICAgICBzaW5nbGV0b24g
YWNjZXNzb3IuCisKIDIwMTMtMDktMjMgIEphY2t5IEppYW5nICA8emhhamlhbmdAYmxhY2tiZXJy
eS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFBvb3IgcmVuZGVyaW5nIG9wZW5pbmcgYSBH
b29nbGUgbWFwIHNob3J0IGxpbmsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNw
cAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0
ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xMjUsNyAr
MTI1LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNjYWxlUGFnZUJ5KAogI2lmIEVO
QUJMRShTVFlMRV9TQ09QRUQpCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0U3R5bGVT
Y29wZWRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTdHlsZVNjb3BlZEVuYWJsZWQoZW5hYmxlZCk7CiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQorKysgU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4My4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNldENTU1JlZ2lvbnNFbmFibGVkKTogVXNlIHNpbmdsZXRvbi4KKyAgICAg
ICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6
IERpdHRvLgorICAgICAgICAqIGV3ay9ld2tfc2V0dGluZ3MuY3BwOgorICAgICAgICAoZXdrX3Nl
dHRpbmdzX3NoYWRvd19kb21fZW5hYmxlX2dldCk6IERpdHRvLgorICAgICAgICAoZXdrX3NldHRp
bmdzX3NoYWRvd19kb21fZW5hYmxlX3NldCk6CisgICAgICAgICogZXdrL2V3a192aWV3LmNwcDoK
KyAgICAgICAgKF9ld2tfdmlld19wcml2X25ldyk6IERpdHRvLgorCiAyMDEzLTA5LTIwICBNYXJp
byBTYW5jaGV6IFByYWRhICA8bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0FU
S10gRG8gbm90IGV4cG9zZSBhcmlhLWhlbHAgaW4gQVRLIGJhc2VkIHBsYXRmb3JtcwpJbmRleDog
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAxMSBQcm9GVVNJ
T04gZW1iZWRkZWQgc3lzdGVtcwogICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0
cm9uaWNzCiAgICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTMyMCwxMyArMzIxLDEzIEBAIHZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDU1NSZWcKIHsKICAgICBEUlRfU1VQUFJU
X1BBR0VfR0VUX09SX1JFVFVSTihld2tWaWV3LCBwYWdlKTsKIAotICAgIFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKGVuYWJsZWQpOworICAgIFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVn
aW9uc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
OjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUo
SUZSQU1FX1NFQU1MRVNTKQotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVk
KGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxNTY0MDQp
CisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMiw2ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQcm9GVVNJT04g
ZW1iZWRkZWQgc3lzdGVtcwogICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFNhbXN1bmcgRWxl
Y3Ryb25pY3MKICAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0yNTUsNyArMjU2LDcgQEAgdm9pZCBld2tfc2V0dGluZ3Nfb2JqZWN0
X2NhY2hlX2VuYWJsZV9zZQogRWluYV9Cb29sIGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJs
ZV9nZXQoKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIHJldHVybiBXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9N
RW5hYmxlZCgpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKQEAgLTI2NSw3ICsy
NjYsNyBAQCBFaW5hX0Jvb2wgZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxlCiB7CiAjaWYg
RU5BQkxFKFNIQURPV19ET00pCiAgICAgZW5hYmxlID0gISFlbmFibGU7Ci0gICAgV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGUpOworICAg
IFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2hh
ZG93RE9NRW5hYmxlZChlbmFibGUpOwogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oZW5hYmxlKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAkocmV2
aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBQ
cm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcwogICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MKICAgICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRp
b24KKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC03MzYsOSArNzM3LDkgQEAgc3RhdGljIEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogX2V3a192aWV3XwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0U2Fu
c1NlcmlmRm9udEZhbWlseSgic2FucyIpOwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0U3Rh
bmRhcmRGb250RmFtaWx5KCJzYW5zIik7CiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQoZmFsc2UpOwotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKHRydWUpOworICAgIFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQo
dHJ1ZSk7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKHRydWUpOworICAgIFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxl
c3NJRnJhbWVzRW5hYmxlZCh0cnVlKTsKICNlbmRpZgogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+
c2V0U2NyaXB0RW5hYmxlZCh0cnVlKTsKICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFBsdWdp
bnNFbmFibGVkKHRydWUpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQor
KysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4My4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHA6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OnNldENTU1JlZ2lvbnNFbmFibGVkKTogVXNlIHNpbmdsZXRvbi4K
KyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0RXhwZXJpbWVudGFsQ29udGVu
dFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVl
U3VwcG9ydEd0azo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OnNldFNoYWRvd0RPTUVuYWJsZWQpOgorICAgICAgICAoRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQpOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld191cGRhdGVf
c2V0dGluZ3MpOiBEaXR0by4KKwogMjAxMy0wOS0yNCAgTG9yZW56byBUaWx2ZSAgPGx0aWx2ZUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBjb21waWxhdGlvbiBwcm9ibGVtcyB3aGVu
IHNldHRpbmcgRU5BQkxFX0RSQUdfU1VQUE9SVCA9IEZBTFNFCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0ay5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMsNyArMyw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDEwIEpvb25lIEh1ciA8am9vbmVAa2xk
cC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKiAgQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQg
KEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYwpAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrOjpzZXRDU1NHcmkKIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENTU1Jl
Z2lvbnNFbmFibGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgZW5hYmxlZCkKIHsKLSAg
ICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsK
KyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lv
bnNFbmFibGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c2V0Q1NTQ3VzdG9tRmlsdGVyRW5hYmxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBib29sIGVu
YWJsZWQpCkBAIC01ODgsMjggKzU4OCwyOCBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0
azo6c2V0Q1NTQ3VzCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0RXhwZXJpbWVu
dGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
ICNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0RXhw
ZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGVuYWJsZWQpOwor
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0RXhwZXJpbWVu
dGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGVuYWJsZWQpOwogI2VuZGlm
CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTZWFtbGVzc0lGcmFtZXNF
bmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxl
ZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWFt
bGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOwogI2VuZGlmCiB9CiAKIHZvaWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpzZXRTaGFkb3dET01FbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFk
b3dET01FbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogfQogCiB2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0U3R5bGVTY29wZWRFbmFibGVkKGJvb2wg
ZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQotICAgIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFN0eWxlU2NvcGVkRW5hYmxlZChlbmFi
bGVkKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyLDYgKzEyLDcgQEAKICAq
ICBDb3B5cmlnaHQgKEMpIDIwMDkgQm9iYnkgUG93ZXJzCiAgKiAgQ29weXJpZ2h0IChDKSAyMDEw
IEpvb25lIEh1ciA8am9vbmVAa2xkcC5vcmc+CiAgKiAgQ29weXJpZ2h0IChDKSAyMDEyIElnYWxp
YSBTLkwuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTM1ODMsNyArMzU4NCw3IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGkKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1F
RElBX1NUUkVBTSkKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRNZWRp
YVN0cmVhbUVuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVNZWRpYVN0cmVhbSk7CisgICAg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRNZWRp
YVN0cmVhbUVuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVNZWRpYVN0cmVhbSk7CiAjZW5k
aWYKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMgYXMgYSBTaW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMjE4ODMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcg
X3ByZWZlcmVuY2VzQ2hhbmdlZDpdKTogVXNlIHNpbmdsZXRvbiBhY2Nlc3Nvci4KKyAgICAgICAg
KC1bV2ViVmlldyBfc2V0RGFzaGJvYXJkQmVoYXZpb3I6dG86XSk6IERpdHRvLgorCiAyMDEzLTA5
LTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgSlND
IGRlYnVnIGhvb2tzIHRvIHBhc3MgYSBDYWxsRnJhbWUqIGluc3RlYWQgb2YgYSBEZWJ1Z2dlckNh
bGxGcmFtZS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9u
IDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
RGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAx
MCBJZ2FsaWEgUy5MCiAgKgpAQCAtMTUyMSwxMyArMTUyMSwxMyBAQCAtICh2b2lkKV9wcmVmZXJl
bmNlc0NoYW5nZWQ6KFdlYlByZWZlcmVuCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgIHNl
dHRpbmdzLnNldENTU0N1c3RvbUZpbHRlckVuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc0N1c3RvbUZp
bHRlckVuYWJsZWRdKTsKICNlbmRpZgotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENT
U1JlZ2lvbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBjc3NSZWdpb25zRW5hYmxlZF0pOwotICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChbcHJlZmVyZW5j
ZXMgY3NzQ29tcG9zaXRpbmdFbmFibGVkXSk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChbcHJlZmVyZW5jZXMgY3NzUmVn
aW9uc0VuYWJsZWRdKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChbcHJlZmVyZW5jZXMgY3NzQ29tcG9zaXRpbmdF
bmFibGVkXSk7CiAjaWYgRU5BQkxFKFdFQl9BVURJTykKICAgICBzZXR0aW5ncy5zZXRXZWJBdWRp
b0VuYWJsZWQoW3ByZWZlcmVuY2VzIHdlYkF1ZGlvRW5hYmxlZF0pOwogI2VuZGlmCiAjaWYgRU5B
QkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFt
bGVzc0lGcmFtZXNFbmFibGVkKFtwcmVmZXJlbmNlcyBzZWFtbGVzc0lGcmFtZXNFbmFibGVkXSk7
CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWFtbGVz
c0lGcmFtZXNFbmFibGVkKFtwcmVmZXJlbmNlcyBzZWFtbGVzc0lGcmFtZXNFbmFibGVkXSk7CiAj
ZW5kaWYKICAgICBzZXR0aW5ncy5zZXRDU1NHcmlkTGF5b3V0RW5hYmxlZChbcHJlZmVyZW5jZXMg
Y3NzR3JpZExheW91dEVuYWJsZWRdKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0y
MTg2LDcgKzIxODYsNyBAQCAtICh2b2lkKV9zZXREYXNoYm9hcmRCZWhhdmlvcjooV2ViRGFzaGJv
CiAgICAgICAgICAgICBpZiAoX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgICAgICAgICAgX3ByaXZh
dGUtPnBhZ2UtPnNldHRpbmdzKCkuc2V0VXNlc0Rhc2hib2FyZEJhY2t3YXJkQ29tcGF0aWJpbGl0
eU1vZGUoZmxhZyk7CiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotICAg
ICAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGVnYWN5Q1NTVmVuZG9yUHJlZml4
ZXNFbmFibGVkKGZsYWcpOworICAgICAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zZXRMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoZmxhZyk7CiAj
ZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwko
cmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
IGFzIGEgU2luZ2xldG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIxODgzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3NQ
cml2YXRlOjphcHBseSk6IFVzZSBzaW5nbGV0b24gYWNjZXNzb3IuCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwOgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0UXQ6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOiBEaXR0by4KKwogMjAx
My0wOS0yNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4K
IAogICAgICAgICBbUXRdIEZpeCBidWlsZCB3aXRoIFF0IDUuMiBRdFBvc2l0aW9uIG1vZHVsZQpJ
bmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxNTY0MDQp
CisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNiBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAt
MTczLDEwICsxNzQsMTAgQEAgdm9pZCBRV2ViU2V0dGluZ3NQcml2YXRlOjphcHBseSgpCiAKICAg
ICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTUmVnaW9uc0Vu
YWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NSZWdpb25zRW5hYmxlZCkpOwotICAgICAgICBXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZCh2YWx1ZSk7
CisgICAgICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0
ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NDb21wb3NpdGluZ0VuYWJsZWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRp
bmdzOjpDU1NDb21wb3NpdGluZ0VuYWJsZWQpKTsKLSAgICAgICAgV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKHZhbHVlKTsKKyAgICAgICAg
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1ND
b21wb3NpdGluZ0VuYWJsZWQodmFsdWUpOwogICAgICAgICB2YWx1ZSA9IGF0dHJpYnV0ZXMudmFs
dWUoUVdlYlNldHRpbmdzOjpDU1NHcmlkTGF5b3V0RW5hYmxlZCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNT
U0dyaWRMYXlvdXRFbmFibGVkKSk7CiAgICAgICAgIHNldHRpbmdzLT5zZXRDU1NHcmlkTGF5b3V0
RW5hYmxlZCh2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkocmV2aXNpb24gMTU2
NDA0KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgICAgQ29weXJpZ2h0
IChDKSAyMDEwIFJvYmVydCBIb2dhbiA8cm9iZXJ0QHJvYmVydGhvZ2FuLm5ldD4KICAgICBDb3B5
cmlnaHQgKEMpIDIwMDgsMjAwOSwyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBT
ZXJ2aWNlcyBJbmMuCi0gICAgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEyIEFwcGxlIEluYy4KKyAg
ICBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLgogCiAgICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgog
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
Z2V0VHJhY2tlZAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0U2VhbWxlc3NJRnJh
bWVzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykK
LSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNF
bmFibGVkKGVuYWJsZWQpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVkKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wOS0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0b3IgUnVudGltZUVu
YWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3Ojpu
b3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29yCisKIDIwMTMt
MDktMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dp
bmRvd3NdIFVucmV2aWV3ZWQgY3Jhc2ggZml4IGFmdGVyIHIxNTYzMjEuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJWaWV3LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3ODMsMTIgKzQ3ODMsMTIgQEAgSFJFU1VMVCBXZWJW
aWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZQogICAgIGhyID0gcHJlZmVyZW5jZXMtPmlzQ1NT
UmVnaW9uc0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICBy
ZXR1cm4gaHI7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJs
ZWQoISFlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldENTU1JlZ2lvbnNFbmFibGVkKCEhZW5hYmxlZCk7CiAKICAgICBociA9IHByZWZlcmVu
Y2VzLT5hcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJTEVE
KGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoISFlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoISFlbmFi
bGVkKTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoJmVu
YWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212620</attachid>
            <date>2013-09-25 13:39:01 -0700</date>
            <delta_ts>2013-09-25 14:15:20 -0700</delta_ts>
            <desc>Removed typo from WebCore.exp.in</desc>
            <filename>bug-121883-20130925133845.patch</filename>
            <type>text/plain</type>
            <size>129457</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzNCBAQAorMjAxMy0wOS0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0
b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgV2luZG93
cyBpcyBleHBlcmllbmNpbmcgY3Jhc2hlcyB3aGVuIGNsaWVudCBwcm9ncmFtcyAoc3VjaCBhcwor
ICAgICAgICBEdW1wUmVuZGVyVHJlZSkgYXR0ZW1wIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUg
UnVudGltZUVuYWJsZWRGZWF0dXJlcworICAgICAgICBvYmplY3QuIFRoZSBpbmxpbmVkIHN0YXRp
YyBhY2Nlc3NvciBtZXRob2RzIGFyZSBub3QgYWNjZXNzaW5nCisgICAgICAgIG1lbW9yeSBzYWZl
bHkgKHdoZW4gY29tcGlsZWQgYnkgVmlzdWFsIFN0dWRpbykgcmVzdWx0aW5nIGluCisgICAgICAg
IGNyYXNoZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjogUmVtb3ZlIHN0YXRpYyBhY2Nlc3NvcnMgZm9yIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuCisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcDogU3dpdGNoIG1ldGhvZHMgdG8KKyAgICAgICAgY29uZm9ybSB0byBhIHNp
bmdsZXRvbiBwYXR0ZXJuLgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6UnVudGltZUVuYWJsZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZpbGVTeXN0ZW1FbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmphdmFTY3JpcHRJMThOQVBJRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1l
ZGlhRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhQ29udHJvbGxl
ckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVk
aWFFcnJvckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6dGltZVJhbmdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlU3luY0VuYWJsZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExvY2FsU3Rv
cmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2Vzc2lvblN0b3JhZ2VFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdE5vdGlmaWNhdGlvbnNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdE5v
dGlmaWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldERhdGFUcmFuc2Zlckl0ZW1zRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkYXRhVHJh
bnNmZXJJdGVtc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0R2VvbG9jYXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Omdlb2xvY2F0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJraXRJbmRleGVkREJFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEluZGV4ZWREQkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5kZXhlZERC
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRD
YW52YXNQYXRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjYW52YXNQYXRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRDU1NFeGNsdXNpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NTaGFwZXNFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1NoYXBlc0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9u
c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3Nz
UmVnaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEZ1
bGxTY3JlZW5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldFdlYmtpdEZ1bGxTY3JlZW5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRJc0Z1bGxT
Y3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdEZ1bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZEVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5F
bGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbHNjcmVlbkVs
ZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6dG91Y2hFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFRvdWNoRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXREZXZpY2VNb3Rpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmlj
ZU1vdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6ZGV2aWNlTW90aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Om9uZGV2aWNlbW90aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXREZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRp
b25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRl
dmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Om9uZGV2aWNlb3JpZW50YXRpb25FbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNwZWVjaElucHV0RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzcGVlY2hJbnB1dEVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0U3Bl
ZWNoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRHcmFtbWFyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRTY3JpcHRlZFNwZWVjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2NyaXB0ZWRTcGVlY2hFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaFJlY29nbml0aW9uRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRT
cGVlY2hSZWNvZ25pdGlvbkVycm9yRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbkV2ZW50RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hHcmFt
bWFyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0RmlsZVN5c3RlbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SmF2YVNjcmlwdEkxOE5BUElFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhU3RyZWFtRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRNZWRp
YVN0cmVhbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0R2V0VXNlck1lZGlhRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRNZWRpYVN0cmVhbUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6cGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFBlZXJDb25uZWN0aW9u
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0TGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZp
eGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRXZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0R2V0R2FtZXBhZHNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnF1b3RhRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRRdW90YUVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFTb3VyY2VFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU291cmNlRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjplbmNyeXB0
ZWRNZWRpYUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0RW5jcnlwdGVkTWVkaWFFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdFZpZGVvVHJhY2tFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93
RE9NRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjph
dXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjdXN0b21E
T01FbGVtZW50c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0Q3VzdG9tRE9NRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVEYXRl
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1
dFR5cGVEYXRlVGltZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0SW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldElucHV0VHlwZURh
dGVUaW1lTG9jYWxFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlucHV0VHlwZU1vbnRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVNb250aEVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlVGltZUVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5wdXRUeXBlVGltZUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRU
eXBlV2Vla0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0SW5wdXRUeXBlV2Vla0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6ZXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEV4
cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZWFtbGVzc0lGcmFtZXNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNz
SUZyYW1lc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6bGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNv
bnRyb2xVSUVuYWJsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDU1NQcm9wZXJ0eU5hbWVQcmVm
aXgpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3Bl
cnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZSk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0UnVudGltZUVuYWJsZUZ1bmN0
aW9uTmFtZSk6IEdlbmVyYXRlIHNpbmdsZXRvbiB2ZXJzaW9uIG9mCisgICAgICAgIGFjY2Vzc29y
cy4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2U6OmZvbnRMb2FkZWQpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpnZXRGb250RGF0YSk6IERpdHRvLgorICAgICAgICAqIGNz
cy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9y
OjphZGRGb250RmFjZVJ1bGUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzU2ltcGxlTGVuZ3RoUHJvcGVydHlJRCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRM
b2FkZWQpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6ZW5zdXJlU2NvcGVSZXNvbHZlcik6IERpdHRvLgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3Nz
UmVnaW9uc0VuYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjc3ND
b21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNob3VsZERp
c3BsYXlTZWFtbGVzc2x5V2l0aFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Z2V0Q2FjaGVkTG9jYWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290KTogRGl0dG8uCisgICAgICAgICogZG9t
L1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3NpdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmZpbmRQYXJlbnQpOgorICAgICAgICAq
IGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpnZXRTZWxl
Y3Rpb24pOiBEaXR0by4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHBy
aW50Q29uc3RydWN0b3JJbnRlcmlvcik6IEdlbmVyYXRlIHNpbmdsZXRvbiB2ZXJzaW9uIG9mIGFj
Y2Vzc29ycy4KKyAgICAgICAgKHByaW50V3JhcHBlckZ1bmN0aW9ucyk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50Ojppc1NwZWVjaEVuYWJsZWQpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFy
YW1ldGVycyk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVs
YXllZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9y
TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dyZXNzVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRp
ZEFkZEF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
cmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
dWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9u
c1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJl
VGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpzY29wZWRBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJX
aXRoU2NvcGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6c2Nv
cGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKToKKyAgICAgICAgKiBodG1sL0lucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKTog
RGl0dG8uCisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpleHBlcmltZW50YWxGZWF0dXJlc0Vu
YWJsZWQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Q
b3N0TGF5b3V0VGFza3MpOiBEaXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNr
dXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6
cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldFNoYWRv
d0RPTUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0QXV0
aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxTZXR0aW5nczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsU2V0dGluZ3M6OnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldENTU1NoYXBlc0VuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRy
b2xVSUVuYWJsZWQpOgorCiAyMDEzLTA5LTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTU2MzU1KSBMaW5rcyAvIGludGVyYWN0aXZl
IGVsZW1lbnRzIGluc2lkZSBuZXN0ZWQgdGFibGVzIGFyZSB1bmNsaWNrYWJsZQpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03MzgsMTAgKzczOCw2IEBAIF9fWk43V2ViQ29y
ZTIxc2V0R2xvYmFsSWNvbkRhdGFiYXNlRVBOU18KIF9fWk43V2ViQ29yZTIxc2V0UGxhdGZvcm1T
dHJhdGVnaWVzRVBOU18xOFBsYXRmb3JtU3RyYXRlZ2llc0UKIF9fWk43V2ViQ29yZTIySFRNTFBs
dWdJbkltYWdlRWxlbWVudDI0cmVzdGFydFNuYXBzaG90dGVkUGx1Z0luRXYKIF9fWk43V2ViQ29y
ZTIySFRNTFBsdWdJbkltYWdlRWxlbWVudDI5c2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5F
YgotX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjNpc0NTU0NvbXBvc2l0aW5n
RW5hYmxlZEUKLV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNDU1NFeGNs
dXNpb25zRW5hYmxlZEUKLV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE4aXND
U1NTaGFwZXNFbmFibGVkRQotX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzNDBp
c0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkRQogX19aTjdXZWJDb3JlMjJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0MjZjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0V2CiBfX1pO
N1dlYkNvcmUyMlN0b3JhZ2VFdmVudERpc3BhdGNoZXIzNGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZl
bnRzVG9GcmFtZXNFUk5TXzlQYWdlR3JvdXBFUktOM1dURjZWZWN0b3JJTlMzXzZSZWZQdHJJTlNf
NUZyYW1lRUVFTG0wRU5TM18xNUNyYXNoT25PdmVyZmxvd0VFRVJLTlMzXzZTdHJpbmdFU0VfU0Vf
U0VfUE5TXzE0U2VjdXJpdHlPcmlnaW5FCiBfX1pON1dlYkNvcmUyMlVSTFdpdGhVc2VyVHlwZWRT
dHJpbmdFUDhOU1N0cmluZ1A1TlNVUkwKQEAgLTI2OTUsOCArMjY5MSw2IEBAIF9fWk43V2ViQ29y
ZTlGcmFtZVZpZXcyNXNlcnZpY2VTY3JpcHRlZEEKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQURP
V19ET00pCi1fX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMxOGlzU2hhZG93RE9N
RW5hYmxlZEUKLV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczM3aXNBdXRob3JT
aGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZEUKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlF
eGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzEwU2hhZG93Um9vdEUKICNlbmRp
ZgogCkBAIC0yNzY0LDE4ICsyNzU4LDYgQEAgX19aTjdXZWJDb3JlNFBhZ2UxMXNldFZpZXdNb2Rl
RU5TMF84VmlldwogX19aTjdXZWJDb3JlMTJXb3JrZXJUaHJlYWQxN3dvcmtlclRocmVhZENvdW50
RXYKICNlbmRpZgogCi0jaWYgRU5BQkxFKENTU19SRUdJT05TKQotX19aTjdXZWJDb3JlMjJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzMTlpc0NTU1JlZ2lvbnNFbmFibGVkRQotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzMjVhcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkRQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoTEVH
QUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCi1fX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMzMmlzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkRQotI2VuZGlmCi0KICNpZiBF
TkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQogX19aTjdXZWJDb3JlM0NETTE4cmVnaXN0ZXJDRE1G
YWN0b3J5RVBGTjNXVEYxMFBhc3NPd25QdHJJTlNfMTlDRE1Qcml2YXRlSW50ZXJmYWNlRUVFUFMw
X0VQRmJSS05TMV82U3RyaW5nRUVQRmJTQV9TQV9FCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2Vu
ZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0zNSw2ICszNiw3
IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKICNpbmNsdWRlICJTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5LmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0LmgiCisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAjaW5jbHVkZSAiQXN5bmNGaWxl
U3lzdGVtLmgiCkBAIC00MiwyMDEgKzQ0LDE4OSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNMb2NhbFN0b3JhZ2VFbmFibGVkID0gdHJ1
ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQg
PSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1dlYmtpdE5vdGlmaWNhdGlv
bnNFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpp
c0RhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzR2VvbG9jYXRpb25FbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aXNJbmRleGVkREJFbmFibGVkID0gZmFsc2U7Ci1ib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OmlzVG91Y2hFbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aXNEZXZpY2VNb3Rpb25FbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjppc1NwZWVjaElucHV0RW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzQ2FudmFzUGF0aEVuYWJsZWQgPSBmYWxzZTsKLWJvb2wgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6aXNDU1NFeGNsdXNpb25zRW5hYmxlZCA9IHRydWU7Ci1ib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzQ1NTU2hhcGVzRW5hYmxlZCA9IHRydWU7Ci1ib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzQ1NTUmVnaW9uc0VuYWJsZWQgPSBmYWxzZTsKLWJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNDU1NDb21wb3NpdGluZ0VuYWJsZWQgPSBmYWxz
ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNMYW5nQXR0cmlidXRlQXdhcmVGb3Jt
Q29udHJvbFVJRW5hYmxlZCA9IGZhbHNlOwotCitSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzKCkKKyAgICA6IG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkKHRydWUp
CisgICAgLCBtX2lzU2Vzc2lvblN0b3JhZ2VFbmFibGVkKHRydWUpCisgICAgLCBtX2lzV2Via2l0
Tm90aWZpY2F0aW9uc0VuYWJsZWQoZmFsc2UpCisgICAgLCBtX2lzQXBwbGljYXRpb25DYWNoZUVu
YWJsZWQodHJ1ZSkKKyAgICAsIG1faXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQodHJ1ZSkKKyAg
ICAsIG1faXNHZW9sb2NhdGlvbkVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNJbmRleGVkREJFbmFi
bGVkKGZhbHNlKQorICAgICwgbV9pc1RvdWNoRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc0Rldmlj
ZU1vdGlvbkVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQo
dHJ1ZSkKKyAgICAsIG1faXNTcGVlY2hJbnB1dEVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNDYW52
YXNQYXRoRW5hYmxlZChmYWxzZSkKKyAgICAsIG1faXNDU1NFeGNsdXNpb25zRW5hYmxlZCh0cnVl
KQorICAgICwgbV9pc0NTU1NoYXBlc0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNDU1NSZWdpb25z
RW5hYmxlZChmYWxzZSkKKyAgICAsIG1faXNDU1NDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpCisg
ICAgLCBtX2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoZmFsc2UpCiAj
aWYgRU5BQkxFKFNDUklQVEVEX1NQRUVDSCkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
aXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQgPSBmYWxzZTsKKyAgICAsIG1faXNTY3JpcHRlZFNwZWVj
aEVuYWJsZWQoZmFsc2UpCiAjZW5kaWYKLQogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi1ib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzTWVkaWFTdHJlYW1FbmFibGVkID0gdHJ1ZTsKLWJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQgPSB0cnVl
OworICAgICwgbV9pc01lZGlhU3RyZWFtRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1BlZXJDb25u
ZWN0aW9uRW5hYmxlZCh0cnVlKQogI2VuZGlmCi0KICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5E
T1JfUFJFRklYRVMpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzTGVnYWN5Q1NTVmVu
ZG9yUHJlZml4ZXNFbmFibGVkID0gZmFsc2U7CisgICAgLCBtX2lzTGVnYWN5Q1NTVmVuZG9yUHJl
Zml4ZXNFbmFibGVkKGZhbHNlKQogI2VuZGlmCi0KICNpZiBFTkFCTEUoR0FNRVBBRCkKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNHYW1lcGFkRW5hYmxlZCA9IGZhbHNlOworICAgICwg
bV9pc0dhbWVwYWRFbmFibGVkKGZhbHNlKQogI2VuZGlmCi0KICNpZiBFTkFCTEUoRklMRV9TWVNU
RU0pCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRmlsZVN5c3RlbUVuYWJsZWQgPSBm
YWxzZTsKKyAgICAsIG1faXNGaWxlU3lzdGVtRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0kxOE5fQVBJKQorICAgICwgbV9pc0phdmFTY3JpcHRJMThOQVBJRW5h
YmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShRVU9UQSkKKyAgICAsIG1faXNRdW90YUVu
YWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLCBt
X2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCisgICAgLCBtX2lzTWVkaWFTb3VyY2VFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShFRkwpIHx8IFBMQVRGT1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKFdJTikg
fHwgUExBVEZPUk0oUVQpCisgICAgLCBtX2lzVmlkZW9UcmFja0VuYWJsZWQodHJ1ZSkKKyNlbHNl
CisgICAgLCBtX2lzVmlkZW9UcmFja0VuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNlbmRpZgorI2lm
IEVOQUJMRShFTkNSWVBURURfTUVESUEpCisgICAgLCBtX2lzRW5jcnlwdGVkTWVkaWFFbmFibGVk
KGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgLCBtX2lzU2hhZG93
RE9NRW5hYmxlZChmYWxzZSkKKyAgICAsIG1faXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50
RW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCisgICAg
LCBtX2lzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxF
KFNUWUxFX1NDT1BFRCkKKyAgICAsIG1faXNTdHlsZVNjb3BlZEVuYWJsZWQoZmFsc2UpCisjZW5k
aWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQorICAgICwgbV9pc0lucHV0VHlwZURhdGVF
bmFibGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNP
TVBMRVRFKQorICAgICwgbV9pc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZChmYWxzZSkKKyNlbmRp
ZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpCisgICAgLCBtX2lzSW5wdXRU
eXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9U
WVBFX01PTlRIKQorICAgICwgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZCh0cnVlKQorI2VuZGlm
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfVElNRSkKKyAgICAsIG1faXNJbnB1dFR5cGVUaW1lRW5h
YmxlZCh0cnVlKQorI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKKyAgICAsIG1f
aXNJbnB1dFR5cGVXZWVrRW5hYmxlZCh0cnVlKQorI2VuZGlmCisjaWYgRU5BQkxFKENTUF9ORVhU
KQorICAgICwgbV9hcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0Vu
YWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQorICAgICwg
bV9hcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxFKEZP
TlRfTE9BRF9FVkVOVFMpCisgICAgLCBtX2lzRm9udExvYWRFdmVudHNFbmFibGVkKGZhbHNlKQor
I2VuZGlmCit7Cit9CisKK1J1bnRpbWVFbmFibGVkRmVhdHVyZXMmIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UnVu
dGltZUVuYWJsZWRGZWF0dXJlcz4gcnVudGltZUVuYWJsZWRGZWF0dXJlczsKIAorICAgIHJldHVy
biBydW50aW1lRW5hYmxlZEZlYXR1cmVzOworfQorCisjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQog
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmaWxlU3lzdGVtRW5hYmxlZCgpCiB7Ci0gICAg
cmV0dXJuIGlzRmlsZVN5c3RlbUVuYWJsZWQgJiYgQXN5bmNGaWxlU3lzdGVtOjppc0F2YWlsYWJs
ZSgpOworICAgIHJldHVybiBtX2lzRmlsZVN5c3RlbUVuYWJsZWQgJiYgQXN5bmNGaWxlU3lzdGVt
Ojppc0F2YWlsYWJsZSgpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9JMThO
X0FQSSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNKYXZhU2NyaXB0STE4TkFQSUVu
YWJsZWQgPSBmYWxzZTsKLQogYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpqYXZhU2NyaXB0
STE4TkFQSUVuYWJsZWQoKQogewotICAgIHJldHVybiBpc0phdmFTY3JpcHRJMThOQVBJRW5hYmxl
ZDsKKyAgICByZXR1cm4gbV9pc0phdmFTY3JpcHRJMThOQVBJRW5hYmxlZDsKIH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZJREVPKQotCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1ZGlv
RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1ZGlvRW5hYmxlZCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCi1ib29s
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omh0bWxNZWRpYUVsZW1lbnRFbmFibGVkKCkKK2Jvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1lZGlhRWxlbWVudEVuYWJsZWQoKSBjb25zdAog
ewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpCitib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6Omh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Omh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6Omh0bWxTb3VyY2VFbGVtZW50RW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6Om1lZGlhQ29udHJvbGxlckVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjptZWRpYUNvbnRyb2xsZXJFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gTWVkaWFQ
bGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bWVkaWFFcnJvckVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjptZWRpYUVy
cm9yRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJs
ZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnRpbWVSYW5nZXNFbmFibGVk
KCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6dGltZVJhbmdlc0VuYWJsZWQoKSBjb25z
dAogewogICAgIHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KLQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktFUlMpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZFdvcmtlckVuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRXb3JrZXJFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gU2hhcmVkV29ya2VyUmVw
b3NpdG9yeTo6aXNBdmFpbGFibGUoKTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQl9TT0NL
RVRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVkKCkKK2Jv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2ViU29ja2V0RW5hYmxlZCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdlYlNvY2tldDo6aXNBdmFpbGFibGUoKTsKIH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFi
YXNlRW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVu
YWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5p
c0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRh
YmFzZVN5bmNFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFi
YXNlU3luY0VuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBEYXRhYmFzZU1hbmFnZXI6Om1h
bmFnZXIoKS5pc0F2YWlsYWJsZSgpOwogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoUVVPVEEpCi1i
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzUXVvdGFFbmFibGVkID0gZmFsc2U7Ci0jZW5k
aWYKLQotI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aXNGdWxsU2NyZWVuQVBJRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzTWVkaWFTb3Vy
Y2VFbmFibGVkID0gZmFsc2U7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKSB8fCBQTEFU
Rk9STShCTEFDS0JFUlJZKSB8fCBQTEFURk9STShXSU4pIHx8IFBMQVRGT1JNKFFUKQotICAgIGJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNWaWRlb1RyYWNrRW5hYmxlZCA9IHRydWU7Ci0j
ZWxzZQotICAgIGJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNWaWRlb1RyYWNrRW5hYmxl
ZCA9IGZhbHNlOwotI2VuZGlmCi0jZW5kaWYKLQotI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEp
Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzRW5jcnlwdGVkTWVkaWFFbmFibGVkID0g
ZmFsc2U7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShTSEFET1dfRE9NKQotYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjppc1NoYWRvd0RPTUVuYWJsZWQgPSBmYWxzZTsKLQotYm9vbCBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjppc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkID0g
ZmFsc2U7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkID0gZmFsc2U7Ci0j
ZW5kaWYKLQotI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlzU3R5bGVTY29wZWRFbmFibGVkID0gZmFsc2U7Ci0jZW5kaWYKLQotI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0RBVEUpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5wdXRU
eXBlRGF0ZUVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9E
QVRFVElNRV9JTkNPTVBMRVRFKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0
VHlwZURhdGVUaW1lRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRf
VFlQRV9EQVRFVElNRUxPQ0FMKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0
VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElO
UFVUX1RZUEVfTU9OVEgpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5wdXRUeXBl
TW9udGhFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfVElN
RSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVUaW1lRW5hYmxlZCA9
IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCi1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmlzSW5wdXRUeXBlV2Vla0VuYWJsZWQgPSB0cnVlOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoQ1NQX05FWFQpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmFy
ZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCA9IGZhbHNl
OwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjphcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkID0gZmFsc2U7Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZCA9IGZhbHNlOwotI2VuZGlmCi0KIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCShyZXZpc2lvbiAxNTY0MDQpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIAogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQpAQCAtMzIsNiArMzMsNyBAQAogI2RlZmluZSBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzX2gKIAogI2luY2x1ZGUgIlBsYXRmb3JtRXhwb3J0TWFjcm9zLmgiCisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMzcx
ICs0MiwzODEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gZ2VuZXJhdGlvbiB0byB3b3JrIHBy
b3Blcmx5LgogCiBjbGFzcyBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSdW50aW1lRW5hYmxlZEZlYXR1cmVzKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
dm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTG9jYWxTdG9y
YWdlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGxvY2FsU3RvcmFnZUVu
YWJsZWQoKSB7IHJldHVybiBpc0xvY2FsU3RvcmFnZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldExv
Y2FsU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0xvY2FsU3RvcmFnZUVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGxvY2FsU3RvcmFnZUVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzTG9jYWxTdG9yYWdlRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0
U2Vzc2lvblN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU2Vzc2lvblN0b3JhZ2VF
bmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgc2Vzc2lvblN0b3JhZ2VFbmFi
bGVkKCkgeyByZXR1cm4gaXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNl
c3Npb25TdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzU2Vzc2lvblN0b3JhZ2VF
bmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzZXNzaW9uU3RvcmFnZUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzU2Vzc2lvblN0b3JhZ2VFbmFibGVkOyB9CiAKLSAgICBzdGF0aWMg
dm9pZCBzZXRXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1dl
YmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wg
d2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoKSB7IHJldHVybiBpc1dlYmtpdE5vdGlmaWNhdGlv
bnNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBtX2lzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KKyAgICBib29sIHdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0FwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgYXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQoKSB7IHJldHVybiBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOyB9CisgICAgdm9p
ZCBzZXRBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOyB9
CiAKLSAgICBzdGF0aWMgdm9pZCBzZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgaXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgYm9vbCBkYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQoKSB7IHJldHVybiBpc0RhdGFUcmFu
c2Zlckl0ZW1zRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0RGF0YVRyYW5zZmVySXRlbXNFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IG1faXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KKyAgICBib29sIGRhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7IH0KIAotICAgIHN0YXRpYyB2b2lkIHNldEdl
b2xvY2F0aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0dlb2xvY2F0aW9uRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGdlb2xvY2F0aW9uRW5hYmxlZCgpIHsgcmV0
dXJuIGlzR2VvbG9jYXRpb25FbmFibGVkOyB9CisgICAgdm9pZCBzZXRHZW9sb2NhdGlvbkVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0dlb2xvY2F0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQorICAgIGJvb2wgZ2VvbG9jYXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0dlb2xv
Y2F0aW9uRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0V2Via2l0SW5kZXhlZERCRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0luZGV4ZWREQkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgYm9vbCB3ZWJraXRJbmRleGVkREJFbmFibGVkKCkgeyByZXR1cm4gaXNJbmRl
eGVkREJFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgaW5kZXhlZERCRW5hYmxlZCgpIHsgcmV0
dXJuIGlzSW5kZXhlZERCRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0V2Via2l0SW5kZXhlZERCRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5kZXhlZERCRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQorICAgIGJvb2wgd2Via2l0SW5kZXhlZERCRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJ
bmRleGVkREJFbmFibGVkOyB9CisgICAgYm9vbCBpbmRleGVkREJFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0luZGV4ZWREQkVuYWJsZWQ7IH0KIAogI2lmIEVOQUJMRShDQU5WQVNfUEFUSCkK
LSAgICBzdGF0aWMgdm9pZCBzZXRDYW52YXNQYXRoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0NhbnZhc1BhdGhFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgY2FudmFz
UGF0aEVuYWJsZWQoKSB7IHJldHVybiBpc0NhbnZhc1BhdGhFbmFibGVkOyB9CisgICAgdm9pZCBz
ZXRDYW52YXNQYXRoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQ2FudmFzUGF0aEVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNhbnZhc1BhdGhFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0NhbnZhc1BhdGhFbmFibGVkOyB9CiAjZWxzZQotICAgIHN0YXRpYyB2b2lkIHNl
dENhbnZhc1BhdGhFbmFibGVkKGJvb2wpIHsgfQotICAgIHN0YXRpYyBib29sIGNhbnZhc1BhdGhF
bmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldENhbnZhc1BhdGhFbmFibGVk
KGJvb2wpIHsgfQorICAgIGJvb2wgY2FudmFzUGF0aEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX0VYQ0xVU0lPTlMpCi0gICAgc3RhdGlj
IHZvaWQgc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NFeGNs
dXNpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGNzc0V4Y2x1c2lv
bnNFbmFibGVkKCkgeyByZXR1cm4gaXNDU1NFeGNsdXNpb25zRW5hYmxlZDsgfQorICAgIHZvaWQg
c2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0NTU0V4Y2x1c2lv
bnNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNDU1NFeGNsdXNpb25zRW5hYmxlZDsgfQogI2Vsc2UKLSAgICBz
dGF0aWMgdm9pZCBzZXRDU1NFeGNsdXNpb25zRW5hYmxlZChib29sKSB7IH0KLSAgICBzdGF0aWMg
Ym9vbCBjc3NFeGNsdXNpb25zRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9pZCBz
ZXRDU1NFeGNsdXNpb25zRW5hYmxlZChib29sKSB7IH0KKyAgICBib29sIGNzc0V4Y2x1c2lvbnNF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENT
U19TSEFQRVMpCi0gICAgc3RhdGljIHZvaWQgc2V0Q1NTU2hhcGVzRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBpc0NTU1NoYXBlc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9v
bCBjc3NTaGFwZXNFbmFibGVkKCkgeyByZXR1cm4gaXNDU1NTaGFwZXNFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NTaGFwZXNF
bmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBjc3NTaGFwZXNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0NTU1NoYXBlc0VuYWJsZWQ7IH0KICNlbHNlCi0gICAgc3RhdGljIHZvaWQg
c2V0Q1NTU2hhcGVzRW5hYmxlZChib29sKSB7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NTaGFwZXNF
bmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNldENTU1NoYXBlc0VuYWJsZWQo
Ym9vbCkgeyB9CisgICAgYm9vbCBjc3NTaGFwZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19SRUdJT05TKQotICAgIHN0YXRpYyB2b2lk
IHNldENTU1JlZ2lvbnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzQ1NTUmVnaW9uc0VuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIHsg
cmV0dXJuIGlzQ1NTUmVnaW9uc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENTU1JlZ2lvbnNFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDU1NSZWdpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQorICAgIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ1NTUmVn
aW9uc0VuYWJsZWQ7IH0KICNlbHNlCi0gICAgc3RhdGljIHZvaWQgc2V0Q1NTUmVnaW9uc0VuYWJs
ZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzUmVnaW9uc0VuYWJsZWQoKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTUmVnaW9uc0VuYWJsZWQoYm9vbCkgeyB9CisgICAg
Ym9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYK
IAotICAgIHN0YXRpYyB2b2lkIHNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc0NTU0NvbXBvc2l0aW5nRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIGNzc0NvbXBvc2l0aW5nRW5hYmxlZCgpIHsgcmV0dXJuIGlzQ1NTQ29tcG9zaXRpbmdFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0NTU0NvbXBvc2l0aW5nRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgY3Nz
Q29tcG9zaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0NTU0NvbXBvc2l0aW5nRW5h
YmxlZDsgfQogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgc3RhdGljIHZvaWQg
c2V0Rm9udExvYWRFdmVudHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRm9udExvYWRFdmVu
dHNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZm9udExvYWRFdmVudHNF
bmFibGVkKCkgeyByZXR1cm4gaXNGb250TG9hZEV2ZW50c0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dEZvbnRMb2FkRXZlbnRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzRm9udExvYWRFdmVu
dHNFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBmb250TG9hZEV2ZW50c0VuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX2lzRm9udExvYWRFdmVudHNFbmFibGVkOyB9CiAjZWxzZQotICAg
IHN0YXRpYyB2b2lkIHNldEZvbnRMb2FkRXZlbnRzRW5hYmxlZChib29sKSB7IH0KLSAgICBzdGF0
aWMgYm9vbCBmb250TG9hZEV2ZW50c0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZv
aWQgc2V0Rm9udExvYWRFdmVudHNFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgZm9udExvYWRF
dmVudHNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIC8vIE1vemlsbGEgdmVyc2lvbgotICAgIHN0YXRpYyBib29sIHdl
YmtpdEZ1bGxTY3JlZW5BUElFbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldFdlYmtpdEZ1bGxTY3JlZW5BUElFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgYm9vbCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1
bGxTY3JlZW5BUElFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0SXNGdWxsU2NyZWVu
RW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
Ym9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWRFbmFibGVkKCkgeyByZXR1
cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFi
bGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbkVuYWJsZWQoKSB7
IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsU2Ny
ZWVuQVBJRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsg
fQorICAgIHZvaWQgc2V0V2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQp
IHsgbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVl
bkFQSUVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdElzRnVsbFNjcmVlbkVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEZ1
bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
RnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVu
RWxlbWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7
IH0KKyAgICBib29sIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CiAKICAgICAvLyBXM0MgdmVyc2lvbgotICAg
IHN0YXRpYyBib29sIHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCgpIHsgcmV0dXJuIGlz
RnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRGdWxsc2NyZWVu
RWxlbWVudEVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9Ci0gICAg
c3RhdGljIGJvb2wgd2Via2l0RXhpdEZ1bGxzY3JlZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxs
U2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFJlcXVlc3RGdWxsc2Ny
ZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBib29s
IHdlYmtpdEZ1bGxzY3JlZW5FbmFibGVkRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxs
U2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVsZW1lbnRFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9v
bCB3ZWJraXRFeGl0RnVsbHNjcmVlbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNj
cmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFJlcXVlc3RGdWxsc2NyZWVuRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVklERU8pCi0gICAgc3RhdGljIGJvb2wgYXVkaW9FbmFibGVkKCk7Ci0gICAg
c3RhdGljIGJvb2wgaHRtbE1lZGlhRWxlbWVudEVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBo
dG1sQXVkaW9FbGVtZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIGh0bWxWaWRlb0VsZW1l
bnRFbmFibGVkKCk7Ci0gICAgc3RhdGljIGJvb2wgaHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCk7
Ci0gICAgc3RhdGljIGJvb2wgbWVkaWFDb250cm9sbGVyRW5hYmxlZCgpOwotICAgIHN0YXRpYyBi
b29sIG1lZGlhRXJyb3JFbmFibGVkKCk7Ci0gICAgc3RhdGljIGJvb2wgdGltZVJhbmdlc0VuYWJs
ZWQoKTsKKyAgICBib29sIGF1ZGlvRW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgaHRtbE1lZGlh
RWxlbWVudEVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIGh0bWxBdWRpb0VsZW1lbnRFbmFibGVk
KCkgY29uc3Q7CisgICAgYm9vbCBodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAg
IGJvb2wgaHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBtZWRpYUNv
bnRyb2xsZXJFbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBtZWRpYUVycm9yRW5hYmxlZCgpIGNv
bnN0OworICAgIGJvb2wgdGltZVJhbmdlc0VuYWJsZWQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFNIQVJFRF9XT1JLRVJTKQotICAgIHN0YXRpYyBib29sIHNoYXJlZFdvcmtlckVuYWJs
ZWQoKTsKKyAgICBib29sIHNoYXJlZFdvcmtlckVuYWJsZWQoKSBjb25zdDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKFdFQl9TT0NLRVRTKQotICAgIHN0YXRpYyBib29sIHdlYlNvY2tldEVuYWJsZWQo
KTsKKyAgICBib29sIHdlYlNvY2tldEVuYWJsZWQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNRTF9EQVRBQkFTRSkKLSAgICBzdGF0aWMgYm9vbCBvcGVuRGF0YWJhc2VFbmFibGVkKCk7
Ci0gICAgc3RhdGljIGJvb2wgb3BlbkRhdGFiYXNlU3luY0VuYWJsZWQoKTsKKyAgICBib29sIG9w
ZW5EYXRhYmFzZUVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIG9wZW5EYXRhYmFzZVN5bmNFbmFi
bGVkKCkgY29uc3Q7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgc3Rh
dGljIGJvb2wgdG91Y2hFbmFibGVkKCkgeyByZXR1cm4gaXNUb3VjaEVuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgdm9pZCBzZXRUb3VjaEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNUb3VjaEVuYWJs
ZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHRvdWNoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNUb3VjaEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFRvdWNoRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBtX2lzVG91Y2hFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAotICAgIHN0
YXRpYyB2b2lkIHNldERldmljZU1vdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNEZXZp
Y2VNb3Rpb25FbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNlTW90
aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQotICAgIHN0YXRp
YyBib29sIGRldmljZU1vdGlvbkV2ZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGV2aWNlTW90aW9u
RW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIG9uZGV2aWNlbW90aW9uRW5hYmxlZCgpIHsgcmV0
dXJuIGlzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQotCi0gICAgc3RhdGljIHZvaWQgc2V0RGV2aWNl
T3JpZW50YXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRGV2aWNlT3JpZW50YXRpb25F
bmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZGV2aWNlT3JpZW50YXRpb25F
bmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0
aWMgYm9vbCBkZXZpY2VPcmllbnRhdGlvbkV2ZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGV2aWNl
T3JpZW50YXRpb25FbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgb25kZXZpY2VvcmllbnRhdGlv
bkVuYWJsZWQoKSB7IHJldHVybiBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQotCi0gICAg
c3RhdGljIHZvaWQgc2V0U3BlZWNoSW5wdXRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzU3Bl
ZWNoSW5wdXRFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgc3BlZWNoSW5w
dXRFbmFibGVkKCkgeyByZXR1cm4gaXNTcGVlY2hJbnB1dEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
Ym9vbCB3ZWJraXRTcGVlY2hFbmFibGVkKCkgeyByZXR1cm4gaXNTcGVlY2hJbnB1dEVuYWJsZWQ7
IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRHcmFtbWFyRW5hYmxlZCgpIHsgcmV0dXJuIGlzU3Bl
ZWNoSW5wdXRFbmFibGVkOyB9CisgICAgdm9pZCBzZXREZXZpY2VNb3Rpb25FbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1faXNEZXZpY2VNb3Rpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAg
Ym9vbCBkZXZpY2VNb3Rpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldmljZU1vdGlv
bkVuYWJsZWQ7IH0KKyAgICBib29sIGRldmljZU1vdGlvbkV2ZW50RW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9CisgICAgYm9vbCBvbmRldmljZW1vdGlv
bkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlTW90aW9uRW5hYmxlZDsgfQorCisg
ICAgdm9pZCBzZXREZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9p
c0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZGV2aWNl
T3JpZW50YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldmljZU9yaWVudGF0aW9u
RW5hYmxlZDsgfQorICAgIGJvb2wgZGV2aWNlT3JpZW50YXRpb25FdmVudEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9CisgICAgYm9vbCBvbmRl
dmljZW9yaWVudGF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VPcmllbnRh
dGlvbkVuYWJsZWQ7IH0KKworICAgIHZvaWQgc2V0U3BlZWNoSW5wdXRFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IG1faXNTcGVlY2hJbnB1dEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29s
IHNwZWVjaElucHV0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTcGVlY2hJbnB1dEVuYWJs
ZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lz
U3BlZWNoSW5wdXRFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRHcmFtbWFyRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTcGVlY2hJbnB1dEVuYWJsZWQ7IH0KIAogI2lmIEVOQUJMRShTQ1JJ
UFRFRF9TUEVFQ0gpCi0gICAgc3RhdGljIHZvaWQgc2V0U2NyaXB0ZWRTcGVlY2hFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0g
ICAgc3RhdGljIGJvb2wgc2NyaXB0ZWRTcGVlY2hFbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRl
ZFNwZWVjaEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hSZWNvZ25pdGlv
bkVuYWJsZWQoKSB7IHJldHVybiBpc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRp
YyBib29sIHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRXJyb3JFbmFibGVkKCkgeyByZXR1cm4gaXNT
Y3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hSZWNv
Z25pdGlvbkV2ZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9
Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoR3JhbW1hckVuYWJsZWQoKSB7IHJldHVybiBp
c1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFNwZWVjaEdy
YW1tYXJMaXN0RW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9Cisg
ICAgdm9pZCBzZXRTY3JpcHRlZFNwZWVjaEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1Nj
cmlwdGVkU3BlZWNoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc2NyaXB0ZWRTcGVl
Y2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQor
ICAgIGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0U3BlZWNoUmVjb2du
aXRpb25FcnJvckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFi
bGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbkV2ZW50RW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtp
dFNwZWVjaEdyYW1tYXJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NjcmlwdGVkU3BlZWNo
RW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0U3BlZWNoR3JhbW1hckxpc3RFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoRklMRV9TWVNURU0pCi0gICAgc3RhdGljIGJvb2wgZmlsZVN5c3RlbUVuYWJsZWQoKTsK
LSAgICBzdGF0aWMgdm9pZCBzZXRGaWxlU3lzdGVtRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0ZpbGVTeXN0ZW1FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBmaWxlU3lzdGVtRW5h
YmxlZCgpIGNvbnN0OworICAgIHZvaWQgc2V0RmlsZVN5c3RlbUVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgbV9pc0ZpbGVTeXN0ZW1FbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShKQVZBU0NSSVBUX0kxOE5fQVBJKQotICAgIHN0YXRpYyBib29sIGphdmFTY3JpcHRJ
MThOQVBJRW5hYmxlZCgpOwotICAgIHN0YXRpYyB2b2lkIHNldEphdmFTY3JpcHRJMThOQVBJRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0phdmFTY3JpcHRJMThOQVBJRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgamF2YVNjcmlwdEkxOE5BUElFbmFibGVkKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0ph
dmFTY3JpcHRJMThOQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQotICAgIHN0YXRpYyBib29sIG1lZGlhU3RyZWFtRW5hYmxlZCgpIHsg
cmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0TWVkaWFT
dHJlYW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTWVkaWFTdHJlYW1FbmFibGVkID0gaXNF
bmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0R2V0VXNlck1lZGlhRW5hYmxlZCgpIHsg
cmV0dXJuIGlzTWVkaWFTdHJlYW1FbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0TWVk
aWFTdHJlYW1FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KLQotICAg
IHN0YXRpYyBib29sIHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVkaWFTdHJl
YW1FbmFibGVkICYmIGlzUGVlckNvbm5lY3Rpb25FbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQg
c2V0UGVlckNvbm5lY3Rpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzUGVlckNvbm5lY3Rp
b25FbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0UlRDUGVlckNv
bm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gcGVlckNvbm5lY3Rpb25FbmFibGVkKCk7IH0KKyAg
ICBib29sIG1lZGlhU3RyZWFtRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVh
bUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldE1lZGlhU3RyZWFtRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBtX2lzTWVkaWFTdHJlYW1FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJr
aXRHZXRVc2VyTWVkaWFFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lZGlhU3RyZWFtRW5h
YmxlZDsgfQorICAgIGJvb2wgd2Via2l0TWVkaWFTdHJlYW1FbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc01lZGlhU3RyZWFtRW5hYmxlZDsgfQorCisgICAgYm9vbCBwZWVyQ29ubmVjdGlvbkVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1FbmFibGVkICYmIG1faXNQZWVy
Q29ubmVjdGlvbkVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFBlZXJDb25uZWN0aW9uRW5hYmxlZChi
b29sIGlzRW5hYmxlZCkgeyBtX2lzUGVlckNvbm5lY3Rpb25FbmFibGVkID0gaXNFbmFibGVkOyB9
CisgICAgYm9vbCB3ZWJraXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZ
X0NTU19WRU5ET1JfUFJFRklYRVMpCi0gICAgc3RhdGljIHZvaWQgc2V0TGVnYWN5Q1NTVmVuZG9y
UHJlZml4ZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzTGVnYWN5Q1NTVmVuZG9yUHJlZml4
ZXNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgbGVnYWN5Q1NTVmVuZG9y
UHJlZml4ZXNFbmFibGVkKCkgeyByZXR1cm4gaXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChib29sIGlz
RW5hYmxlZCkgeyBtX2lzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCBsZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShHQU1FUEFEKQotICAgIHN0YXRpYyB2b2lkIHNldFdlYmtpdEdldEdhbWVwYWRzRW5h
YmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0dhbWVwYWRFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0g
ICAgc3RhdGljIGJvb2wgd2Via2l0R2V0R2FtZXBhZHNFbmFibGVkKCkgeyByZXR1cm4gaXNHYW1l
cGFkRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0V2Via2l0R2V0R2FtZXBhZHNFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1faXNHYW1lcGFkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wg
d2Via2l0R2V0R2FtZXBhZHNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0dhbWVwYWRFbmFi
bGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShRVU9UQSkKLSAgICBzdGF0aWMgYm9vbCBxdW90
YUVuYWJsZWQoKSB7IHJldHVybiBpc1F1b3RhRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNl
dFF1b3RhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1F1b3RhRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIGJvb2wgcXVvdGFFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1F1b3RhRW5h
YmxlZDsgfQorICAgIHZvaWQgc2V0UXVvdGFFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNR
dW90YUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKLSAgICBzdGF0aWMgYm9vbCBtZWRpYVNvdXJjZUVuYWJsZWQoKSB7IHJldHVybiBpc01l
ZGlhU291cmNlRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldE1lZGlhU291cmNlRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc01lZGlhU291cmNlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQor
ICAgIGJvb2wgbWVkaWFTb3VyY2VFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lZGlhU291
cmNlRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0TWVkaWFTb3VyY2VFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNNZWRpYVNvdXJjZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAj
aWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKLSAgICBzdGF0aWMgYm9vbCBlbmNyeXB0ZWRNZWRp
YUVuYWJsZWQoKSB7IHJldHVybiBpc0VuY3J5cHRlZE1lZGlhRW5hYmxlZDsgfQotICAgIHN0YXRp
YyB2b2lkIHNldEVuY3J5cHRlZE1lZGlhRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0VuY3J5
cHRlZE1lZGlhRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZW5jcnlwdGVkTWVkaWFF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0VuY3J5cHRlZE1lZGlhRW5hYmxlZDsgfQorICAg
IHZvaWQgc2V0RW5jcnlwdGVkTWVkaWFFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNFbmNy
eXB0ZWRNZWRpYUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotICAgIHN0YXRpYyBib29sIHdlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgeyBy
ZXR1cm4gaXNWaWRlb1RyYWNrRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldFdlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzVmlkZW9UcmFja0VuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc1ZpZGVvVHJhY2tFbmFibGVkOyB9CisgICAgdm9pZCBzZXRXZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzVmlkZW9UcmFja0VuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgc3RhdGljIGJv
b2wgc2hhZG93RE9NRW5hYmxlZCgpIHsgcmV0dXJuIGlzU2hhZG93RE9NRW5hYmxlZDsgfQotICAg
IHN0YXRpYyB2b2lkIHNldFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNTaGFk
b3dET01FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzaGFkb3dET01FbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1NoYWRvd0RPTUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFNoYWRv
d0RPTUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1NoYWRvd0RPTUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KIAotICAgIHN0YXRpYyBib29sIGF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRF
bmFibGVkKCkgeyByZXR1cm4gaXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZDsg
fQotICAgIHN0YXRpYyB2b2lkIHNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChi
b29sIGlzRW5hYmxlZCkgeyBtX2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQg
PSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAg
ICBzdGF0aWMgYm9vbCBjdXN0b21ET01FbGVtZW50c0VuYWJsZWQoKSB7IHJldHVybiBpc0N1c3Rv
bURPTUVsZW1lbnRzRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbURPTUVsZW1l
bnRzKGJvb2wgaXNFbmFibGVkKSB7IGlzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkID0gaXNFbmFi
bGVkOyB9CisgICAgYm9vbCBjdXN0b21ET01FbGVtZW50c0VuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRDdXN0b21ET01F
bGVtZW50cyhib29sIGlzRW5hYmxlZCkgeyBtX2lzQ3VzdG9tRE9NRWxlbWVudHNFbmFibGVkID0g
aXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi0gICAgc3Rh
dGljIGJvb2wgc3R5bGVTY29wZWRFbmFibGVkKCkgeyByZXR1cm4gaXNTdHlsZVNjb3BlZEVuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgaXNTdHlsZVNjb3BlZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHN0eWxl
U2NvcGVkRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHlsZVNjb3BlZEVuYWJsZWQ7IH0K
KyAgICB2b2lkIHNldFN0eWxlU2NvcGVkRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzU3R5
bGVTY29wZWRFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0RBVEUpCi0gICAgc3RhdGljIGJvb2wgaW5wdXRUeXBlRGF0ZUVuYWJsZWQoKSB7IHJl
dHVybiBpc0lucHV0VHlwZURhdGVFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5wdXRU
eXBlRGF0ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbnB1dFR5cGVEYXRlRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlRGF0ZUVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5wdXRUeXBlRGF0ZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldElucHV0VHlwZURh
dGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRV9JTkNP
TVBMRVRFKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCgpIHsgcmV0
dXJuIGlzSW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5w
dXRUeXBlRGF0ZVRpbWVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlRGF0ZVRp
bWVFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVEYXRlVGltZUVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lu
cHV0VHlwZURhdGVUaW1lRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKQotICAgIHN0YXRpYyBib29sIGlucHV0VHlwZURh
dGVUaW1lTG9jYWxFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5h
YmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KKyAgICBib29sIGlucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkOyB9CisgICAgdm9pZCBz
ZXRJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5w
dXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfTU9OVEgpCi0gICAgc3RhdGljIGJvb2wgaW5wdXRUeXBlTW9udGhF
bmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVNb250aEVuYWJsZWQ7IH0KLSAgICBzdGF0aWMg
dm9pZCBzZXRJbnB1dFR5cGVNb250aEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbnB1dFR5
cGVNb250aEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGlucHV0VHlwZU1vbnRoRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVNb250aEVuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldElucHV0VHlwZU1vbnRoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5wdXRU
eXBlTW9udGhFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX1RJTUUpCi0gICAgc3RhdGljIGJvb2wgaW5wdXRUeXBlVGltZUVuYWJsZWQoKSB7IHJl
dHVybiBpc0lucHV0VHlwZVRpbWVFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5wdXRU
eXBlVGltZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbnB1dFR5cGVUaW1lRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlVGltZUVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldElucHV0VHlwZVRp
bWVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5cGVUaW1lRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIHN0
YXRpYyBib29sIGlucHV0VHlwZVdlZWtFbmFibGVkKCkgeyByZXR1cm4gaXNJbnB1dFR5cGVXZWVr
RW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldElucHV0VHlwZVdlZWtFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGlzSW5wdXRUeXBlV2Vla0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBi
b29sIGlucHV0VHlwZVdlZWtFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZVdl
ZWtFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbnB1dFR5cGVXZWVrRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBtX2lzSW5wdXRUeXBlV2Vla0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKENTUF9ORVhUKQotICAgIHN0YXRpYyBib29sIGV4cGVyaW1lbnRhbENvbnRl
bnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCgpIHsgcmV0dXJuIGFyZUV4cGVyaW1lbnRh
bENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lk
IHNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBhcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJl
c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGV4cGVyaW1lbnRhbENvbnRlbnRTZWN1
cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJlRXhwZXJpbWVu
dGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRF
eHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgbV9hcmVFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0Vu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVT
UykKLSAgICBzdGF0aWMgYm9vbCBzZWFtbGVzc0lGcmFtZXNFbmFibGVkKCkgeyByZXR1cm4gYXJl
U2VhbWxlc3NJRnJhbWVzRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldFNlYW1sZXNzSUZy
YW1lc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc2VhbWxlc3NJRnJhbWVzRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYXJlU2VhbWxlc3NJRnJhbWVzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2VhbWxl
c3NJRnJhbWVzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2FyZVNlYW1sZXNzSUZyYW1lc0Vu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCi0gICAgc3RhdGljIGJvb2wgbGFuZ0F0dHJp
YnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSB7IHJldHVybiBpc0xhbmdBdHRyaWJ1dGVB
d2FyZUZvcm1Db250cm9sVUlFbmFibGVkOyB9CisgICAgYm9vbCBsYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNMYW5nQXR0cmlidXRlQXdh
cmVGb3JtQ29udHJvbFVJRW5hYmxlZDsgfQogICAgIC8vIFRoZSBsYW5nIGF0dHJpYnV0ZSBzdXBw
b3J0IGlzIGluY29tcGxldGUgYW5kIHNob3VsZCBvbmx5IGJlIHR1cm5lZCBvbiBmb3IgdGVzdHMu
Ci0gICAgc3RhdGljIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNv
bnRyb2xVSUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0xhbmdBdHRyaWJ1dGVBd2FyZUZv
cm1Db250cm9sVUlFbmFibGVkID0gaXNFbmFibGVkOyB9CisKKyAgICBzdGF0aWMgUnVudGltZUVu
YWJsZWRGZWF0dXJlcyYgc2hhcmVkRmVhdHVyZXMoKTsKIAogcHJpdmF0ZToKICAgICAvLyBOZXZl
ciBpbnN0YW50aWF0ZS4KLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzKCkgeyB9CisgICAgUnVu
dGltZUVuYWJsZWRGZWF0dXJlcygpOwogCi0gICAgc3RhdGljIGJvb2wgaXNMb2NhbFN0b3JhZ2VF
bmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzU2Vzc2lvblN0b3JhZ2VFbmFibGVkOwotICAgIHN0
YXRpYyBib29sIGlzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wg
aXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0RhdGFUcmFuc2Zl
ckl0ZW1zRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0dlb2xvY2F0aW9uRW5hYmxlZDsKLSAg
ICBzdGF0aWMgYm9vbCBpc0luZGV4ZWREQkVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNUb3Vj
aEVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNEZXZpY2VNb3Rpb25FbmFibGVkOwotICAgIHN0
YXRpYyBib29sIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlz
U3BlZWNoSW5wdXRFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzQ2FudmFzUGF0aEVuYWJsZWQ7
Ci0gICAgc3RhdGljIGJvb2wgaXNDU1NFeGNsdXNpb25zRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9v
bCBpc0NTU1NoYXBlc0VuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNDU1NSZWdpb25zRW5hYmxl
ZDsKLSAgICBzdGF0aWMgYm9vbCBpc0NTU0NvbXBvc2l0aW5nRW5hYmxlZDsKLSAgICBXRUJDT1JF
X1RFU1RJTkcgc3RhdGljIGJvb2wgaXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZDsKKyAgICBib29sIG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkOworICAgIGJvb2wgbV9pc1Nl
c3Npb25TdG9yYWdlRW5hYmxlZDsKKyAgICBib29sIG1faXNXZWJraXROb3RpZmljYXRpb25zRW5h
YmxlZDsKKyAgICBib29sIG1faXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsKKyAgICBib29sIG1f
aXNEYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzR2VvbG9jYXRpb25FbmFi
bGVkOworICAgIGJvb2wgbV9pc0luZGV4ZWREQkVuYWJsZWQ7CisgICAgYm9vbCBtX2lzVG91Y2hF
bmFibGVkOworICAgIGJvb2wgbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7CisgICAgYm9vbCBtX2lz
RGV2aWNlT3JpZW50YXRpb25FbmFibGVkOworICAgIGJvb2wgbV9pc1NwZWVjaElucHV0RW5hYmxl
ZDsKKyAgICBib29sIG1faXNDYW52YXNQYXRoRW5hYmxlZDsKKyAgICBib29sIG1faXNDU1NFeGNs
dXNpb25zRW5hYmxlZDsKKyAgICBib29sIG1faXNDU1NTaGFwZXNFbmFibGVkOworICAgIGJvb2wg
bV9pc0NTU1JlZ2lvbnNFbmFibGVkOworICAgIGJvb2wgbV9pc0NTU0NvbXBvc2l0aW5nRW5hYmxl
ZDsKKyAgICBib29sIG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZDsK
ICNpZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQotICAgIHN0YXRpYyBib29sIGlzU2NyaXB0ZWRT
cGVlY2hFbmFibGVkOworICAgIGJvb2wgbV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsKICNlbmRp
ZgogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICBzdGF0aWMgYm9vbCBpc0ZpbGVTeXN0ZW1F
bmFibGVkOworICAgIGJvb2wgbV9pc0ZpbGVTeXN0ZW1FbmFibGVkOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoSkFWQVNDUklQVF9JMThOX0FQSSkKLSAgICBzdGF0aWMgYm9vbCBpc0phdmFTY3JpcHRJ
MThOQVBJRW5hYmxlZDsKKyAgICBib29sIG1faXNKYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQ7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgc3RhdGljIGJvb2wgaXNNZWRp
YVN0cmVhbUVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7
CisgICAgYm9vbCBtX2lzTWVkaWFTdHJlYW1FbmFibGVkOworICAgIGJvb2wgbV9pc1BlZXJDb25u
ZWN0aW9uRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0gICAgc3RhdGlj
IGJvb2wgaXNHYW1lcGFkRW5hYmxlZDsKKyAgICBib29sIG1faXNHYW1lcGFkRW5hYmxlZDsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQotICAgIHN0YXRp
YyBib29sIGlzTGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkOworICAgIGJvb2wgbV9pc0xl
Z2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFFVT1RB
KQotICAgIHN0YXRpYyBib29sIGlzUXVvdGFFbmFibGVkOworICAgIGJvb2wgbV9pc1F1b3RhRW5h
YmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHN0YXRpYyBi
b29sIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzRnVsbFNjcmVlbkFQSUVu
YWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgc3RhdGljIGJv
b2wgaXNNZWRpYVNvdXJjZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzTWVkaWFTb3VyY2VFbmFibGVk
OwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotICAgIHN0YXRpYyBib29s
IGlzRW5jcnlwdGVkTWVkaWFFbmFibGVkOworICAgIGJvb2wgbV9pc0VuY3J5cHRlZE1lZGlhRW5h
YmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIHN0YXRpYyBib29s
IGlzVmlkZW9UcmFja0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzVmlkZW9UcmFja0VuYWJsZWQ7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIHN0YXRpYyBib29sIGlzU2hhZG93
RE9NRW5hYmxlZDsKLQotICAgIHN0YXRpYyBib29sIGlzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxl
bWVudEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzU2hhZG93RE9NRW5hYmxlZDsKKyAgICBib29sIG1f
aXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZDsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICBzdGF0aWMgYm9vbCBpc0N1c3RvbURPTUVsZW1lbnRz
RW5hYmxlZDsKKyAgICBib29sIG1faXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi0gICAgc3RhdGljIGJvb2wgaXNTdHlsZVNjb3Bl
ZEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzU3R5bGVTY29wZWRFbmFibGVkOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBlRGF0
ZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzSW5wdXRUeXBlRGF0ZUVuYWJsZWQ7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09NUExFVEUpCi0gICAgc3RhdGljIGJv
b2wgaXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzSW5wdXRUeXBlRGF0
ZVRpbWVFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRUxP
Q0FMKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQ7Cisg
ICAgYm9vbCBtX2lzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX01PTlRIKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBlTW9u
dGhFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfVElNRSkKLSAgICBzdGF0aWMgYm9vbCBpc0lucHV0VHlw
ZVRpbWVFbmFibGVkOworICAgIGJvb2wgbV9pc0lucHV0VHlwZVRpbWVFbmFibGVkOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRU
eXBlV2Vla0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzSW5wdXRUeXBlV2Vla0VuYWJsZWQ7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShDU1BfTkVYVCkKLSAgICBzdGF0aWMgYm9vbCBhcmVFeHBlcmltZW50
YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQ7CisgICAgYm9vbCBtX2FyZUV4
cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZDsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBzdGF0aWMgYm9vbCBhcmVTZWFtbGVz
c0lGcmFtZXNFbmFibGVkOworICAgIGJvb2wgbV9hcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBzdGF0aWMgYm9vbCBp
c0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsKKyAgICBib29sIG1faXNGb250TG9hZEV2ZW50c0VuYWJs
ZWQ7CiAjZW5kaWYKIAorI2lmbmRlZiBDTEFTU19JRl9HQ0MKKyNpZiBDT01QSUxFUihHQ0MpCisj
ZGVmaW5lIENMQVNTX0lGX0dDQyBjbGFzcworI2Vsc2UKKyNkZWZpbmUgQ0xBU1NfSUZfR0NDCisj
ZW5kaWYKKyNlbmRpZgorICAgIGZyaWVuZCBDTEFTU19JRl9HQ0MgTmV2ZXJEZXN0cm95ZWQ8UnVu
dGltZUVuYWJsZWRGZWF0dXJlcz47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgUHJvcGVy
dHlOYW1lUHJlZml4IGdldENTU1Byb3BlcnR5CiAgICAgc3dpdGNoIChmaXJzdENoYXIpIHsKICNp
ZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCiAgICAgY2FzZSAnYSc6Ci0gICAg
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0Vu
YWJsZWQoKSAmJiBtYXRjaGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImFw
cGxlIikpCisgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0
eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAiYXBwbGUiKSkKICAgICAgICAgICAgIHJldHVybiBQ
cm9wZXJ0eU5hbWVQcmVmaXhBcHBsZTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKQEAgLTEzMCw3
ICsxMzAsNyBAQCBzdGF0aWMgUHJvcGVydHlOYW1lUHJlZml4IGdldENTU1Byb3BlcnR5CiAgICAg
ICAgIGJyZWFrOwogI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICBj
YXNlICdrJzoKLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1Zl
bmRvclByZWZpeGVzRW5hYmxlZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJv
cGVydHlOYW1lLCAia2h0bWwiKSkKKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0
Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJraHRtbCIpKQogICAgICAg
ICAgICAgcmV0dXJuIFByb3BlcnR5TmFtZVByZWZpeEtIVE1MOwogICAgICAgICBicmVhazsKICNl
bmRpZgpAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRpYyBDU1NQcm9wZXJ0eUluZm8gY3NzUHJvcGVy
dHlJREZvckoKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCiAgICAgY2Fz
ZSBQcm9wZXJ0eU5hbWVQcmVmaXhBcHBsZToKICAgICBjYXNlIFByb3BlcnR5TmFtZVByZWZpeEtI
VE1MOgotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVu
ZG9yUHJlZml4ZXNFbmFibGVkKCkpOworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSk7
CiAgICAgICAgIHdyaXRlV2ViS2l0UHJlZml4KGJ1ZmZlclB0cik7CiAgICAgICAgIGkgKz0gNTsK
ICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkK
QEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwNiBBbmRlcnMgQ2FybHNzb24gPGFu
ZGVyc2NhQG1hYy5jb20+CiAjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBTYW11ZWwgV2Vpbmln
IDxzYW1Ad2Via2l0Lm9yZz4KICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFr
b3YgPGFwQHdlYmtpdC5vcmc+Ci0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBDYW1lcm9uIE1jQ29ybWFjayA8Y2FtQG1j
Yy5pZC5hdT4KICMgQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCkBAIC0xNDQ0LDExICsxNDQ0LDExIEBA
IHN1YiBHZXRSdW50aW1lRW5hYmxlRnVuY3Rpb25OYW1lCiB7CiAgICAgbXkgJHNpZ25hdHVyZSA9
IHNoaWZ0OwogCi0gICAgIyBJZiBhIHBhcmFtZXRlciBpcyBnaXZlbiAoZS5nLiAiRW5hYmxlZEF0
UnVudGltZT1GZWF0dXJlTmFtZSIpIHJldHVybiB0aGUgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
e0ZlYXR1cmVOYW1lfUVuYWJsZWQoKSBtZXRob2QuCi0gICAgcmV0dXJuICJSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjoiIC4gVG9NZXRob2ROYW1lKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJFbmFibGVkQXRSdW50aW1lIn0pIC4gIkVuYWJsZWQiIGlmICgkc2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVudGltZSJ9ICYmICRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0gbmUgIlZBTFVFX0lTX01JU1NJTkci
KTsKKyAgICAjIElmIGEgcGFyYW1ldGVyIGlzIGdpdmVuIChlLmcuICJFbmFibGVkQXRSdW50aW1l
PUZlYXR1cmVOYW1lIikgcmV0dXJuIHRoZSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLntGZWF0dXJlTmFtZX1FbmFibGVkKCkgbWV0aG9kLgorICAgIHJldHVybiAiUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS4iIC4gVG9NZXRob2ROYW1lKCRz
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0pIC4gIkVu
YWJsZWQiIGlmICgkc2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRW5hYmxlZEF0UnVu
dGltZSJ9ICYmICRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50
aW1lIn0gbmUgIlZBTFVFX0lTX01JU1NJTkciKTsKIAotICAgICMgT3RoZXJ3aXNlIHJldHVybiBh
IGZ1bmN0aW9uIG5hbWVkIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnttZXRob2ROYW1lfUVuYWJs
ZWQoKS4KLSAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OiIgLiBUb01ldGhvZE5h
bWUoJHNpZ25hdHVyZS0+bmFtZSkgLiAiRW5hYmxlZCI7CisgICAgIyBPdGhlcndpc2UgcmV0dXJu
IGEgZnVuY3Rpb24gbmFtZWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS57bWV0aG9kTmFtZX1FbmFibGVkKCkuCisgICAgcmV0dXJuICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIgLiBUb01ldGhvZE5hbWUoJHNpZ25hdHVyZS0+bmFtZSkg
LiAiRW5hYmxlZCI7CiB9CiAKIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBDU1NGb250RmFjZTo6Zm9udExvYWRlZChDU1NGb250
RmFjZQogICAgIGZvbnRTZWxlY3Rvci0+Zm9udExvYWRlZCgpOwogCiAjaWYgRU5BQkxFKEZPTlRf
TE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZl
bnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmcpIHsKKyAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQo
KSAmJiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nKSB7CiAgICAgICAgIGlmIChzb3VyY2UtPmVuc3Vy
ZUZvbnREYXRhKCkpCiAgICAgICAgICAgICBub3RpZnlGb250TG9hZGVyKExvYWRlZCk7CiAgICAg
ICAgIGVsc2UgaWYgKCFpc1ZhbGlkKCkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBDU1NGb250
RmFjZTo6Zm9udExvYWRlZChDU1NGb250RmFjZQogICAgICAgICAoKml0KS0+Zm9udExvYWRlZCh0
aGlzKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSkK
ICAgICAgICAgbm90aWZ5TG9hZGluZ0RvbmUoKTsKICNlbmRpZgogfQpAQCAtMTE4LDcgKzExOCw3
IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IENTU0ZvbnRGYWNlOjoKICAgICBDU1NGb250
U2VsZWN0b3IqIGZvbnRTZWxlY3RvciA9ICgqbV9zZWdtZW50ZWRGb250RmFjZXMuYmVnaW4oKSkt
PmZvbnRTZWxlY3RvcigpOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9h
ZFN0YXRlID09IE5vdExvYWRlZCkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBO
b3RMb2FkZWQpCiAgICAgICAgIG5vdGlmeUZvbnRMb2FkZXIoTG9hZGluZyk7CiAjZW5kaWYKIApA
QCAtMTI3LDcgKzEyNyw3IEBAIFBhc3NSZWZQdHI8U2ltcGxlRm9udERhdGE+IENTU0ZvbnRGYWNl
OjoKICAgICAgICAgaWYgKFJlZlB0cjxTaW1wbGVGb250RGF0YT4gcmVzdWx0ID0gbV9zb3VyY2Vz
W2ldLT5nZXRGb250RGF0YShmb250RGVzY3JpcHRpb24sIHN5bnRoZXRpY0JvbGQsIHN5bnRoZXRp
Y0l0YWxpYywgZm9udFNlbGVjdG9yKSkgewogICAgICAgICAgICAgbV9hY3RpdmVTb3VyY2UgPSBt
X3NvdXJjZXNbaV0uZ2V0KCk7CiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgICAg
ICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkg
JiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZyAmJiBtX3NvdXJjZXNbaV0tPmlzTG9hZGVkKCkpIHsK
KyAgICAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmcgJiYgbV9z
b3VyY2VzW2ldLT5pc0xvYWRlZCgpKSB7CiAgICAgICAgICAgICAgICAgbm90aWZ5Rm9udExvYWRl
cihMb2FkZWQpOwogICAgICAgICAgICAgICAgIG5vdGlmeUxvYWRpbmdEb25lKCk7CiAgICAgICAg
ICAgICB9CkBAIC0xMzcsNyArMTM3LDcgQEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NT
Rm9udEZhY2U6OgogICAgIH0KIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xv
YWRTdGF0ZSA9PSBMb2FkaW5nKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0g
TG9hZGluZykgewogICAgICAgICBub3RpZnlGb250TG9hZGVyKEVycm9yKTsKICAgICAgICAgbm90
aWZ5TG9hZGluZ0RvbmUoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDcsIDIwMDggTmlrb2xhcyBa
aW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMzUs
NyArMjM1LDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmFkZEZvbnRGYWNlUnVsZShjbwogICAg
ICAgICAgICAgUmVmUHRyPENTU0ZvbnRGYWNlUnVsZT4gcnVsZTsKICNpZiBFTkFCTEUoRk9OVF9M
T0FEX0VWRU5UUykKICAgICAgICAgICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTE2IC0gVGhpcyBDU1NGb250RmFjZVJ1bGUgaGFzIG5vIHBh
cmVudC4KLSAgICAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2
ZW50c0VuYWJsZWQoKSkKKyAgICAgICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpKQogICAgICAgICAgICAgICAg
IHJ1bGUgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PENTU0ZvbnRGYWNlUnVsZT4oZm9udEZhY2VSdWxl
LT5jcmVhdGVDU1NPTVdyYXBwZXIoKSk7CiAjZW5kaWYKICAgICAgICAgICAgIGZvbnRGYWNlID0g
Q1NTRm9udEZhY2U6OmNyZWF0ZShzdGF0aWNfY2FzdDxGb250VHJhaXRzTWFzaz4odHJhaXRzTWFz
ayksIHJ1bGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDE1NjQw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwMyBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA1IEFsbGFuIFNhbmRmZWxkIEplbnNlbiAo
a2RlQGNhcmV3b2xmLmNvbSkKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA3IE5pY2hvbGFzIFNoYW5rcyA8d2Via2l0QG5pY2tzaGFu
a3MuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKQEAgLTU4Niw3ICs1ODYsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1wbGVMZW5ndGhQcm9wZXJ0CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFNoYXBlTWFyZ2luOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFw
ZVBhZGRpbmc6CiAgICAgICAgIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMgPSBmYWxzZTsKLSAgICAg
ICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1NoYXBlc0VuYWJsZWQoKTsKKyAg
ICAgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3Nz
U2hhcGVzRW5hYmxlZCgpOwogI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvdHRvbToKICAg
ICBjYXNlIENTU1Byb3BlcnR5TGVmdDoKQEAgLTEwMzEsMTMgKzEwMzEsMTMgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzVmFsaWRLZXl3b3JkUHJvcGVydAogICAgICAgICBicmVhazsKICNpZiBFTkFC
TEUoQ1NTX0VYQ0xVU0lPTlMpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyYXBGbG93Ogot
ICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0V4Y2x1c2lvbnNFbmFibGVk
KCkpCisgICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5jc3NFeGNsdXNpb25zRW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJv
dGggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1heGltdW0gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNsZWFy
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRXcmFwVGhyb3VnaDoKLSAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxlZCgpKQorICAgICAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3NzRXhjbHVzaW9uc0VuYWJsZWQoKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVX
cmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC0zMDExLDcgKzMwMTEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9w
ZXJ0eUlECiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtp
dFNoYXBlSW5zaWRlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZU91dHNpZGU6Ci0g
ICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCgpKQor
ICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3Nz
U2hhcGVzRW5hYmxlZCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAo
aWQgPT0gQ1NTVmFsdWVBdXRvKQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwpA
QCAtMzAyNiw3ICszMDI2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NTUHJvcGVy
dHlJRAogICAgICAgICBicmVhazsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVNYXJn
aW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlUGFkZGluZzoKLSAgICAgICAgdmFs
aWRQcmltaXRpdmUgPSAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCgp
ICYmICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGggfCBGTm9uTmVnKSk7CisgICAgICAg
IHZhbGlkUHJpbWl0aXZlID0gKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuY3NzU2hhcGVzRW5hYmxlZCgpICYmICFpZCAmJiB2YWxpZFVuaXQodmFsdWUsIEZMZW5ndGgg
fCBGTm9uTmVnKSk7CiAgICAgICAgIGJyZWFrOwogI2VuZGlmCiAjaWYgRU5BQkxFKENTU19JTUFH
RV9PUklFTlRBVElPTikKQEAgLTEyMTk5LDcgKzEyMTk5LDcgQEAgc3RhdGljIENTU1Byb3BlcnR5
SUQgY3NzUHJvcGVydHlJRChjb25zdAogI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVG
SVhFUykKICAgICAgICAgLy8gSWYgdGhlIHByZWZpeCBpcyAtYXBwbGUtIG9yIC1raHRtbC0sIGNo
YW5nZSBpdCB0byAtd2Via2l0LS4KICAgICAgICAgLy8gVGhpcyBtYWtlcyB0aGUgc3RyaW5nIG9u
ZSBjaGFyYWN0ZXIgbG9uZ2VyLgotICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkKKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFi
bGVkKCkKICAgICAgICAgICAgICYmIChoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICItYXBwbGUt
IikgfHwgaGFzUHJlZml4KGJ1ZmZlciwgbGVuZ3RoLCAiLWtodG1sLSIpKSkgewogICAgICAgICAg
ICAgbWVtbW92ZShidWZmZXIgKyA3LCBidWZmZXIgKyA2LCBsZW5ndGggKyAxIC0gNik7CiAgICAg
ICAgICAgICBtZW1jcHkoYnVmZmVyLCAiLXdlYmtpdCIsIDcpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1NlZ21lbnRlZEZvbnRGYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgQ1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRMb2FkZWQoQ1MK
ICAgICBwcnVuZVRhYmxlKCk7CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgIWlz
TG9hZGluZygpKSB7CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgIWlzTG9hZGluZygpKSB7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8TG9hZEZvbnRDYWxsYmFjaz4gPiBjYWxsYmFja3M7CiAgICAgICAgIG1f
Y2FsbGJhY2tzLnN3YXAoY2FsbGJhY2tzKTsKICAgICAgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IGNhbGxiYWNrcy5zaXplKCk7ICsraW5kZXgpIHsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDEyICsyMDksMTIgQEAgcHVi
bGljOgogICAgIHsKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQogI2lmIEVOQUJMRShTSEFET1df
RE9NKQotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5h
YmxlZCgpIHx8IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsK
KyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2hhZG93RE9NRW5hYmxlZCgpIHx8IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpOwogI2Vsc2UKLSAgICAgICAgQVNTRVJUKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKKyAgICAgICAgQVNTRVJU
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3R5bGVTY29wZWRFbmFi
bGVkKCkpOwogI2VuZGlmCiAjZWxzZQotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhZG93RE9NRW5hYmxlZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKTsKICNlbmRpZgog
ICAgICAgICBpZiAoIW1fc2NvcGVSZXNvbHZlcikKICAgICAgICAgICAgIG1fc2NvcGVSZXNvbHZl
ciA9IGFkb3B0UHRyKG5ldyBTdHlsZVNjb3BlUmVzb2x2ZXIoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNDgsMTIgKzExNDgsMTIgQEAgYm9vbCBEb2N1
bWVudDo6Y3NzU3RpY2t5UG9zaXRpb25FbmFibGVkKAogCiBib29sIERvY3VtZW50Ojpjc3NSZWdp
b25zRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc1JlZ2lvbnNFbmFibGVkKCk7IAorICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmNzc1JlZ2lvbnNFbmFibGVkKCk7IAogfQogCiBib29sIERvY3Vt
ZW50Ojpjc3NDb21wb3NpdGluZ0VuYWJsZWQoKSBjb25zdAogewotICAgIHJldHVybiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpjc3NDb21wb3NpdGluZ0VuYWJsZWQoKTsKKyAgICByZXR1cm4gUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NDb21wb3NpdGluZ0VuYWJs
ZWQoKTsKIH0KIAogYm9vbCBEb2N1bWVudDo6Y3NzR3JpZExheW91dEVuYWJsZWQoKSBjb25zdApA
QCAtNTY5OSw3ICs1Njk5LDcgQEAgSFRNTElGcmFtZUVsZW1lbnQqIERvY3VtZW50OjpzZWFtbGVz
c1BhcgogYm9vbCBEb2N1bWVudDo6c2hvdWxkRGlzcGxheVNlYW1sZXNzbHlXaXRoUGFyZW50KCkg
Y29uc3QKIHsKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2VhbWxlc3NJRnJhbWVzRW5hYmxlZCgpKQorICAgIGlmICghUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZWFtbGVzc0lGcmFtZXNFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyRWxlbWVudCA9IHRoaXMtPm93bmVyRWxlbWVudCgpOwogICAgIGlmICghb3duZXJFbGVtZW50
KQpAQCAtNTk3Nyw3ICs1OTc3LDcgQEAgYm9vbCBEb2N1bWVudDo6aGF2ZVN0eWxlc2hlZXRzTG9h
ZGVkKCkgYwogTG9jYWxlJiBEb2N1bWVudDo6Z2V0Q2FjaGVkTG9jYWxlKGNvbnN0IEF0b21pY1N0
cmluZyYgbG9jYWxlKQogewogICAgIEF0b21pY1N0cmluZyBsb2NhbGVLZXkgPSBsb2NhbGU7Ci0g
ICAgaWYgKGxvY2FsZS5pc0VtcHR5KCkgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdB
dHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCisgICAgaWYgKGxvY2FsZS5pc0Vt
cHR5KCkgfHwgIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGFuZ0F0
dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKICAgICAgICAgbG9jYWxlS2V5ID0g
ZGVmYXVsdExhbmd1YWdlKCk7CiAgICAgTG9jYWxlSWRlbnRpZmllclRvTG9jYWxlTWFwOjpBZGRS
ZXN1bHQgcmVzdWx0ID0gbV9sb2NhbGVDYWNoZS5hZGQobG9jYWxlS2V5LCBudWxscHRyKTsKICAg
ICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0ODcsNyArMTQ4Nyw3IEBAIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gRWxlbWVu
dDo6Y3JlYXRlU2gKICAgICAgICAgZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOwogCiAjaWYg
RU5BQkxFKFNIQURPV19ET00pCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmF1dGhv
clNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50
RW5hYmxlZCgpKSB7CiAgICAgICAgIGFkZFNoYWRvd1Jvb3QoU2hhZG93Um9vdDo6Y3JlYXRlKGRv
Y3VtZW50KCksIFNoYWRvd1Jvb3Q6OkF1dGhvclNoYWRvd1Jvb3QpKTsKICAgICAgICAgcmV0dXJu
IHNoYWRvd1Jvb3QoKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTk3LDcgKzk3LDcgQEAg
UG9zaXRpb246OlBvc2l0aW9uKFBhc3NSZWZQdHI8Tm9kZT4gYW5jaAogICAgICwgbV9pc0xlZ2Fj
eUVkaXRpbmdQb3NpdGlvbih0cnVlKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIEFT
U0VSVCgobV9hbmNob3JOb2RlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVu
YWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3Qo
KSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKKyAgICBBU1NFUlQoKG1fYW5j
aG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRv
d0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRv
d1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKICNlbHNlCiAgICAg
QVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkgfHwg
bV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5vZGUoKSk7CiAjZW5kaWYKQEAgLTExMSw3ICsxMTEs
NyBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNoCiAgICAgLCBtX2lz
TGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGZhbHNlKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQot
ICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRv
d0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRv
d1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKKyAgICBBU1NFUlQo
KG1fYW5jaG9yTm9kZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNoYWRvd0RPTUVuYWJsZWQoKSkgfHwgIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5p
c1NoYWRvd1Jvb3QoKSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKICNlbHNl
CiAgICAgQVNTRVJUKCFtX2FuY2hvck5vZGUgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290
KCkgfHwgbV9hbmNob3JOb2RlID09IGNvbnRhaW5lck5vZGUoKSk7CiAjZW5kaWYKQEAgLTEzMCw3
ICsxMzAsNyBAQCBQb3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNoCiAgICAg
LCBtX2lzTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKGZhbHNlKQogewogI2lmIEVOQUJMRShTSEFET1df
RE9NKQotICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYWRvd0RPTUVuYWJsZWQoKSkKKyAgICBBU1NFUlQoKG1fYW5jaG9yTm9kZSAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKSkKICAg
ICAgICAgICAgfHwgIW1fYW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5j
aG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOwogI2Vsc2UK
ICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG1fYW5j
aG9yTm9kZS5nZXQoKSkgfHwgIW1fYW5jaG9yTm9kZS0+aXNTaGFkb3dSb290KCkpOwpAQCAtODc1
LDcgKzg3NSw3IEBAIENvbnRhaW5lck5vZGUqIFBvc2l0aW9uOjpmaW5kUGFyZW50KGNvbnMKICAg
ICAvLyBGSVhNRTogU2VlIGh0dHA6Ly93ZWIudWcvODI2OTcKIAogI2lmIEVOQUJMRShTSEFET1df
RE9NKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkp
CisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93
RE9NRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbm9kZS0+cGFyZW50Tm9kZSgpOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcg
KzMyMiw3IEBAIERPTVNlbGVjdGlvbiogVHJlZVNjb3BlOjpnZXRTZWxlY3Rpb24oKQogICAgIC8v
IGFzIGEgY29udGFpbmVyLiBJdCBpcyBub3cgZW5hYmxlZCBvbmx5IGlmIHJ1bnRpbWUgU2hhZG93
IERPTSBmZWF0dXJlIGlzIGVuYWJsZWQuCiAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04MjY5NwogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpIHsKKyAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVk
KCkpIHsKICAgICAgICAgbV9zZWxlY3Rpb24gPSBET01TZWxlY3Rpb246OmNyZWF0ZSh0aGlzKTsK
ICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uLmdldCgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9tYWtlX25hbWVzLnBsCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20v
bWFrZV9uYW1lcy5wbAkod29ya2luZyBjb3B5KQpAQCAtNDEwLDcgKzQxMCw3IEBAIEVORAogICAg
IG15ICRydW50aW1lQ29uZGl0aW9uYWwgPSAkZW5hYmxlZFRhZ3N7JHRhZ05hbWV9e3J1bnRpbWVD
b25kaXRpb25hbH07CiAgICAgaWYgKCRydW50aW1lQ29uZGl0aW9uYWwpIHsKICAgICAgICAgcHJp
bnQgRiA8PEVORAotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6JHtydW50aW1lQ29u
ZGl0aW9uYWx9RW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS4ke3J1bnRpbWVDb25kaXRpb25hbH1FbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiAwOwogRU5ECiA7CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCBFTkQKICAgICAgICAgICAgIHBy
aW50IEYgPDxFTkQKIHN0YXRpYyBKU0RPTVdyYXBwZXIqIGNyZWF0ZSR7SlNJbnRlcmZhY2VOYW1l
fVdyYXBwZXIoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQYXNzUmVmUHRyPCRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50PiBlbGVtZW50KQogewot
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6JHtydW50aW1lQ29uZGl0aW9uYWx9RW5h
YmxlZCgpKSB7CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJsZWQoKSkgewogICAgICAgICBBU1NFUlQoIWVs
ZW1lbnQgfHwgZWxlbWVudC0+aXMkcGFyYW1ldGVyc3tmYWxsYmFja0ludGVyZmFjZU5hbWV9KCkp
OwogICAgICAgICByZXR1cm4gQ1JFQVRFX0RPTV9XUkFQUEVSKGV4ZWMsIGdsb2JhbE9iamVjdCwg
JHBhcmFtZXRlcnN7ZmFsbGJhY2tKU0ludGVyZmFjZU5hbWV9LCBlbGVtZW50LmdldCgpKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFy
cyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAg
ICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENv
cHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKICAqIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMTY0Niw3
ICsxNjQ2LDcgQEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50Ojppc1N0ZXBwYWJsZSgpIGNvbgogYm9v
bCBIVE1MSW5wdXRFbGVtZW50Ojppc1NwZWVjaEVuYWJsZWQoKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3IgUkFOR0UsIEVNQUlMLCBVUkwsIENPTE9SIGFuZCBEQVRFL1RJ
TUUgaW5wdXQgdHlwZXMuCi0gICAgcmV0dXJuIG1faW5wdXRUeXBlLT5zaG91bGRSZXNwZWN0U3Bl
ZWNoQXR0cmlidXRlKCkgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3BlZWNoSW5wdXRFbmFi
bGVkKCkgJiYgaGFzQXR0cmlidXRlKHdlYmtpdHNwZWVjaEF0dHIpOworICAgIHJldHVybiBtX2lu
cHV0VHlwZS0+c2hvdWxkUmVzcGVjdFNwZWVjaEF0dHJpYnV0ZSgpICYmIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc3BlZWNoSW5wdXRFbmFibGVkKCkgJiYgaGFzQXR0
cmlidXRlKHdlYmtpdHNwZWVjaEF0dHIpOwogfQogCiAjZW5kaWYKQEAgLTE5NTAsNyArMTk1MCw3
IEBAIGJvb2wgSFRNTElucHV0RWxlbWVudDo6c2V0dXBEYXRlVGltZUNob28KICAgICBwYXJhbWV0
ZXJzLm1pbmltdW0gPSBtaW5pbXVtKCk7CiAgICAgcGFyYW1ldGVycy5tYXhpbXVtID0gbWF4aW11
bSgpOwogICAgIHBhcmFtZXRlcnMucmVxdWlyZWQgPSBpc1JlcXVpcmVkKCk7Ci0gICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQogICAgICAgICBwYXJh
bWV0ZXJzLmxvY2FsZSA9IGRlZmF1bHRMYW5ndWFnZSgpOwogICAgIGVsc2UgewogICAgICAgICBB
dG9taWNTdHJpbmcgY29tcHV0ZWRMb2NhbGUgPSBjb21wdXRlSW5oZXJpdGVkTGFuZ3VhZ2UoKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24g
MTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTM1LDcgKzUzNSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Zmlu
aXNoUGFyc2luZ0NoaWwKICNlbmRpZgogICAgIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAg
ICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkp
CisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdHJhY2tE
ZXNjZW5kYW50cyA9IGRlc2NlbmRhbnRzT2ZUeXBlPEhUTUxUcmFja0VsZW1lbnQ+KHRoaXMpOwpA
QCAtNjY5LDcgKzY2OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2NoZWR1bGVEZWxheWVk
QWMKICAgICB9CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKGFjdGlvblR5cGUgJiBD
b25maWd1cmVUZXh0VHJhY2tzKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChhY3Rpb25UeXBlICYg
Q29uZmlndXJlVGV4dFRyYWNrcykpCiAgICAgICAgIHNldEZsYWdzKG1fcGVuZGluZ0FjdGlvbkZs
YWdzLCBDb25maWd1cmVUZXh0VHJhY2tzKTsKICNlbmRpZgogCkBAIC03MDYsNyArNzA2LDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaQogICAgIFJlZjxIVE1MTWVk
aWFFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gbG9hZE5leHRTb3VyY2VDaGlsZCBtYXkgZmly
ZSAnYmVmb3JlbG9hZCcsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgog
CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChtX3BlbmRpbmdBY3Rpb25GbGFncyAmIENv
bmZpZ3VyZVRleHRUcmFja3MpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKG1fcGVuZGluZ0FjdGlv
bkZsYWdzICYgQ29uZmlndXJlVGV4dFRyYWNrcykpCiAgICAgICAgIGNvbmZpZ3VyZVRleHRUcmFj
a3MoKTsKICNlbmRpZgogCkBAIC03MTgsNyArNzE4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50
Ojpsb2FkVGltZXJGaXJlZChUaQogICAgIH0KIAogI2lmIFVTRShQTEFURk9STV9URVhUX1RSQUNL
X01FTlUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkgJiYgKG1fcGVuZGluZ0FjdGlvbkZsYWdzICYgVGV4dFRyYWNrQ2hhbmdlc05vdGlm
aWNhdGlvbikpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSAmJiAobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBU
ZXh0VHJhY2tDaGFuZ2VzTm90aWZpY2F0aW9uKSkKICAgICAgICAgbm90aWZ5TWVkaWFQbGF5ZXJP
ZlRleHRUcmFja0NoYW5nZXMoKTsKICNlbmRpZgogCkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9yTG9hZCgpCiAgICAgICAgIHNjaGVkdWxlRXZlbnQo
ZXZlbnROYW1lcygpLmVtcHRpZWRFdmVudCk7CiAgICAgICAgIHVwZGF0ZU1lZGlhQ29udHJvbGxl
cigpOwogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCiAgICAgICAgICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKDApOwogI2VuZGlmCiAg
ICAgfQpAQCAtODk4LDcgKzg5OCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVy
bmFsKCkKIAogICAgIC8vIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3NBcmVSZWFkeSB3aWxs
IG5lZWQgIi4uLiB0aGUgdGV4dCB0cmFja3Mgd2hvc2UgbW9kZSB3YXMgbm90IGluIHRoZQogICAg
IC8vIGRpc2FibGVkIHN0YXRlIHdoZW4gdGhlIGVsZW1lbnQncyByZXNvdXJjZSBzZWxlY3Rpb24g
YWxnb3JpdGhtIGxhc3Qgc3RhcnRlZCIuCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CiAgICAg
ICAgIG1fdGV4dFRyYWNrc1doZW5SZXNvdXJjZVNlbGVjdGlvbkJlZ2FuLmNsZWFyKCk7CiAgICAg
ICAgIGlmIChtX3RleHRUcmFja3MpIHsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3RleHRUcmFja3MtPmxlbmd0aCgpOyArK2kpIHsKQEAgLTE4MjIsNyArMTgyMiw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWQKICAgICBSZWFkeVN0YXRl
IG5ld1N0YXRlID0gc3RhdGljX2Nhc3Q8UmVhZHlTdGF0ZT4oc3RhdGUpOwogCiAjaWYgRU5BQkxF
KFZJREVPX1RSQUNLKQotICAgIGJvb2wgdHJhY2tzQXJlUmVhZHkgPSAhUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSB8fCB0ZXh0VHJhY2tzQXJlUmVhZHko
KTsKKyAgICBib29sIHRyYWNrc0FyZVJlYWR5ID0gIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSB8fCB0ZXh0VHJhY2tzQXJl
UmVhZHkoKTsKIAogICAgIGlmIChuZXdTdGF0ZSA9PSBvbGRTdGF0ZSAmJiBtX3RyYWNrc0FyZVJl
YWR5ID09IHRyYWNrc0FyZVJlYWR5KQogICAgICAgICByZXR1cm47CkBAIC0xOTI3LDcgKzE5Mjcs
NyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldFJlYWR5U3RhdGUoTWVkCiAgICAgdXBkYXRl
UGxheVN0YXRlKCk7CiAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRl
eHRUcmFja0N1ZXMoY3VycmVudFRpbWUoKSk7CiAjZW5kaWYKIH0KQEAgLTI4MTAsNyArMjgxMCw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGxheWJhY2tQcm9ncmVzc1QKICAgICAgICAgbWVk
aWFDb250cm9scygpLT5wbGF5YmFja1Byb2dyZXNzZWQoKTsKIAogI2lmIEVOQUJMRShWSURFT19U
UkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICB1cGRhdGVBY3RpdmVUZXh0VHJh
Y2tDdWVzKGN1cnJlbnRUaW1lKCkpOwogI2VuZGlmCiB9CkBAIC0yODYyLDcgKzI4NjIsNyBAQCBk
b3VibGUgSFRNTE1lZGlhRWxlbWVudDo6cGVyY2VudExvYWRlZCgpCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRBdWRpb1RyYWNrKFBhc3NSZWZQdHI8QXVkaW9UcmFj
a1ByaXZhdGU+IHBycFRyYWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgYWRkQXVkaW9UcmFjayhBdWRpb1RyYWNrOjpjcmVhdGUodGhpcywgcHJw
VHJhY2spKTsKQEAgLTI4NzAsNyArMjg3MCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFk
ZFRleHRUcmFjayhQYXNzUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGU+IHBycFRyYWNrKQog
ewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8v
IDQuOC4xMC4xMi4yIFNvdXJjaW5nIGluLWJhbmQgdGV4dCB0cmFja3MKQEAgLTI5MDUsNyArMjkw
NSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEaWRBZGQKIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxW
aWRlb1RyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBhZGRWaWRlb1RyYWNrKFZpZGVvVHJhY2s6OmNyZWF0ZSh0
aGlzLCBwcnBUcmFjaykpOwpAQCAtMzAxMCw3ICszMDEwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVt
ZW50OjpjbG9zZUNhcHRpb25UcmFjawogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlv
VHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNrPiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1ZGlvVHJhY2tzKCktPmFwcGVuZCh0cmFj
ayk7CkBAIC0zMDE4LDcgKzMwMTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlv
VHJhY2soUGFzCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFBhc3NSZWZQ
dHI8VGV4dFRyYWNrPiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIHRleHRUcmFja3MoKS0+YXBwZW5kKHRyYWNrKTsKQEAgLTMwMjgsNyAr
MzAyOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKFBhc3MKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFBhc3NSZWZQdHI8VmlkZW9UcmFjaz4g
dHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICB2aWRlb1RyYWNrcygpLT5hcHBlbmQodHJhY2spOwpAQCAtMzAzNiw3ICszMDM2LDcgQEAgdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjphZGRWaWRlb1RyYWNrKFBhcwogCiB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnJlbW92ZUF1ZGlvVHJhY2soQXVkaW9UcmFjayogdHJhY2spCiB7Ci0gICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2F1ZGlvVHJhY2tzLT5yZW1v
dmUodHJhY2spOwpAQCAtMzA0NCw3ICszMDQ0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpy
ZW1vdmVBdWRpb1RyYWNrKAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFj
ayhUZXh0VHJhY2sqIHRyYWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgVHJhY2tEaXNwbGF5VXBkYXRlU2NvcGUgc2NvcGUodGhpcyk7CkBAIC0z
MDU5LDcgKzMwNTksNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZVRleHRUcmFjayhU
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVmlkZW9UcmFjayhWaWRlb1RyYWNrKiB0
cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fdmlkZW9UcmFja3MtPnJlbW92ZSh0cmFjayk7CkBAIC0zMDg2LDcgKzMwODYsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZUFsbEluYmFuZFRyCiAKIFBhc3NSZWZQdHI8VGV4dFRy
YWNrPiBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgLy8gNC44LjEwLjEyLjQgVGV4dCB0cmFjayBBUEkKQEAgLTMxMjMsNyArMzEyMyw3IEBAIFBh
c3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MTWVkaWFFbGVtZW50OjoKIAogQXVkaW9UcmFja0xpc3Qq
IEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVHJhY2tzKCkKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX2F1ZGlvVHJhY2tzKQpAQCAtMzEz
NCw3ICszMTM0LDcgQEAgQXVkaW9UcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OmF1ZGlvVAog
CiBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tzKCkgCiB7Ci0gICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQor
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRW
aWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIGlmICghbV90ZXh0
VHJhY2tzKQpAQCAtMzE0NSw3ICszMTQ1LDcgQEAgVGV4dFRyYWNrTGlzdCogSFRNTE1lZGlhRWxl
bWVudDo6dGV4dFRyYQogCiBWaWRlb1RyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6dmlkZW9U
cmFja3MoKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICBpZiAoIW1fdmlkZW9UcmFja3MpCkBAIC0zMTU4LDcgKzMxNTgsNyBAQCB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayhICiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVu
dC0+aGFzVGFnTmFtZSh0cmFja1RhZykpOwogCi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyA0LjguMTAuMTIuMyBTb3VyY2luZyBvdXQtb2YtYmFuZCB0
ZXh0IHRyYWNrcwpAQCAtMzE4NCw3ICszMTg0LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpk
aWRSZW1vdmVUZXh0VHJhYwogewogICAgIEFTU0VSVCh0cmFja0VsZW1lbnQtPmhhc1RhZ05hbWUo
dHJhY2tUYWcpKTsKIAotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwog
CiAjaWYgIUxPR19ESVNBQkxFRApAQCAtMzYyNiw3ICszNjI2LDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllclRpbWVDaAogICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1l
bnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQiKTsKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykK
LSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJr
aXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVz
KGN1cnJlbnRUaW1lKCkpOwogI2VuZGlmCiAKQEAgLTQxMTcsNyArNDExNyw3IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQKICAgICBtX3JlYWR5U3RhdGUgPSBIQVZF
X05PVEhJTkc7CiAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVyKCk7CiAjaWYgRU5BQkxFKFZJREVP
X1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNr
RW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRU
cmFja0N1ZXMoMCk7CiAjZW5kaWYKIH0KQEAgLTQ0ODMsNyArNDQ4Myw3IEBAIGJvb2wgSFRNTE1l
ZGlhRWxlbWVudDo6aGFzQ2xvc2VkQ2FwdGlvbnMKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHx8ICFtX3RleHRUcmFja3MpCisgICAgaWYgKCFSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFi
bGVkKCkgfHwgIW1fdGV4dFRyYWNrcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewpAQCAt
NDUyNyw3ICs0NTI3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9u
cwogICAgIG1fcGxheWVyLT5zZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoY2xvc2VkQ2FwdGlvblZp
c2libGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CisgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkgewogICAgICAgICBtYXJrQ2FwdGlvbkFuZFN1YnRpdGxlVHJhY2tzQXNVbmNvbmZpZ3VyZWQo
SW1tZWRpYXRlbHkpOwogICAgICAgICB1cGRhdGVUZXh0VHJhY2tEaXNwbGF5KCk7CiAgICAgfQpA
QCAtNDcyNyw3ICs0NzI3LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0
VHJhYwogCiAgICAgbWVkaWFDb250cm9scygpLT5jaGFuZ2VkQ2xvc2VkQ2FwdGlvbnNWaXNpYmls
aXR5KCk7CiAgICAgCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVv
VHJhY2tFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKSB7CiAgICAgICAgIHVwZGF0ZVRl
eHRUcmFja0Rpc3BsYXkoKTsKICAgICAgICAgdXBkYXRlQWN0aXZlVGV4dFRyYWNrQ3VlcyhjdXJy
ZW50VGltZSgpKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0
eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBIVE1M
U3R5bGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjbwogICAgIGlmIChuYW1lID09IHRpdGxlQXR0
ciAmJiBzaGVldCgpKQogICAgICAgICBzaGVldCgpLT5zZXRUaXRsZSh2YWx1ZSk7CiAjaWYgRU5B
QkxFKFNUWUxFX1NDT1BFRCkKLSAgICBlbHNlIGlmIChuYW1lID09IHNjb3BlZEF0dHIgJiYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkpCisgICAgZWxzZSBpZiAo
bmFtZSA9PSBzY29wZWRBdHRyICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc3R5bGVTY29wZWRFbmFibGVkKCkpCiAgICAgICAgIHNjb3BlZEF0dHJpYnV0ZUNoYW5n
ZWQoIXZhbHVlLmlzTnVsbCgpKTsKICNlbmRpZgogICAgIGVsc2UgaWYgKG5hbWUgPT0gbWVkaWFB
dHRyKSB7CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpmaW5pc2hQ
YXJzaW5nQ2hpbAogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiB2b2lkIEhUTUxTdHlsZUVsZW1l
bnQ6OnNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQoYm9vbCBzY29wZWQpCiB7Ci0gICAgQVNTRVJUKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKKyAgICBBU1NFUlQo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJs
ZWQoKSk7CiAKICAgICBpZiAoIWluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6cmVnaXN0ZXJXaXRoU2NvcGkKIAog
dm9pZCBIVE1MU3R5bGVFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKENvbnRhaW5l
ck5vZGUqIHNjb3BlKQogewotICAgIEFTU0VSVChtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3Rh
dGUgIT0gTm90UmVnaXN0ZXJlZCB8fCAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29w
ZWRFbmFibGVkKCkpOworICAgIEFTU0VSVChtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUg
IT0gTm90UmVnaXN0ZXJlZCB8fCAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSk7CiAgICAgaWYgKCFpc1JlZ2lzdGVyZWRBc1Njb3Bl
ZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIEhUTUxTdHls
ZUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoU2NvCiAKIGJvb2wgSFRNTFN0eWxlRWxlbWVudDo6c2Nv
cGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVT
Y29wZWRFbmFibGVkKCkgJiYgZmFzdEhhc0F0dHJpYnV0ZShzY29wZWRBdHRyKTsKKyAgICByZXR1
cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVu
YWJsZWQoKSAmJiBmYXN0SGFzQXR0cmlidXRlKHNjb3BlZEF0dHIpOwogfQogCiB2b2lkIEhUTUxT
dHlsZUVsZW1lbnQ6OnNldFNjb3BlZChib29sIHNjb3BlZFZhbHVlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEzIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTkz
LDcgKzkzLDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YQogCiB2
b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7Ci0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKSB7CiAgICAgICAgIGlmIChuYW1lID09IHNyY0F0dHIpIHsKICAgICAgICAgICAgIGlmICgh
dmFsdWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgIHNjaGVkdWxlTG9hZCgpOwpAQCAtMTk2
LDcgKzE5Niw3IEBAIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6c2NoZWR1bGVMb2FkKCkKICAgICBp
ZiAobV9sb2FkVGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlm
ICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAyLiBJZiB0aGUgdGV4dCB0
cmFjaydzIHRleHQgdHJhY2sgbW9kZSBpcyBub3Qgc2V0IHRvIG9uZSBvZiBoaWRkZW4gb3Igc2hv
d2luZywgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBIVE1MVHJh
Y2tFbGVtZW50Ojpsb2FkVGltZXJGaXJlZChUaQogCiBib29sIEhUTUxUcmFja0VsZW1lbnQ6OmNh
bkxvYWRVcmwoY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogcGFyZW50ID0gbWVk
aWFFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuY3BwCShyZXZpc2lvbiAx
NTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIsNyArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25v
bGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEs
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAy
MDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkKICAqIENvcHlyaWdodCAoQykg
MjAwNyBTYW11ZWwgV2VpbmlnIChzYW1Ad2Via2l0Lm9yZykKICAqIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxMCwgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAt
OTksMTUgKzk5LDE1IEBAIHN0YXRpYyBPd25QdHI8SW5wdXRUeXBlRmFjdG9yeU1hcD4gY3JlYXQK
ICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6Y29sb3IoKSwgJkNvbG9ySW5wdXRUeXBlOjpj
cmVhdGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURSkKLSAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlRGF0ZUVuYWJsZWQoKSkKKyAgICBpZiAoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVEYXRlRW5hYmxl
ZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0ZSgpLCAmRGF0ZUlucHV0
VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lO
Q09NUExFVEUpCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVU
aW1lRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLmlucHV0VHlwZURhdGVUaW1lRW5hYmxlZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1
dFR5cGVOYW1lczo6ZGF0ZXRpbWUoKSwgJkRhdGVUaW1lSW5wdXRUeXBlOjpjcmVhdGUpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKLSAgICBpZiAoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQoKSkKKyAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVEYXRl
VGltZUxvY2FsRW5hYmxlZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6ZGF0
ZXRpbWVsb2NhbCgpLCAmRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgog
ICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjplbWFpbCgpLCAmRW1haWxJbnB1dFR5cGU6OmNy
ZWF0ZSk7CkBAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIE93blB0cjxJbnB1dFR5cGVGYWN0b3J5
TWFwPiBjcmVhdAogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpoaWRkZW4oKSwgJkhpZGRl
bklucHV0VHlwZTo6Y3JlYXRlKTsKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6aW1hZ2Uo
KSwgJkltYWdlSW5wdXRUeXBlOjpjcmVhdGUpOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX01PTlRI
KQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVNb250aEVuYWJsZWQo
KSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1
dFR5cGVNb250aEVuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6Om1v
bnRoKCksICZNb250aElucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogICAgIG1hcC0+YWRkKElu
cHV0VHlwZU5hbWVzOjpudW1iZXIoKSwgJk51bWJlcklucHV0VHlwZTo6Y3JlYXRlKTsKQEAgLTEy
NywxMiArMTI3LDEyIEBAIHN0YXRpYyBPd25QdHI8SW5wdXRUeXBlRmFjdG9yeU1hcD4gY3JlYXQK
ICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6c3VibWl0KCksICZTdWJtaXRJbnB1dFR5cGU6
OmNyZWF0ZSk7CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnRlbGVwaG9uZSgpLCAmVGVs
ZXBob25lSW5wdXRUeXBlOjpjcmVhdGUpOwogI2lmIEVOQUJMRShJTlBVVF9UWVBFX1RJTUUpCi0g
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZVRpbWVFbmFibGVkKCkpCisg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuaW5wdXRUeXBl
VGltZUVuYWJsZWQoKSkKICAgICAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OnRpbWUoKSwg
JlRpbWVJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5kaWYKICAgICBtYXAtPmFkZChJbnB1dFR5cGVO
YW1lczo6dXJsKCksICZVUkxJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfV0VFSykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlV2Vla0Vu
YWJsZWQoKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5pbnB1dFR5cGVXZWVrRW5hYmxlZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1l
czo6d2VlaygpLCAmV2Vla0lucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogICAgIC8vIE5vIG5l
ZWQgdG8gcmVnaXN0ZXIgInRleHQiIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQgdHlwZS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAJKHJl
dmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9s
aWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0xOTA1LDcgKzE5MDYsNyBAQCB2b2lkIENvbnRlbnRTZWN1cml0
eVBvbGljeTo6cmVwb3J0QmxvY2tlCiBib29sIENvbnRlbnRTZWN1cml0eVBvbGljeTo6ZXhwZXJp
bWVudGFsRmVhdHVyZXNFbmFibGVkKCkgY29uc3QKIHsKICNpZiBFTkFCTEUoQ1NQX05FWFQpCi0g
ICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmV4cGVyaW1lbnRhbENvbnRlbnRTZWN1
cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCgpOworICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGlj
eUZlYXR1cmVzRW5hYmxlZCgpOwogI2Vsc2UKICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyNCwxMCAr
MTYyNCwxMCBAQCBib29sIERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBCiAgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCAmJiBh
bGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCiAgICAgICAgIGFkZEJlZm9yZVVubG9h
ZEV2ZW50TGlzdGVuZXIodGhpcyk7CiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKLSAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW1vdGlvbkV2ZW50ICYm
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmljZU1vdGlvbkVuYWJsZWQoKSkgeworICAgIGVs
c2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQgJiYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kZXZpY2VNb3Rpb25FbmFibGVk
KCkpIHsKICAgICAgICAgaWYgKERldmljZU1vdGlvbkNvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBE
ZXZpY2VNb3Rpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UoKSkpCiAgICAgICAgICAgICBjb250cm9s
bGVyLT5hZGREZXZpY2VFdmVudExpc3RlbmVyKHRoaXMpOwotICAgIH0gZWxzZSBpZiAoZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2VvcmllbnRhdGlvbkV2ZW50ICYmIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmRldmljZU9yaWVudGF0aW9uRW5hYmxlZCgpKSB7CisgICAgfSBlbHNlIGlm
IChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQgJiYgUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5kZXZpY2VPcmllbnRhdGlvbkVu
YWJsZWQoKSkgewogICAgICAgICBpZiAoRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyKiBjb250
cm9sbGVyID0gRGV2aWNlT3JpZW50YXRpb25Db250cm9sbGVyOjpmcm9tKHBhZ2UoKSkpCiAgICAg
ICAgICAgICBjb250cm9sbGVyLT5hZGREZXZpY2VFdmVudExpc3RlbmVyKHRoaXMpOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICsz
LDcgQEAKICAqICAgICAgICAgICAgICAgICAgICAgMTk5OSBMYXJzIEtub2xsIDxrbm9sbEBrZGUu
b3JnPgogICogICAgICAgICAgICAgICAgICAgICAxOTk5IEFudHRpIEtvaXZpc3RvIDxrb2l2aXN0
b0BrZGUub3JnPgogICogICAgICAgICAgICAgICAgICAgICAyMDAwIERpcmsgTXVlbGxlciA8bXVl
bGxlckBrZGUub3JnPgotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIwMDYgR3JhaGFtIERlbm5pcyAoZ3JhaGFtLmRlbm5p
c0BnbWFpbC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAo
YXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCkBAIC0yNzY2LDcgKzI3NjYsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9y
bVBvc3RMYXlvdXRUYXNrcygpCiAgICAgICAgIGZyYW1lKCkubG9hZGVyKCkuZGlkTGF5b3V0KG1p
bGVzdG9uZXNBY2hpZXZlZCk7CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkpCisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVu
dHNFbmFibGVkKCkpCiAgICAgICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+Zm9udGxvYWRlcigpLT5k
aWRMYXlvdXQoKTsKICNlbmRpZgogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NiwxNSAr
NjYsMTUgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW50ZXJuYWxTZXR0aW5nczo6QmFja3Vw
OjpCYWNrdXAoU2V0dGluZ3MmIHNldHRpbmdzKQotICAgIDogbV9vcmlnaW5hbENTU0V4Y2x1c2lv
bnNFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0V4Y2x1c2lvbnNFbmFibGVkKCkp
Ci0gICAgLCBtX29yaWdpbmFsQ1NTU2hhcGVzRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojpjc3NTaGFwZXNFbmFibGVkKCkpCisgICAgOiBtX29yaWdpbmFsQ1NTRXhjbHVzaW9uc0VuYWJs
ZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NFeGNsdXNpb25z
RW5hYmxlZCgpKQorICAgICwgbV9vcmlnaW5hbENTU1NoYXBlc0VuYWJsZWQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NTaGFwZXNFbmFibGVkKCkpCiAgICAgLCBt
X29yaWdpbmFsQ1NTVmFyaWFibGVzRW5hYmxlZChzZXR0aW5ncy5jc3NWYXJpYWJsZXNFbmFibGVk
KCkpCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgLCBtX29yaWdpbmFsU2hhZG93RE9NRW5h
YmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFibGVkKCkpCi0gICAgLCBt
X29yaWdpbmFsQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6YXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoKSkKKyAgICAs
IG1fb3JpZ2luYWxTaGFkb3dET01FbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKQorICAgICwgbV9vcmlnaW5hbEF1dGhvclNo
YWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuYXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoKSkKICNlbmRp
ZgogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCi0gICAgLCBtX29yaWdpbmFsU3R5bGVTY29wZWQo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkpCisgICAgLCBtX29y
aWdpbmFsU3R5bGVTY29wZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5zdHlsZVNjb3BlZEVuYWJsZWQoKSkKICNlbmRpZgogICAgICwgbV9vcmlnaW5hbEVkaXRpbmdC
ZWhhdmlvcihzZXR0aW5ncy5lZGl0aW5nQmVoYXZpb3JUeXBlKCkpCiAjaWYgRU5BQkxFKFRFWFRf
QVVUT1NJWklORykKQEAgLTg1LDcgKzg1LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpC
YWNrdXAoU2V0dGluZwogICAgICwgbV9vcmlnaW5hbE1lZGlhVHlwZU92ZXJyaWRlKHNldHRpbmdz
Lm1lZGlhVHlwZU92ZXJyaWRlKCkpCiAgICAgLCBtX29yaWdpbmFsQ2FudmFzVXNlc0FjY2VsZXJh
dGVkRHJhd2luZyhzZXR0aW5ncy5jYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKCkpCiAgICAg
LCBtX29yaWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkKHNldHRpbmdzLm1vY2tTY3JvbGxiYXJz
RW5hYmxlZCgpKQotICAgICwgbV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxl
ZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJ
RW5hYmxlZCgpKQorICAgICwgbV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxl
ZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxhbmdBdHRyaWJ1dGVB
d2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCiAgICAgLCBtX2ltYWdlc0VuYWJsZWQoc2V0dGlu
Z3MuYXJlSW1hZ2VzRW5hYmxlZCgpKQogICAgICwgbV9taW5pbXVtVGltZXJJbnRlcnZhbChzZXR0
aW5ncy5taW5ET01UaW1lckludGVydmFsKCkpCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAt
MTAyLDE1ICsxMDIsMTUgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoU2V0dGlu
ZwogCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFNldHRpbmdzJiBz
ZXR0aW5ncykKIHsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NFeGNsdXNpb25z
RW5hYmxlZChtX29yaWdpbmFsQ1NTRXhjbHVzaW9uc0VuYWJsZWQpOwotICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldENTU1NoYXBlc0VuYWJsZWQobV9vcmlnaW5hbENTU1NoYXBlc0VuYWJs
ZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NT
RXhjbHVzaW9uc0VuYWJsZWQobV9vcmlnaW5hbENTU0V4Y2x1c2lvbnNFbmFibGVkKTsKKyAgICBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1NoYXBlc0VuYWJs
ZWQobV9vcmlnaW5hbENTU1NoYXBlc0VuYWJsZWQpOwogICAgIHNldHRpbmdzLnNldENTU1Zhcmlh
Ymxlc0VuYWJsZWQobV9vcmlnaW5hbENTU1ZhcmlhYmxlc0VuYWJsZWQpOwogI2lmIEVOQUJMRShT
SEFET1dfRE9NKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNoYWRvd0RPTUVuYWJs
ZWQobV9vcmlnaW5hbFNoYWRvd0RPTUVuYWJsZWQpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKG1fb3JpZ2luYWxBdXRo
b3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTaGFkb3dET01FbmFibGVkKG1fb3JpZ2luYWxTaGFk
b3dET01FbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKG1fb3JpZ2luYWxBdXRo
b3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoU1RZ
TEVfU0NPUEVEKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5h
YmxlZChtX29yaWdpbmFsU3R5bGVTY29wZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuc2V0U3R5bGVTY29wZWRFbmFibGVkKG1fb3JpZ2luYWxTdHlsZVNj
b3BlZCk7CiAjZW5kaWYKICAgICBzZXR0aW5ncy5zZXRFZGl0aW5nQmVoYXZpb3JUeXBlKG1fb3Jp
Z2luYWxFZGl0aW5nQmVoYXZpb3IpOwogI2lmIEVOQUJMRShURVhUX0FVVE9TSVpJTkcpCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OnJlc3RvcmVUbwog
ICAgIHNldHRpbmdzLnNldE1lZGlhVHlwZU92ZXJyaWRlKG1fb3JpZ2luYWxNZWRpYVR5cGVPdmVy
cmlkZSk7CiAgICAgc2V0dGluZ3Muc2V0Q2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhtX29y
aWdpbmFsQ2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyk7CiAgICAgc2V0dGluZ3Muc2V0TW9j
a1Njcm9sbGJhcnNFbmFibGVkKG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQpOwotICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9s
VUlFbmFibGVkKG1fbGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOworICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0TGFuZ0F0dHJpYnV0
ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQobV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJv
bFVJRW5hYmxlZCk7CiAgICAgc2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZChtX2ltYWdlc0VuYWJs
ZWQpOwogICAgIHNldHRpbmdzLnNldE1pbkRPTVRpbWVySW50ZXJ2YWwobV9taW5pbXVtVGltZXJJ
bnRlcnZhbCk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZv
aWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U2hhZG93RE9NRW5hYmwKICAgICB9CiAKICNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTaGFkb3dET01F
bmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAgICAgLy8gRXZlbiBT
SEFET1dfRE9NIGlzIG9mZiwgSW50ZXJuYWxTZXR0aW5ncyBhbGxvd3Mgc2V0U2hhZG93RE9NRW5h
YmxlZChmYWxzZSkgdG8KICAgICAvLyBoYXZlIGJyb2FkZXIgdGVzdCBjb3ZlcmFnZS4gQnV0IGl0
IGNhbm5vdCBiZSBzZXRTaGFkb3dET01FbmFibGVkKHRydWUpLgpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U2hhZG93RE9NRW5hYmwKIHZvaWQgSW50ZXJuYWxT
ZXR0aW5nczo6c2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoaXNFbmFibGVkKTsK
KyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldEF1dGhvclNo
YWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKGlzRW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShpc0VuYWJsZWQpOwogI2VuZGlmCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBJbnRl
cm5hbFNldHRpbmdzOjpzZXRBdXRob3JTaGFkb3dETwogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpz
ZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShTVFlMRV9T
Q09QRUQpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U3R5bGVTY29wZWRFbmFibGVk
KGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2V0U3R5bGVTY29wZWRFbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTM0NiwxMyArMzQ2LDEzIEBAIHZvaWQgSW50ZXJuYWxTZXR0
aW5nczo6c2V0VGV4dEF1dG9zaXppbmcKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0Q1NTRXhj
bHVzaW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBV
TlVTRURfUEFSQU0oZWMpOwotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0V4Y2x1
c2lvbnNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0Q1NTRXhjbHVzaW9uc0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6c2V0Q1NTU2hhcGVzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIFVOVVNFRF9QQVJBTShlYyk7Ci0gICAgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0Q1NTU2hhcGVzRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1NoYXBlc0VuYWJsZWQoZW5hYmxl
ZCk7CiB9CiAKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0Q1NTVmFyaWFibGVzRW5hYmxlZChi
b29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQg
SW50ZXJuYWxTZXR0aW5nczo6c2V0U3RvcmFnZUJsb2NraW4KIAogdm9pZCBJbnRlcm5hbFNldHRp
bmdzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChib29sIGVuYWJs
ZWQpCiB7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJl
Rm9ybUNvbnRyb2xVSUVuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS5zZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRJbWFnZXNFbmFi
bGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMiBAQAorMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEg
U2luZ2xldG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIxODgzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpvdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVz
dFJ1bm5lcik6IFVzZQorICAgICAgICBTaW5nbGV0b24gYWNjZXNzb3IuCisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjpzZXRTaGFkb3dET01FbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OnNldENTU1JlZ2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgIChX
ZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKTogRGl0dG8uCisgICAgICAgICogV2ViUHJvY2Vzcy9x
dC9XZWJQcm9jZXNzUXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVXZWJQcm9jZXNzKTogRGl0dG8uCisKIDIwMTMtMDktMjUgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXgg
YnVpbGQgd2l0aCBRdCA1LjIgUXRQb3NpdGlvbiBtb2R1bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTkxLDEyICsx
OTEsMTIgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6b3ZlcnJpZGVCb29sUHJlZmVyZQogCiAjaWYg
RU5BQkxFKENTU19SRUdJT05TKQogICAgIGlmIChwcmVmZXJlbmNlID09ICJXZWJLaXRDU1NSZWdp
b25zRW5hYmxlZCIpCi0gICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lv
bnNFbmFibGVkKGVuYWJsZWQpOworICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKGVuYWJsZWQpOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgIGlmIChwcmVmZXJlbmNlID09ICJXZWJLaXRD
U1NDb21wb3NpdGluZ0VuYWJsZWQiKQotICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGVuYWJs
ZWQpOwogI2VuZGlmCiAKICAgICAvLyBNYXAgdGhlIG5hbWVzIHVzZWQgaW4gTGF5b3V0VGVzdHMg
d2l0aCB0aGUgbmFtZXMgdXNlZCBpbiBXZWJDb3JlOjpTZXR0aW5ncyBhbmQgV2ViUHJlZmVyZW5j
ZXNTdG9yZS4KQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTZXJp
YWxMb2FkaW5nRW5hCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTaGFkb3dET01FbmFibGVkKGJv
b2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVk
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkBAIC02NTUsNyAr
NjU1LDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0U2hhZG93RE9NRW5hYmxlZAogdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lm
IEVOQUJMRShDU1NfUkVHSU9OUykKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NS
ZWdpb25zRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTY2NCw3ICs2NjQsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlOjpzZXRDU1NSZWdpb25zRW5hYmxlCiB2b2lkIEluamVjdGVkQnVuZGxlOjpz
ZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShDU1Nf
Q09NUE9TSVRJTkcpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29tcG9zaXRp
bmdFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkuc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lkIElu
amVjdGVkQnVuZGxlOjpzZXRDU1NDb21wb3NpdGluZ0VuCiB2b2lkIEluamVjdGVkQnVuZGxlOjpz
ZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoSUZS
QU1FX1NFQU1MRVNTKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNzSUZy
YW1lc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQ5MSw4ICsyNDkxLDggQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQcmVmZXJlbmNlcyhj
b25zdCBXZQogICAgIHNldHRpbmdzLnNldFNob3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcihzdG9y
ZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRpbGVkU2Nyb2xsaW5nSW5k
aWNhdG9yVmlzaWJsZUtleSgpKSk7CiAgICAgc2V0dGluZ3Muc2V0QWdncmVzc2l2ZVRpbGVSZXRl
bnRpb25FbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
YWdncmVzc2l2ZVRpbGVSZXRlbnRpb25FbmFibGVkS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRD
U1NDdXN0b21GaWx0ZXJFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJl
bmNlc0tleTo6Y3NzQ3VzdG9tRmlsdGVyRW5hYmxlZEtleSgpKSk7Ci0gICAgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NSZWdpb25zRW5hYmxlZEtleSgpKSk7Ci0gICAgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzQ29tcG9zaXRpbmdFbmFibGVkS2V5KCkp
KTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1Jl
Z2lvbnNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6
Y3NzUmVnaW9uc0VuYWJsZWRLZXkoKSkpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzQ29tcG9zaXRpbmdFbmFibGVkS2V5KCkpKTsK
ICAgICBzZXR0aW5ncy5zZXRDU1NHcmlkTGF5b3V0RW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmNzc0dyaWRMYXlvdXRFbmFibGVkS2V5KCkpKTsKICAg
ICBzZXR0aW5ncy5zZXRSZWdpb25CYXNlZENvbHVtbnNFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6cmVnaW9uQmFzZWRDb2x1bW5zRW5hYmxlZEtleSgp
KSk7CiAgICAgc2V0dGluZ3Muc2V0V2ViR0xFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6d2ViR0xFbmFibGVkS2V5KCkpKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0L1dlYlByb2Nlc3NRdC5jcHAJKHJldmlzaW9uIDE1NjQw
NCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGxhdGZvcm1Jbml0
aWFsaXplV2ViUHIKICAgICB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldFNwZWVjaElucHV0RW5hYmxlZChmYWxzZSk7CisgICAgV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTcGVlY2hJbnB1dEVuYWJs
ZWQoZmFsc2UpOwogCiAgICAgLy8gV2UnbGwgb25seSBpbnN0YWxsIHRoZSBRdCBidWlsdGluIGJ1
bmRsZSBpZiB3ZSBkb24ndCBoYXZlIG9uZSBnaXZlbiBieSB0aGUgVUkgcHJvY2Vzcy4KICAgICAv
LyBDdXJyZW50bHkgb25seSBXVFIgcHJvdmlkZXMgaXRzIG93biBidW5kbGUuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMy0wOS0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0b3IgUnVudGltZUVuYWJs
ZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbiAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMTg4MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9y
L1dlYktpdEV4cG9ydHMuZGVmLmluOgorICAgICAgICBFeHBvc2Ugc2luZ2xldG9uIGFjY2Vzc29y
IGZvciBETEwgY2xpZW50cy4KKwogMjAxMy0wOS0yNSAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8
YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBidWlsZCB3aXRoIFF0
IDUuMiBRdFBvc2l0aW9uIG1vZHVsZQpJbmRleDogU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJv
ai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2Vi
S2l0RXhwb3J0cy5kZWYuaW4JKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
S2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzcsOCArMjM3LDYgQEAgRVhQT1JUUwogICAgICAgICBzeW1ib2xX
aXRoUG9pbnRlcig/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUFFWFhaLCA/ZGlzY29ubmVjdEZyb250ZW5kQEluc3BlY3RvckNvbnRyb2xsZXJAV2ViQ29y
ZUBAUUVBQVhYWikKICNlbmRpZgogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXNBY3RpdmVJ
bnNlcnRpb25Qb2ludEBXZWJDb3JlQEBZQV9OUEJWTm9kZUAxQEBaLCA/aXNBY3RpdmVJbnNlcnRp
b25Qb2ludEBXZWJDb3JlQEBZQV9OUEVCVk5vZGVAMUBAWikKLSAgICAgICAgP2lzQ1NTRXhjbHVz
aW9uc0VuYWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05BCi0gICAgICAg
ID9pc0NTU1NoYXBlc0VuYWJsZWRAUnVudGltZUVuYWJsZWRGZWF0dXJlc0BXZWJDb3JlQEAwX05B
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pc1ByZWxvYWRlZEBDYWNoZWRSZXNvdXJjZUxv
YWRlckBXZWJDb3JlQEBRQkVfTkFCVlN0cmluZ0BXVEZAQEBaLCA/aXNQcmVsb2FkZWRAQ2FjaGVk
UmVzb3VyY2VMb2FkZXJAV2ViQ29yZUBAUUVCQV9OQUVCVlN0cmluZ0BXVEZAQEBaKQogICAgICAg
ICBzeW1ib2xXaXRoUG9pbnRlcig/anNBcnJheUBXZWJDb3JlQEBZQT9BVkpTVmFsdWVASlNDQEBQ
QVZFeGVjU3RhdGVAM0BQQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQdHJAVkRPTVN0
cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFosID9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1
ZUBKU0NAQFBFQVZFeGVjU3RhdGVAM0BQRUFWSlNET01HbG9iYWxPYmplY3RAMUBWPyRQYXNzUmVm
UHRyQFZET01TdHJpbmdMaXN0QFdlYkNvcmVAQEBXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRo
UG9pbnRlcig/bGFzdENoYW5nZVdhc1VzZXJFZGl0QEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
QFdlYkNvcmVAQFFCRV9OWFosID9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnRAV2ViQ29yZUBAUUVCQV9OWFopCkBAIC0yOTksNiArMjk3LDcgQEAgRVhQT1JU
UwogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0UHNldWRvQEVsZW1lbnRAV2ViQ29yZUBA
UUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQEBaLCA/c2V0UHNldWRvQEVsZW1lbnRAV2ViQ29yZUBA
UUVBQVhBRUJWQXRvbWljU3RyaW5nQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVy
KD9zZXRNZWRpYVR5cGVPdmVycmlkZUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWU3RyaW5nQFdU
RkBAQFosID9zZXRNZWRpYVR5cGVPdmVycmlkZUBTZXR0aW5nc0BXZWJDb3JlQEBRRUFBWEFFQlZT
dHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3NldHRpbmdzQERvY3Vt
ZW50QFdlYkNvcmVAQFFCRVBBVlNldHRpbmdzQDJAWFosID9zZXR0aW5nc0BEb2N1bWVudEBXZWJD
b3JlQEBRRUJBUEVBVlNldHRpbmdzQDJAWFopCisgICAgICAgID9zaGFyZWRGZWF0dXJlc0BSdW50
aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQFNBQUFWMTJAWFoKICAgICAgICAgc3ltYm9sV2l0
aFBvaW50ZXIoP3N1YnN0cmluZ0BTdHJpbmdAV1RGQEBRQkU/QVYxMkBJSUBaLCA/c3Vic3RyaW5n
QFN0cmluZ0BXVEZAQFFFQkE/QVYxMkBJSUBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/
c3VnZ2VzdGVkVmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQkVBQlZTdHJpbmdAV1RG
QEBYWiwgP3N1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUVCQUFFQlZT
dHJpbmdAV1RGQEBYWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP3RhcmdldEBIaXN0b3J5
SXRlbUBXZWJDb3JlQEBRQkVBQlZTdHJpbmdAV1RGQEBYWiwgP3RhcmdldEBIaXN0b3J5SXRlbUBX
ZWJDb3JlQEBRRUJBQUVCVlN0cmluZ0BXVEZAQFhaKQpJbmRleDogU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDktMjUgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3IgUnVu
dGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4My4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydDo6c2V0U3R5bGVT
Y29wZWRFbmFibGVkKTogdXNlCisgICAgICAgIHNpbmdsZXRvbiBhY2Nlc3Nvci4KKwogMjAxMy0w
OS0yMyAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0BibGFja2JlcnJ5LmNvbT4KIAogICAgICAgICBb
QmxhY2tCZXJyeV0gUG9vciByZW5kZXJpbmcgb3BlbmluZyBhIEdvb2dsZSBtYXAgc2hvcnQgbGlu
awpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnQuY3BwCShyZXZpc2lvbiAxNTY0MDQp
CisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMiBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydDo6c2NhbGVQYWdlQnkoCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkK
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBl
bmFibGVkKQogewotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5h
YmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnNldFN0eWxlU2NvcGVkRW5hYmxlZChlbmFibGVkKTsKIH0KICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9l
ZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wOS0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0Q1NT
UmVnaW9uc0VuYWJsZWQpOiBVc2Ugc2luZ2xldG9uLgorICAgICAgICAoRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKTogRGl0dG8uCisgICAgICAgICog
ZXdrL2V3a19zZXR0aW5ncy5jcHA6CisgICAgICAgIChld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9l
bmFibGVfZ2V0KTogRGl0dG8uCisgICAgICAgIChld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFi
bGVfc2V0KToKKyAgICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX2V3a192aWV3
X3ByaXZfbmV3KTogRGl0dG8uCisKIDIwMTMtMDktMjAgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxt
YXJpby5wcmFkYUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbQVRLXSBEbyBub3QgZXhwb3NlIGFy
aWEtaGVscCBpbiBBVEsgYmFzZWQgcGxhdGZvcm1zCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiAr
Miw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDExIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1z
CiAgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAgICBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAg
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAg
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMzIwLDEzICszMjEsMTMgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnNldENTU1JlZwogewogICAgIERSVF9TVVBQUlRfUEFHRV9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHBhZ2UpOwogCi0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVk
KTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFNlYW1sZXNzSUZyYW1l
c0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0g
ICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5h
YmxlZChlbmFibGVkKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfc2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYgKzIsNyBAQAog
ICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCiAg
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgU2Ftc3VuZyBFbGVjdHJvbmljcwogICAgIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICAgIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1
NSw3ICsyNTYsNyBAQCB2b2lkIGV3a19zZXR0aW5nc19vYmplY3RfY2FjaGVfZW5hYmxlX3NlCiBF
aW5hX0Jvb2wgZXdrX3NldHRpbmdzX3NoYWRvd19kb21fZW5hYmxlX2dldCgpCiB7CiAjaWYgRU5B
QkxFKFNIQURPV19ET00pCi0gICAgcmV0dXJuIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYWRvd0RPTUVuYWJsZWQoKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCk7CiAjZWxzZQog
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtMjY1LDcgKzI2Niw3IEBAIEVpbmFfQm9vbCBl
d2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGUKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
ICAgICBlbmFibGUgPSAhIWVuYWJsZTsKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTaGFkb3dET01FbmFibGVkKGVuYWJs
ZSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFibGUpOwpJ
bmRleDogU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBT
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yLDYg
KzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAwOS0yMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBz
eXN0ZW1zCiAgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcwog
ICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorICAgIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTczNiw5ICs3MzcsOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBfZXdr
X3ZpZXdfCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTYW5zU2VyaWZGb250RmFtaWx5KCJz
YW5zIik7CiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoInNh
bnMiKTsKICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxl
ZChmYWxzZSk7Ci0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVn
aW9uc0VuYWJsZWQodHJ1ZSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZCh0cnVlKTsKICNpZiBFTkFCTEUo
SUZSQU1FX1NFQU1MRVNTKQotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQodHJ1ZSk7CisgICAgV2ViQ29yZTo6UnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKHRy
dWUpOwogI2VuZGlmCiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRTY3JpcHRFbmFibGVkKHRy
dWUpOwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0UGx1Z2luc0VuYWJsZWQodHJ1ZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMy0wOS0yNSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c2V0Q1NTUmVnaW9uc0VuYWJsZWQpOiBVc2Ugc2luZ2xldG9uLgorICAgICAgICAoRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrOjpzZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0
dXJlc0VuYWJsZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTZWFt
bGVzc0lGcmFtZXNFbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c2V0U2hhZG93RE9NRW5hYmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6
OnNldFN0eWxlU2NvcGVkRW5hYmxlZCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6IERpdHRvLgor
CiAyMDEzLTA5LTI0ICBMb3JlbnpvIFRpbHZlICA8bHRpbHZlQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gRml4IGNvbXBpbGF0aW9uIHByb2JsZW1zIHdoZW4gc2V0dGluZyBFTkFCTEVfRFJB
R19TVVBQT1JUID0gRkFMU0UKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAkocmV2aXNp
b24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRl
clRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAKICAqICBD
b3B5cmlnaHQgKEMpIDIwMTAgSm9vbmUgSHVyIDxqb29uZUBrbGRwLm9yZz4KICAqICBDb3B5cmln
aHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmln
aHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KLSAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC01NzUs
NyArNTc1LDcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENTU0dyaQogCiB2
b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoV2ViS2l0
V2ViVmlldyogd2ViVmlldywgYm9vbCBlbmFibGVkKQogewotICAgIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7
CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRDU1NDdXN0b21GaWx0ZXJF
bmFibGVkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGJvb2wgZW5hYmxlZCkKQEAgLTU4OCwyOCAr
NTg4LDI4IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRDU1NDdXMKIHZvaWQg
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQ
b2xpY3lGZWF0dXJlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShDU1BfTkVY
VCkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRFeHBlcmltZW50YWxDb250ZW50U2Vj
dXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRFeHBlcmltZW50YWxDb250ZW50U2VjdXJpdHlQ
b2xpY3lGZWF0dXJlc0VuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIH0KIAogdm9pZCBEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRHdGs6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoYm9vbCBlbmFibGVk
KQogewogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQo
ZW5hYmxlZCk7CiAjZW5kaWYKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNl
dFNoYWRvd0RPTUVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9N
KQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxl
ZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTaGFk
b3dET01FbmFibGVkKGVuYWJsZWQpOwogI2VuZGlmCiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVO
QUJMRShTVFlMRV9TQ09QRUQpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U3R5bGVT
Y29wZWRFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0U3R5bGVTY29wZWRFbmFibGVkKGVuYWJsZWQpOwogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAw
OSBCb2JieSBQb3dlcnMKICAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSm9vbmUgSHVyIDxqb29uZUBr
bGRwLm9yZz4KICAqICBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqICBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMzU4Myw3ICszNTg0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3VwZGF0ZV9zZXR0aQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU3RyZWFtRW5hYmxlZChzZXR0
aW5nc1ByaXZhdGUtPmVuYWJsZU1lZGlhU3RyZWFtKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldE1lZGlhU3RyZWFtRW5hYmxlZChzZXR0
aW5nc1ByaXZhdGUtPmVuYWJsZU1lZGlhU3RyZWFtKTsKICNlbmRpZgogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0
KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRv
bi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4
My4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2Vk
Ol0pOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29yLgorICAgICAgICAoLVtXZWJWaWV3IF9zZXREYXNo
Ym9hcmRCZWhhdmlvcjp0bzpdKTogRGl0dG8uCisKIDIwMTMtMDktMjQgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSBKU0MgZGVidWcgaG9va3MgdG8gcGFz
cyBhIENhbGxGcmFtZSogaW5zdGVhZCBvZiBhIERlYnVnZ2VyQ2FsbEZyYW1lLgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNS0yMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBEYXZpZCBTbWl0aCAoY2F0Zmlz
aC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCkBA
IC0xNTIxLDEzICsxNTIxLDEzIEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJl
ZmVyZW4KICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAgICAgc2V0dGluZ3Muc2V0Q1NTQ3VzdG9t
RmlsdGVyRW5hYmxlZChbcHJlZmVyZW5jZXMgY3NzQ3VzdG9tRmlsdGVyRW5hYmxlZF0pOwogI2Vu
ZGlmCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoW3By
ZWZlcmVuY2VzIGNzc1JlZ2lvbnNFbmFibGVkXSk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKFtwcmVmZXJlbmNlcyBjc3NDb21wb3NpdGluZ0Vu
YWJsZWRdKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNl
dENTU1JlZ2lvbnNFbmFibGVkKFtwcmVmZXJlbmNlcyBjc3NSZWdpb25zRW5hYmxlZF0pOworICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTQ29tcG9zaXRp
bmdFbmFibGVkKFtwcmVmZXJlbmNlcyBjc3NDb21wb3NpdGluZ0VuYWJsZWRdKTsKICNpZiBFTkFC
TEUoV0VCX0FVRElPKQogICAgIHNldHRpbmdzLnNldFdlYkF1ZGlvRW5hYmxlZChbcHJlZmVyZW5j
ZXMgd2ViQXVkaW9FbmFibGVkXSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNT
KQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQo
W3ByZWZlcmVuY2VzIHNlYW1sZXNzSUZyYW1lc0VuYWJsZWRdKTsKKyAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoW3By
ZWZlcmVuY2VzIHNlYW1sZXNzSUZyYW1lc0VuYWJsZWRdKTsKICNlbmRpZgogICAgIHNldHRpbmdz
LnNldENTU0dyaWRMYXlvdXRFbmFibGVkKFtwcmVmZXJlbmNlcyBjc3NHcmlkTGF5b3V0RW5hYmxl
ZF0pOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTIxODYsNyArMjE4Niw3IEBAIC0g
KHZvaWQpX3NldERhc2hib2FyZEJlaGF2aW9yOihXZWJEYXNoYm8KICAgICAgICAgICAgIGlmIChf
cHJpdmF0ZS0+cGFnZSkKICAgICAgICAgICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0dGluZ3Mo
KS5zZXRVc2VzRGFzaGJvYXJkQmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZShmbGFnKTsKICNpZiBF
TkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCi0gICAgICAgICAgICBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzZXRMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoZmxhZyk7Cisg
ICAgICAgICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldExl
Z2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChmbGFnKTsKICNlbmRpZgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQpCisr
KyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisg
ICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBcGkvcXdl
YnNldHRpbmdzLmNwcDoKKyAgICAgICAgKFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KTogVXNl
IHNpbmdsZXRvbiBhY2Nlc3Nvci4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0
U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCk6IERpdHRvLgorCiAyMDEzLTA5LTI1ICBBbGxhbiBTYW5k
ZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4
IGJ1aWxkIHdpdGggUXQgNS4yIFF0UG9zaXRpb24gbW9kdWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2Vic2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAv
KgogICAgIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNzMsMTAgKzE3NCwxMCBAQCB2
b2lkIFFXZWJTZXR0aW5nc1ByaXZhdGU6OmFwcGx5KCkKIAogICAgICAgICB2YWx1ZSA9IGF0dHJp
YnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NSZWdpb25zRW5hYmxlZCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGlu
Z3M6OkNTU1JlZ2lvbnNFbmFibGVkKSk7Ci0gICAgICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKHZhbHVlKTsKKyAgICAgICAgV2ViQ29yZTo6
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5h
YmxlZCh2YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGlu
Z3M6OkNTU0NvbXBvc2l0aW5nRW5hYmxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdsb2JhbC0+YXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU0NvbXBvc2l0aW5n
RW5hYmxlZCkpOwotICAgICAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRD
U1NDb21wb3NpdGluZ0VuYWJsZWQodmFsdWUpOworICAgICAgICBXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU0NvbXBvc2l0aW5nRW5hYmxlZCh2
YWx1ZSk7CiAgICAgICAgIHZhbHVlID0gYXR0cmlidXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNT
U0dyaWRMYXlvdXRFbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTR3JpZExheW91dEVuYWJsZWQp
KTsKICAgICAgICAgc2V0dGluZ3MtPnNldENTU0dyaWRMYXlvdXRFbmFibGVkKHZhbHVlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMTAgUm9iZXJ0IEhv
Z2FuIDxyb2JlcnRAcm9iZXJ0aG9nYW4ubmV0PgogICAgIENvcHlyaWdodCAoQykgMjAwOCwyMDA5
LDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgICAg
Q29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDcsIDIwMTIgQXBwbGUgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAw
NywgMjAxMiwgMjAxMyBBcHBsZSBJbmMuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTg2Miw3ICs4
NjIsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpnZXRUcmFja2VkCiB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIFdlYkNvcmU6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7Cisg
ICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRT
ZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0o
ZW5hYmxlZCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkK
KysrIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDEzIEBACisyMDEzLTA5LTI0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgor
CisgICAgICAgIFtXaW5kb3dzXSBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEg
U2luZ2xldG9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIxODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Om5vdGlmeVByZWZlcmVuY2VzQ2hh
bmdlZCk6IFVzZSBzaW5nbGV0b24gYWNjZXNzb3IKKwogMjAxMy0wOS0yNCAgQnJlbnQgRnVsZ2hh
bSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gVW5yZXZpZXdlZCBj
cmFzaCBmaXggYWZ0ZXIgcjE1NjMyMS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lv
biAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDc4MywxMiArNDc4MywxMiBAQCBIUkVTVUxUIFdlYlZpZXc6Om5vdGlmeVByZWZlcmVu
Y2VzQ2hhbmdlCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+aXNDU1NSZWdpb25zRW5hYmxlZCgmZW5h
YmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKLSAgICBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZCghIWVuYWJsZWQpOworICAg
IFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0Vu
YWJsZWQoISFlbmFibGVkKTsKIAogICAgIGhyID0gcHJlZmVyZW5jZXMtPmFyZVNlYW1sZXNzSUZy
YW1lc0VuYWJsZWQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1
cm4gaHI7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5h
YmxlZCghIWVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCghIWVuYWJsZWQpOwogCiAgICAgaHIgPSBw
cmVmZXJlbmNlcy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZB
SUxFRChocikpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212625</attachid>
            <date>2013-09-25 14:15:24 -0700</date>
            <delta_ts>2013-10-29 08:38:08 -0700</delta_ts>
            <desc>Updated with missing symbol in WebCore.exp.in</desc>
            <filename>bug-121883-20130925141508.patch</filename>
            <type>text/plain</type>
            <size>129513</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzNCBAQAorMjAxMy0wOS0yNSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbV2luZG93c10gUmVmYWN0
b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgV2luZG93
cyBpcyBleHBlcmllbmNpbmcgY3Jhc2hlcyB3aGVuIGNsaWVudCBwcm9ncmFtcyAoc3VjaCBhcwor
ICAgICAgICBEdW1wUmVuZGVyVHJlZSkgYXR0ZW1wIHRvIGNoYW5nZSBzZXR0aW5ncyBvbiB0aGUg
UnVudGltZUVuYWJsZWRGZWF0dXJlcworICAgICAgICBvYmplY3QuIFRoZSBpbmxpbmVkIHN0YXRp
YyBhY2Nlc3NvciBtZXRob2RzIGFyZSBub3QgYWNjZXNzaW5nCisgICAgICAgIG1lbW9yeSBzYWZl
bHkgKHdoZW4gY29tcGlsZWQgYnkgVmlzdWFsIFN0dWRpbykgcmVzdWx0aW5nIGluCisgICAgICAg
IGNyYXNoZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjogUmVtb3ZlIHN0YXRpYyBhY2Nlc3NvcnMgZm9yIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuCisgICAgICAgICogYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmNwcDogU3dpdGNoIG1ldGhvZHMgdG8KKyAgICAgICAgY29uZm9ybSB0byBhIHNp
bmdsZXRvbiBwYXR0ZXJuLgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6UnVudGltZUVuYWJsZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRSdW50aW1lRW5hYmxlZEZlYXR1cmVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZpbGVTeXN0ZW1FbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmphdmFTY3JpcHRJMThOQVBJRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjphdWRpb0Vu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1l
ZGlhRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aHRtbFZpZGVvRWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhQ29udHJvbGxl
ckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVk
aWFFcnJvckVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6dGltZVJhbmdlc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkV29ya2VyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6Om9wZW5EYXRhYmFzZUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlU3luY0VuYWJsZWQpOgor
ICAgICAgICAqIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oOiBEaXR0
by4KKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExvY2FsU3Rv
cmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6
bG9jYWxTdG9yYWdlRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRTZXNzaW9uU3RvcmFnZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2Vzc2lvblN0b3JhZ2VFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdE5vdGlmaWNhdGlvbnNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdE5v
dGlmaWNhdGlvbnNFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldERhdGFUcmFuc2Zlckl0ZW1zRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkYXRhVHJh
bnNmZXJJdGVtc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0R2VvbG9jYXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Omdlb2xvY2F0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRXZWJraXRJbmRleGVkREJFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEluZGV4ZWREQkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5kZXhlZERC
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRD
YW52YXNQYXRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpjYW52YXNQYXRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRDU1NFeGNsdXNpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NFeGNsdXNpb25zRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NTaGFwZXNFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc1NoYXBlc0VuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9u
c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3Nz
UmVnaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdEZ1
bGxTY3JlZW5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNldFdlYmtpdEZ1bGxTY3JlZW5BUElFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRJc0Z1bGxT
Y3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdEZ1bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZEVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5F
bGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVz
Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRGdWxsc2NyZWVuRW5hYmxlZEVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0RnVsbHNjcmVlbkVs
ZW1lbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbkVuYWJsZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6dG91Y2hFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFRvdWNoRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXREZXZpY2VNb3Rpb25F
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRldmlj
ZU1vdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6ZGV2aWNlTW90aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Om9uZGV2aWNlbW90aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXREZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRp
b25FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmRl
dmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6Om9uZGV2aWNlb3JpZW50YXRpb25FbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNwZWVjaElucHV0RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzcGVlY2hJbnB1dEVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0U3Bl
ZWNoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRHcmFtbWFyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzZXRTY3JpcHRlZFNwZWVjaEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c2NyaXB0ZWRTcGVlY2hFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFNwZWVjaFJlY29nbml0aW9uRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRT
cGVlY2hSZWNvZ25pdGlvbkVycm9yRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbkV2ZW50RW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRTcGVlY2hHcmFt
bWFyRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0RmlsZVN5c3RlbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SmF2YVNjcmlwdEkxOE5BUElFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhU3RyZWFtRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRNZWRp
YVN0cmVhbUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6d2Via2l0R2V0VXNlck1lZGlhRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRNZWRpYVN0cmVhbUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6cGVlckNvbm5lY3Rpb25FbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFBlZXJDb25uZWN0aW9u
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRSVENQZWVyQ29ubmVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0TGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZp
eGVzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRXZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0R2V0R2FtZXBhZHNFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnF1b3RhRW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRRdW90YUVuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6bWVkaWFTb3VyY2VFbmFibGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldE1lZGlhU291cmNlRW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjplbmNyeXB0
ZWRNZWRpYUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0RW5jcnlwdGVkTWVkaWFFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdFZpZGVvVHJhY2tFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93
RE9NRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjph
dXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5h
YmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjdXN0b21E
T01FbGVtZW50c0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0Q3VzdG9tRE9NRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFN0eWxlU2NvcGVkRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVEYXRl
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1
dFR5cGVEYXRlVGltZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0SW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldElucHV0VHlwZURh
dGVUaW1lTG9jYWxFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmlucHV0VHlwZU1vbnRoRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRJbnB1dFR5cGVNb250aEVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlVGltZUVuYWJsZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0SW5wdXRUeXBlVGltZUVu
YWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRU
eXBlV2Vla0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0SW5wdXRUeXBlV2Vla0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVu
YWJsZWRGZWF0dXJlczo6ZXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNF
bmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEV4
cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZWFtbGVzc0lGcmFtZXNFbmFibGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNlYW1sZXNz
SUZyYW1lc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6bGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNv
bnRyb2xVSUVuYWJsZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJh
dGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDU1NQcm9wZXJ0eU5hbWVQcmVm
aXgpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAgICAgICAgKFdlYkNvcmU6OmNzc1Byb3Bl
cnR5SURGb3JKU0NTU1Byb3BlcnR5TmFtZSk6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0UnVudGltZUVuYWJsZUZ1bmN0
aW9uTmFtZSk6IEdlbmVyYXRlIHNpbmdsZXRvbiB2ZXJzaW9uIG9mCisgICAgICAgIGFjY2Vzc29y
cy4KKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Rm9udEZhY2U6OmZvbnRMb2FkZWQpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZvbnRGYWNlOjpnZXRGb250RGF0YSk6IERpdHRvLgorICAgICAgICAqIGNz
cy9DU1NGb250U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFNlbGVjdG9y
OjphZGRGb250RmFjZVJ1bGUpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzU2ltcGxlTGVuZ3RoUHJvcGVydHlJRCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6OnJld3JpdGVTcGVjaWZpZXJzKToKKyAgICAgICAgKiBjc3MvQ1NTU2VnbWVudGVkRm9u
dEZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VnbWVudGVkRm9udEZhY2U6OmZvbnRM
b2FkZWQpOiBEaXR0by4KKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6ZW5zdXJlU2NvcGVSZXNvbHZlcik6IERpdHRvLgorICAg
ICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3Nz
UmVnaW9uc0VuYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjc3ND
b21wb3NpdGluZ0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNob3VsZERp
c3BsYXlTZWFtbGVzc2x5V2l0aFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
Z2V0Q2FjaGVkTG9jYWxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpjcmVhdGVTaGFkb3dSb290KTogRGl0dG8uCisgICAgICAgICogZG9t
L1Bvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uOjpQb3NpdGlvbik6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmZpbmRQYXJlbnQpOgorICAgICAgICAq
IGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjpnZXRTZWxl
Y3Rpb24pOiBEaXR0by4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHBy
aW50Q29uc3RydWN0b3JJbnRlcmlvcik6IEdlbmVyYXRlIHNpbmdsZXRvbiB2ZXJzaW9uIG9mIGFj
Y2Vzc29ycy4KKyAgICAgICAgKHByaW50V3JhcHBlckZ1bmN0aW9ucyk6IERpdHRvLgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50Ojppc1NwZWVjaEVuYWJsZWQpOiBVc2Ugc2luZ2xldG9uIGFjY2Vzc29ycy4KKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFy
YW1ldGVycyk6IERpdHRvLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4p
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnNjaGVkdWxlRGVs
YXllZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwcmVwYXJlRm9y
TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dyZXNzVGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRp
ZEFkZEF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVk
aWFQbGF5ZXJEaWRBZGRUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6bWVkaWFQbGF5ZXJEaWRBZGRWaWRlb1RyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmFkZEF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6YWRkVGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmFkZFZpZGVvVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVu
dDo6cmVtb3ZlQXVkaW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjpyZW1vdmVUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
cmVtb3ZlVmlkZW9UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojph
dWRpb1RyYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJh
Y2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnZpZGVvVHJhY2tzKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRpZEFkZFRleHRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkaWRSZW1vdmVUZXh0VHJhY2spOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9u
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZXRDbG9zZWRDYXB0aW9u
c1Zpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6Y29uZmlndXJl
VGV4dFRyYWNrRGlzcGxheSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MU3R5bGVFbGVtZW50OjpzY29wZWRBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJX
aXRoU2NvcGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6c2Nv
cGVkKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyYWNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnNjaGVkdWxlTG9hZCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJhY2tFbGVtZW50OjpjYW5Mb2FkVXJsKToKKyAgICAgICAgKiBodG1sL0lucHV0
VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVJbnB1dFR5cGVGYWN0b3J5TWFwKTog
RGl0dG8uCisgICAgICAgICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9saWN5OjpleHBlcmltZW50YWxGZWF0dXJlc0Vu
YWJsZWQpOiBEaXR0by4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIpOiBEaXR0by4KKyAgICAgICAgKiBw
YWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Q
b3N0TGF5b3V0VGFza3MpOiBEaXR0by4KKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNr
dXApOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6
cmVzdG9yZVRvKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldFNoYWRv
d0RPTUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0QXV0
aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJuYWxTZXR0aW5nczo6c2V0U3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkludGVybmFsU2V0dGluZ3M6OnNldENTU0V4Y2x1c2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsU2V0dGluZ3M6OnNldENTU1NoYXBlc0VuYWJsZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRy
b2xVSUVuYWJsZWQpOgorCiAyMDEzLTA5LTI1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTU2MzU1KSBMaW5rcyAvIGludGVyYWN0aXZl
IGVsZW1lbnRzIGluc2lkZSBuZXN0ZWQgdGFibGVzIGFyZSB1bmNsaWNrYWJsZQpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03MzgsMTAgKzczOCw3IEBAIF9fWk43V2ViQ29y
ZTIxc2V0R2xvYmFsSWNvbkRhdGFiYXNlRVBOU18KIF9fWk43V2ViQ29yZTIxc2V0UGxhdGZvcm1T
dHJhdGVnaWVzRVBOU18xOFBsYXRmb3JtU3RyYXRlZ2llc0UKIF9fWk43V2ViQ29yZTIySFRNTFBs
dWdJbkltYWdlRWxlbWVudDI0cmVzdGFydFNuYXBzaG90dGVkUGx1Z0luRXYKIF9fWk43V2ViQ29y
ZTIySFRNTFBsdWdJbkltYWdlRWxlbWVudDI5c2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5F
YgotX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMjNpc0NTU0NvbXBvc2l0aW5n
RW5hYmxlZEUKLV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczIyaXNDU1NFeGNs
dXNpb25zRW5hYmxlZEUKLV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE4aXND
U1NTaGFwZXNFbmFibGVkRQotX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzNDBp
c0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkRQorX19aTjdXZWJDb3JlMjJS
dW50aW1lRW5hYmxlZEZlYXR1cmVzMTRzaGFyZWRGZWF0dXJlc0V2CiBfX1pON1dlYkNvcmUyMlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQyNmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzRXYKIF9fWk43
V2ViQ29yZTIyU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjM0ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVu
dHNUb0ZyYW1lc0VSTlNfOVBhZ2VHcm91cEVSS04zV1RGNlZlY3RvcklOUzNfNlJlZlB0cklOU181
RnJhbWVFRUVMbTBFTlMzXzE1Q3Jhc2hPbk92ZXJmbG93RUVFUktOUzNfNlN0cmluZ0VTRV9TRV9T
RV9QTlNfMTRTZWN1cml0eU9yaWdpbkUKIF9fWk43V2ViQ29yZTIyVVJMV2l0aFVzZXJUeXBlZFN0
cmluZ0VQOE5TU3RyaW5nUDVOU1VSTApAQCAtMjY5NSw4ICsyNjkyLDYgQEAgX19aTjdXZWJDb3Jl
OUZyYW1lVmlldzI1c2VydmljZVNjcmlwdGVkQQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKLV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0dXJlczE4aXNTaGFkb3dET01F
bmFibGVkRQotX19aTjdXZWJDb3JlMjJSdW50aW1lRW5hYmxlZEZlYXR1cmVzMzdpc0F1dGhvclNo
YWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkRQogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTlNfMTBTaGFkb3dSb290RQogI2VuZGlm
CiAKQEAgLTI3NjQsMTggKzI3NTksNiBAQCBfX1pON1dlYkNvcmU0UGFnZTExc2V0Vmlld01vZGVF
TlMwXzhWaWV3CiBfX1pON1dlYkNvcmUxMldvcmtlclRocmVhZDE3d29ya2VyVGhyZWFkQ291bnRF
dgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi1fX1pON1dlYkNvcmUyMlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMxOWlzQ1NTUmVnaW9uc0VuYWJsZWRFCi0jZW5kaWYKLQotI2lmIEVO
QUJMRShJRlJBTUVfU0VBTUxFU1MpCi1fX1pON1dlYkNvcmUyMlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMyNWFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWRFCi0jZW5kaWYKLQotI2lmIEVOQUJMRShMRUdB
Q1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLV9fWk43V2ViQ29yZTIyUnVudGltZUVuYWJsZWRGZWF0
dXJlczMyaXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWRFCi0jZW5kaWYKLQogI2lmIEVO
QUJMRShFTkNSWVBURURfTUVESUFfVjIpCiBfX1pON1dlYkNvcmUzQ0RNMThyZWdpc3RlckNETUZh
Y3RvcnlFUEZOM1dURjEwUGFzc093blB0cklOU18xOUNETVByaXZhdGVJbnRlcmZhY2VFRUVQUzBf
RVBGYlJLTlMxXzZTdHJpbmdFRVBGYlNBX1NBX0UKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5l
cmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM1LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlclJlcG9z
aXRvcnkuaCIKICNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KIAogI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKICNpbmNsdWRlICJBc3luY0ZpbGVT
eXN0ZW0uaCIKQEAgLTQyLDIwMSArNDQsMTg5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Ym9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0xvY2FsU3RvcmFnZUVuYWJsZWQgPSB0cnVl
OwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1Nlc3Npb25TdG9yYWdlRW5hYmxlZCA9
IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzV2Via2l0Tm90aWZpY2F0aW9u
c0VuYWJsZWQgPSBmYWxzZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Omlz
RGF0YVRyYW5zZmVySXRlbXNFbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aXNHZW9sb2NhdGlvbkVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppc0luZGV4ZWREQkVuYWJsZWQgPSBmYWxzZTsKLWJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aXNUb3VjaEVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0RldmljZU1vdGlvbkVuYWJsZWQgPSB0cnVlOwotYm9vbCBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjppc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCA9IHRydWU7Ci1ib29sIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlzU3BlZWNoSW5wdXRFbmFibGVkID0gdHJ1ZTsKLWJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aXNDYW52YXNQYXRoRW5hYmxlZCA9IGZhbHNlOwotYm9vbCBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjppc0NTU0V4Y2x1c2lvbnNFbmFibGVkID0gdHJ1ZTsKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNDU1NTaGFwZXNFbmFibGVkID0gdHJ1ZTsKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNDU1NSZWdpb25zRW5hYmxlZCA9IGZhbHNlOwotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0NTU0NvbXBvc2l0aW5nRW5hYmxlZCA9IGZhbHNl
OwotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1D
b250cm9sVUlFbmFibGVkID0gZmFsc2U7Ci0KK1J1bnRpbWVFbmFibGVkRmVhdHVyZXM6OlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMoKQorICAgIDogbV9pc0xvY2FsU3RvcmFnZUVuYWJsZWQodHJ1ZSkK
KyAgICAsIG1faXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNXZWJraXRO
b3RpZmljYXRpb25zRW5hYmxlZChmYWxzZSkKKyAgICAsIG1faXNBcHBsaWNhdGlvbkNhY2hlRW5h
YmxlZCh0cnVlKQorICAgICwgbV9pc0RhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCh0cnVlKQorICAg
ICwgbV9pc0dlb2xvY2F0aW9uRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc0luZGV4ZWREQkVuYWJs
ZWQoZmFsc2UpCisgICAgLCBtX2lzVG91Y2hFbmFibGVkKHRydWUpCisgICAgLCBtX2lzRGV2aWNl
TW90aW9uRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZCh0
cnVlKQorICAgICwgbV9pc1NwZWVjaElucHV0RW5hYmxlZCh0cnVlKQorICAgICwgbV9pc0NhbnZh
c1BhdGhFbmFibGVkKGZhbHNlKQorICAgICwgbV9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkKHRydWUp
CisgICAgLCBtX2lzQ1NTU2hhcGVzRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc0NTU1JlZ2lvbnNF
bmFibGVkKGZhbHNlKQorICAgICwgbV9pc0NTU0NvbXBvc2l0aW5nRW5hYmxlZChmYWxzZSkKKyAg
ICAsIG1faXNMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChmYWxzZSkKICNp
ZiBFTkFCTEUoU0NSSVBURURfU1BFRUNIKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpp
c1NjcmlwdGVkU3BlZWNoRW5hYmxlZCA9IGZhbHNlOworICAgICwgbV9pc1NjcmlwdGVkU3BlZWNo
RW5hYmxlZChmYWxzZSkKICNlbmRpZgotCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNNZWRpYVN0cmVhbUVuYWJsZWQgPSB0cnVlOwotYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1BlZXJDb25uZWN0aW9uRW5hYmxlZCA9IHRydWU7
CisgICAgLCBtX2lzTWVkaWFTdHJlYW1FbmFibGVkKHRydWUpCisgICAgLCBtX2lzUGVlckNvbm5l
Y3Rpb25FbmFibGVkKHRydWUpCiAjZW5kaWYKLQogI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRP
Ul9QUkVGSVhFUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNMZWdhY3lDU1NWZW5k
b3JQcmVmaXhlc0VuYWJsZWQgPSBmYWxzZTsKKyAgICAsIG1faXNMZWdhY3lDU1NWZW5kb3JQcmVm
aXhlc0VuYWJsZWQoZmFsc2UpCiAjZW5kaWYKLQogI2lmIEVOQUJMRShHQU1FUEFEKQotYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0dhbWVwYWRFbmFibGVkID0gZmFsc2U7CisgICAgLCBt
X2lzR2FtZXBhZEVuYWJsZWQoZmFsc2UpCiAjZW5kaWYKLQogI2lmIEVOQUJMRShGSUxFX1NZU1RF
TSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNGaWxlU3lzdGVtRW5hYmxlZCA9IGZh
bHNlOworICAgICwgbV9pc0ZpbGVTeXN0ZW1FbmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCisgICAgLCBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFi
bGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxFKFFVT1RBKQorICAgICwgbV9pc1F1b3RhRW5h
YmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAsIG1f
aXNGdWxsU2NyZWVuQVBJRW5hYmxlZCh0cnVlKQorI2VuZGlmCisjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKKyAgICAsIG1faXNNZWRpYVNvdXJjZUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKEVGTCkgfHwgUExBVEZPUk0oQkxBQ0tCRVJSWSkgfHwgUExBVEZPUk0oV0lOKSB8
fCBQTEFURk9STShRVCkKKyAgICAsIG1faXNWaWRlb1RyYWNrRW5hYmxlZCh0cnVlKQorI2Vsc2UK
KyAgICAsIG1faXNWaWRlb1RyYWNrRW5hYmxlZChmYWxzZSkKKyNlbmRpZgorI2VuZGlmCisjaWYg
RU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKyAgICAsIG1faXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQo
ZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1faXNTaGFkb3dE
T01FbmFibGVkKGZhbHNlKQorICAgICwgbV9pc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRF
bmFibGVkKGZhbHNlKQorI2VuZGlmCisjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKKyAgICAs
IG1faXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUo
U1RZTEVfU0NPUEVEKQorICAgICwgbV9pc1N0eWxlU2NvcGVkRW5hYmxlZChmYWxzZSkKKyNlbmRp
ZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEUpCisgICAgLCBtX2lzSW5wdXRUeXBlRGF0ZUVu
YWJsZWQodHJ1ZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09N
UExFVEUpCisgICAgLCBtX2lzSW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKGZhbHNlKQorI2VuZGlm
CisjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVMT0NBTCkKKyAgICAsIG1faXNJbnB1dFR5
cGVEYXRlVGltZUxvY2FsRW5hYmxlZCh0cnVlKQorI2VuZGlmCisjaWYgRU5BQkxFKElOUFVUX1RZ
UEVfTU9OVEgpCisgICAgLCBtX2lzSW5wdXRUeXBlTW9udGhFbmFibGVkKHRydWUpCisjZW5kaWYK
KyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQorICAgICwgbV9pc0lucHV0VHlwZVRpbWVFbmFi
bGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9XRUVLKQorICAgICwgbV9p
c0lucHV0VHlwZVdlZWtFbmFibGVkKHRydWUpCisjZW5kaWYKKyNpZiBFTkFCTEUoQ1NQX05FWFQp
CisgICAgLCBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5h
YmxlZChmYWxzZSkKKyNlbmRpZgorI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCisgICAgLCBt
X2FyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZmFsc2UpCisjZW5kaWYKKyNpZiBFTkFCTEUoRk9O
VF9MT0FEX0VWRU5UUykKKyAgICAsIG1faXNGb250TG9hZEV2ZW50c0VuYWJsZWQoZmFsc2UpCisj
ZW5kaWYKK3sKK30KKworUnVudGltZUVuYWJsZWRGZWF0dXJlcyYgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSdW50
aW1lRW5hYmxlZEZlYXR1cmVzPiBydW50aW1lRW5hYmxlZEZlYXR1cmVzOwogCisgICAgcmV0dXJu
IHJ1bnRpbWVFbmFibGVkRmVhdHVyZXM7Cit9CisKKyNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiBi
b29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZpbGVTeXN0ZW1FbmFibGVkKCkKIHsKLSAgICBy
ZXR1cm4gaXNGaWxlU3lzdGVtRW5hYmxlZCAmJiBBc3luY0ZpbGVTeXN0ZW06OmlzQXZhaWxhYmxl
KCk7CisgICAgcmV0dXJuIG1faXNGaWxlU3lzdGVtRW5hYmxlZCAmJiBBc3luY0ZpbGVTeXN0ZW06
OmlzQXZhaWxhYmxlKCk7CiB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0kxOE5f
QVBJKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0phdmFTY3JpcHRJMThOQVBJRW5h
YmxlZCA9IGZhbHNlOwotCiBib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmphdmFTY3JpcHRJ
MThOQVBJRW5hYmxlZCgpCiB7Ci0gICAgcmV0dXJuIGlzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVk
OworICAgIHJldHVybiBtX2lzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkOwogfQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVklERU8pCi0KLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXVkaW9F
bmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXVkaW9FbmFibGVkKCkgY29u
c3QKIHsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6aHRtbE1lZGlhRWxlbWVudEVuYWJsZWQoKQorYm9vbCBS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpodG1sTWVkaWFFbGVtZW50RW5hYmxlZCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQogCi1ib29sIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6Omh0bWxBdWRpb0VsZW1lbnRFbmFibGVkKCkKK2Jvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQoKSBjb25zdAogewogICAg
IHJldHVybiBNZWRpYVBsYXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpodG1sVmlkZW9FbGVtZW50RW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6Omh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1
cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6aHRtbFNvdXJjZUVsZW1lbnRFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4g
TWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6bWVkaWFDb250cm9sbGVyRW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6Om1lZGlhQ29udHJvbGxlckVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBNZWRpYVBs
YXllcjo6aXNBdmFpbGFibGUoKTsKIH0KIAotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpt
ZWRpYUVycm9yRW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Om1lZGlhRXJy
b3JFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gTWVkaWFQbGF5ZXI6OmlzQXZhaWxhYmxl
KCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6dGltZVJhbmdlc0VuYWJsZWQo
KQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp0aW1lUmFuZ2VzRW5hYmxlZCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIE1lZGlhUGxheWVyOjppc0F2YWlsYWJsZSgpOwogfQotCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkV29ya2VyRW5hYmxlZCgpCitib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZFdvcmtlckVuYWJsZWQoKSBjb25zdAogewogICAgIHJldHVybiBTaGFyZWRXb3JrZXJSZXBv
c2l0b3J5Ojppc0F2YWlsYWJsZSgpOwogfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCX1NPQ0tF
VFMpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYlNvY2tldEVuYWJsZWQoKQorYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJTb2NrZXRFbmFibGVkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gV2ViU29ja2V0Ojppc0F2YWlsYWJsZSgpOwogfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJh
c2VFbmFibGVkKCkKK2Jvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFiYXNlRW5h
YmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFuYWdlcigpLmlz
QXZhaWxhYmxlKCk7CiB9CiAKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6b3BlbkRhdGFi
YXNlU3luY0VuYWJsZWQoKQorYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpvcGVuRGF0YWJh
c2VTeW5jRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIERhdGFiYXNlTWFuYWdlcjo6bWFu
YWdlcigpLmlzQXZhaWxhYmxlKCk7CiB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShRVU9UQSkKLWJv
b2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNRdW90YUVuYWJsZWQgPSBmYWxzZTsKLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjppc0Z1bGxTY3JlZW5BUElFbmFibGVkID0gdHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNNZWRpYVNvdXJj
ZUVuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotI2lm
IFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpIHx8IFBMQVRG
T1JNKEJMQUNLQkVSUlkpIHx8IFBMQVRGT1JNKFdJTikgfHwgUExBVEZPUk0oUVQpCi0gICAgYm9v
bCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1ZpZGVvVHJhY2tFbmFibGVkID0gdHJ1ZTsKLSNl
bHNlCi0gICAgYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc1ZpZGVvVHJhY2tFbmFibGVk
ID0gZmFsc2U7Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
LWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQgPSBm
YWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFNIQURPV19ET00pCi1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmlzU2hhZG93RE9NRW5hYmxlZCA9IGZhbHNlOwotCi1ib29sIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmlzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQgPSBm
YWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLWJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQgPSBmYWxzZTsKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6aXNTdHlsZVNjb3BlZEVuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KElOUFVUX1RZUEVfREFURSkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5
cGVEYXRlRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RB
VEVUSU1FX0lOQ09NUExFVEUpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5wdXRU
eXBlRGF0ZVRpbWVFbmFibGVkID0gZmFsc2U7Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJTlBVVF9U
WVBFX0RBVEVUSU1FTE9DQUwpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlzSW5wdXRU
eXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5Q
VVRfVFlQRV9NT05USCkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVN
b250aEVuYWJsZWQgPSB0cnVlOwotI2VuZGlmCi0KLSNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1F
KQotYm9vbCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppc0lucHV0VHlwZVRpbWVFbmFibGVkID0g
dHJ1ZTsKLSNlbmRpZgotCi0jaWYgRU5BQkxFKElOUFVUX1RZUEVfV0VFSykKLWJvb2wgUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6aXNJbnB1dFR5cGVXZWVrRW5hYmxlZCA9IHRydWU7Ci0jZW5kaWYK
LQotI2lmIEVOQUJMRShDU1BfTkVYVCkKLWJvb2wgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXJl
RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkID0gZmFsc2U7
Ci0jZW5kaWYKLQotI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi1ib29sIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmFyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQgPSBmYWxzZTsKLSNlbmRpZgot
Ci0jaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi1ib29sIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmlzRm9udExvYWRFdmVudHNFbmFibGVkID0gZmFsc2U7Ci0jZW5kaWYKLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgJKHJldmlzaW9uIDE1NjQwNCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0zMiw2ICszMyw3IEBACiAjZGVmaW5lIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXNfaAogCiAjaW5jbHVkZSAiUGxhdGZvcm1FeHBvcnRNYWNyb3MuaCIKKyNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwzNzEg
KzQyLDM4MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBnZW5lcmF0aW9uIHRvIHdvcmsgcHJv
cGVybHkuCiAKIGNsYXNzIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgeworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMpOwogcHVibGljOgotICAgIHN0YXRpYyB2
b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNMb2NhbFN0b3Jh
Z2VFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgbG9jYWxTdG9yYWdlRW5h
YmxlZCgpIHsgcmV0dXJuIGlzTG9jYWxTdG9yYWdlRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0TG9j
YWxTdG9yYWdlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTG9jYWxTdG9yYWdlRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgbG9jYWxTdG9yYWdlRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNMb2NhbFN0b3JhZ2VFbmFibGVkOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRT
ZXNzaW9uU3RvcmFnZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNTZXNzaW9uU3RvcmFnZUVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBzZXNzaW9uU3RvcmFnZUVuYWJs
ZWQoKSB7IHJldHVybiBpc1Nlc3Npb25TdG9yYWdlRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2Vz
c2lvblN0b3JhZ2VFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNTZXNzaW9uU3RvcmFnZUVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHNlc3Npb25TdG9yYWdlRW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7IH0KIAotICAgIHN0YXRpYyB2
b2lkIHNldFdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzV2Vi
a2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3
ZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCgpIHsgcmV0dXJuIGlzV2Via2l0Tm90aWZpY2F0aW9u
c0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdE5vdGlmaWNhdGlvbnNFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IG1faXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQorICAgIGJvb2wgd2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzV2Via2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQ7IH0KIAotICAgIHN0YXRpYyB2b2lkIHNldEFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzQXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBhcHBsaWNhdGlvbkNhY2hl
RW5hYmxlZCgpIHsgcmV0dXJuIGlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7IH0KKyAgICB2b2lk
IHNldEFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNBcHBsaWNh
dGlvbkNhY2hlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgYXBwbGljYXRpb25DYWNo
ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7IH0K
IAotICAgIHN0YXRpYyB2b2lkIHNldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBpc0RhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIGRhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCgpIHsgcmV0dXJuIGlzRGF0YVRyYW5z
ZmVySXRlbXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgbV9pc0RhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZCA9IGlzRW5hYmxl
ZDsgfQorICAgIGJvb2wgZGF0YVRyYW5zZmVySXRlbXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc0RhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZDsgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0R2Vv
bG9jYXRpb25FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzR2VvbG9jYXRpb25FbmFibGVkID0g
aXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgZ2VvbG9jYXRpb25FbmFibGVkKCkgeyByZXR1
cm4gaXNHZW9sb2NhdGlvbkVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEdlb2xvY2F0aW9uRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBtX2lzR2VvbG9jYXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9
CisgICAgYm9vbCBnZW9sb2NhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzR2VvbG9j
YXRpb25FbmFibGVkOyB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRJbmRleGVkREJFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSW5kZXhlZERCRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQot
ICAgIHN0YXRpYyBib29sIHdlYmtpdEluZGV4ZWREQkVuYWJsZWQoKSB7IHJldHVybiBpc0luZGV4
ZWREQkVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBpbmRleGVkREJFbmFibGVkKCkgeyByZXR1
cm4gaXNJbmRleGVkREJFbmFibGVkOyB9CisgICAgdm9pZCBzZXRXZWJraXRJbmRleGVkREJFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbmRleGVkREJFbmFibGVkID0gaXNFbmFibGVkOyB9
CisgICAgYm9vbCB3ZWJraXRJbmRleGVkREJFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lu
ZGV4ZWREQkVuYWJsZWQ7IH0KKyAgICBib29sIGluZGV4ZWREQkVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzSW5kZXhlZERCRW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKENBTlZBU19QQVRIKQot
ICAgIHN0YXRpYyB2b2lkIHNldENhbnZhc1BhdGhFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlz
Q2FudmFzUGF0aEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBjYW52YXNQ
YXRoRW5hYmxlZCgpIHsgcmV0dXJuIGlzQ2FudmFzUGF0aEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dENhbnZhc1BhdGhFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDYW52YXNQYXRoRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgY2FudmFzUGF0aEVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzQ2FudmFzUGF0aEVuYWJsZWQ7IH0KICNlbHNlCi0gICAgc3RhdGljIHZvaWQgc2V0
Q2FudmFzUGF0aEVuYWJsZWQoYm9vbCkgeyB9Ci0gICAgc3RhdGljIGJvb2wgY2FudmFzUGF0aEVu
YWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q2FudmFzUGF0aEVuYWJsZWQo
Ym9vbCkgeyB9CisgICAgYm9vbCBjYW52YXNQYXRoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDU1NfRVhDTFVTSU9OUykKLSAgICBzdGF0aWMg
dm9pZCBzZXRDU1NFeGNsdXNpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0NTU0V4Y2x1
c2lvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgY3NzRXhjbHVzaW9u
c0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU0V4Y2x1c2lvbnNFbmFibGVkOyB9CisgICAgdm9pZCBz
ZXRDU1NFeGNsdXNpb25zRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzQ1NTRXhjbHVzaW9u
c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNzc0V4Y2x1c2lvbnNFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NTU0V4Y2x1c2lvbnNFbmFibGVkOyB9CiAjZWxzZQotICAgIHN0
YXRpYyB2b2lkIHNldENTU0V4Y2x1c2lvbnNFbmFibGVkKGJvb2wpIHsgfQotICAgIHN0YXRpYyBi
b29sIGNzc0V4Y2x1c2lvbnNFbmFibGVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2b2lkIHNl
dENTU0V4Y2x1c2lvbnNFbmFibGVkKGJvb2wpIHsgfQorICAgIGJvb2wgY3NzRXhjbHVzaW9uc0Vu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NT
X1NIQVBFUykKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IGlzQ1NTU2hhcGVzRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29s
IGNzc1NoYXBlc0VuYWJsZWQoKSB7IHJldHVybiBpc0NTU1NoYXBlc0VuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldENTU1NoYXBlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0NTU1NoYXBlc0Vu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGNzc1NoYXBlc0VuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzQ1NTU2hhcGVzRW5hYmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBz
ZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wpIHsgfQotICAgIHN0YXRpYyBib29sIGNzc1NoYXBlc0Vu
YWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZvaWQgc2V0Q1NTU2hhcGVzRW5hYmxlZChi
b29sKSB7IH0KKyAgICBib29sIGNzc1NoYXBlc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1NTX1JFR0lPTlMpCi0gICAgc3RhdGljIHZvaWQg
c2V0Q1NTUmVnaW9uc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNDU1NSZWdpb25zRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgeyBy
ZXR1cm4gaXNDU1NSZWdpb25zRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0Q1NTUmVnaW9uc0VuYWJs
ZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0NTU1JlZ2lvbnNFbmFibGVkID0gaXNFbmFibGVkOyB9
CisgICAgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDU1NSZWdp
b25zRW5hYmxlZDsgfQogI2Vsc2UKLSAgICBzdGF0aWMgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxl
ZChib29sKSB7IH0KLSAgICBzdGF0aWMgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdm9pZCBzZXRDU1NSZWdpb25zRW5hYmxlZChib29sKSB7IH0KKyAgICBi
b29sIGNzc1JlZ2lvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgog
Ci0gICAgc3RhdGljIHZvaWQgc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IGlzQ1NTQ29tcG9zaXRpbmdFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJv
b2wgY3NzQ29tcG9zaXRpbmdFbmFibGVkKCkgeyByZXR1cm4gaXNDU1NDb21wb3NpdGluZ0VuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldENTU0NvbXBvc2l0aW5nRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX2lzQ1NTQ29tcG9zaXRpbmdFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBjc3ND
b21wb3NpdGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ1NTQ29tcG9zaXRpbmdFbmFi
bGVkOyB9CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBzdGF0aWMgdm9pZCBz
ZXRGb250TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNGb250TG9hZEV2ZW50
c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBmb250TG9hZEV2ZW50c0Vu
YWJsZWQoKSB7IHJldHVybiBpc0ZvbnRMb2FkRXZlbnRzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0
Rm9udExvYWRFdmVudHNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNGb250TG9hZEV2ZW50
c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNGb250TG9hZEV2ZW50c0VuYWJsZWQ7IH0KICNlbHNlCi0gICAg
c3RhdGljIHZvaWQgc2V0Rm9udExvYWRFdmVudHNFbmFibGVkKGJvb2wpIHsgfQotICAgIHN0YXRp
YyBib29sIGZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdm9p
ZCBzZXRGb250TG9hZEV2ZW50c0VuYWJsZWQoYm9vbCkgeyB9CisgICAgYm9vbCBmb250TG9hZEV2
ZW50c0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAgICAgLy8gTW96aWxsYSB2ZXJzaW9uCi0gICAgc3RhdGljIGJvb2wgd2Vi
a2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxTY3JlZW5BUElFbmFibGVk
OyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V2Via2l0RnVsbFNjcmVlbkFQSUVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNGdWxsU2NyZWVuQVBJRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0
YXRpYyBib29sIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVs
bFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5F
bmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIHdlYmtpdEZ1bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZEVuYWJsZWQoKSB7IHJldHVy
biBpc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0Q3VycmVu
dEZ1bGxTY3JlZW5FbGVtZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJs
ZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuRW5hYmxlZCgpIHsg
cmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEZ1bGxTY3Jl
ZW5BUElFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9
CisgICAgdm9pZCBzZXRXZWJraXRGdWxsU2NyZWVuQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkg
eyBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVu
QVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0SXNGdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0RnVs
bFNjcmVlbktleWJvYXJkSW5wdXRBbGxvd2VkRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNG
dWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5F
bGVtZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsg
fQorICAgIGJvb2wgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbkVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KIAogICAgIC8vIFczQyB2ZXJzaW9uCi0gICAg
c3RhdGljIGJvb2wgd2Via2l0RnVsbHNjcmVlbkVuYWJsZWRFbmFibGVkKCkgeyByZXR1cm4gaXNG
dWxsU2NyZWVuQVBJRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdEZ1bGxzY3JlZW5F
bGVtZW50RW5hYmxlZCgpIHsgcmV0dXJuIGlzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KLSAgICBz
dGF0aWMgYm9vbCB3ZWJraXRFeGl0RnVsbHNjcmVlbkVuYWJsZWQoKSB7IHJldHVybiBpc0Z1bGxT
Y3JlZW5BUElFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxzY3Jl
ZW5FbmFibGVkKCkgeyByZXR1cm4gaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wg
d2Via2l0RnVsbHNjcmVlbkVuYWJsZWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxT
Y3JlZW5BUElFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsc2NyZWVuRWxlbWVudEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyAgICBib29s
IHdlYmtpdEV4aXRGdWxsc2NyZWVuRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2Ny
ZWVuQVBJRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0UmVxdWVzdEZ1bGxzY3JlZW5FbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWSURFTykKLSAgICBzdGF0aWMgYm9vbCBhdWRpb0VuYWJsZWQoKTsKLSAgICBz
dGF0aWMgYm9vbCBodG1sTWVkaWFFbGVtZW50RW5hYmxlZCgpOwotICAgIHN0YXRpYyBib29sIGh0
bWxBdWRpb0VsZW1lbnRFbmFibGVkKCk7Ci0gICAgc3RhdGljIGJvb2wgaHRtbFZpZGVvRWxlbWVu
dEVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCBodG1sU291cmNlRWxlbWVudEVuYWJsZWQoKTsK
LSAgICBzdGF0aWMgYm9vbCBtZWRpYUNvbnRyb2xsZXJFbmFibGVkKCk7Ci0gICAgc3RhdGljIGJv
b2wgbWVkaWFFcnJvckVuYWJsZWQoKTsKLSAgICBzdGF0aWMgYm9vbCB0aW1lUmFuZ2VzRW5hYmxl
ZCgpOworICAgIGJvb2wgYXVkaW9FbmFibGVkKCkgY29uc3Q7CisgICAgYm9vbCBodG1sTWVkaWFF
bGVtZW50RW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgaHRtbEF1ZGlvRWxlbWVudEVuYWJsZWQo
KSBjb25zdDsKKyAgICBib29sIGh0bWxWaWRlb0VsZW1lbnRFbmFibGVkKCkgY29uc3Q7CisgICAg
Ym9vbCBodG1sU291cmNlRWxlbWVudEVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIG1lZGlhQ29u
dHJvbGxlckVuYWJsZWQoKSBjb25zdDsKKyAgICBib29sIG1lZGlhRXJyb3JFbmFibGVkKCkgY29u
c3Q7CisgICAgYm9vbCB0aW1lUmFuZ2VzRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0hBUkVEX1dPUktFUlMpCi0gICAgc3RhdGljIGJvb2wgc2hhcmVkV29ya2VyRW5hYmxl
ZCgpOworICAgIGJvb2wgc2hhcmVkV29ya2VyRW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCi0gICAgc3RhdGljIGJvb2wgd2ViU29ja2V0RW5hYmxlZCgp
OworICAgIGJvb2wgd2ViU29ja2V0RW5hYmxlZCgpIGNvbnN0OwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQotICAgIHN0YXRpYyBib29sIG9wZW5EYXRhYmFzZUVuYWJsZWQoKTsK
LSAgICBzdGF0aWMgYm9vbCBvcGVuRGF0YWJhc2VTeW5jRW5hYmxlZCgpOworICAgIGJvb2wgb3Bl
bkRhdGFiYXNlRW5hYmxlZCgpIGNvbnN0OworICAgIGJvb2wgb3BlbkRhdGFiYXNlU3luY0VuYWJs
ZWQoKSBjb25zdDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBzdGF0
aWMgYm9vbCB0b3VjaEVuYWJsZWQoKSB7IHJldHVybiBpc1RvdWNoRW5hYmxlZDsgfQotICAgIHN0
YXRpYyB2b2lkIHNldFRvdWNoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1RvdWNoRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgdG91Y2hFbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9pc1RvdWNoRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0VG91Y2hFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNUb3VjaEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCi0gICAgc3Rh
dGljIHZvaWQgc2V0RGV2aWNlTW90aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0Rldmlj
ZU1vdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBkZXZpY2VNb3Rp
b25FbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9Ci0gICAgc3RhdGlj
IGJvb2wgZGV2aWNlTW90aW9uRXZlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VNb3Rpb25F
bmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgb25kZXZpY2Vtb3Rpb25FbmFibGVkKCkgeyByZXR1
cm4gaXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXREZXZpY2VP
cmllbnRhdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNEZXZpY2VPcmllbnRhdGlvbkVu
YWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBkZXZpY2VPcmllbnRhdGlvbkVu
YWJsZWQoKSB7IHJldHVybiBpc0RldmljZU9yaWVudGF0aW9uRW5hYmxlZDsgfQotICAgIHN0YXRp
YyBib29sIGRldmljZU9yaWVudGF0aW9uRXZlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNEZXZpY2VP
cmllbnRhdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBvbmRldmljZW9yaWVudGF0aW9u
RW5hYmxlZCgpIHsgcmV0dXJuIGlzRGV2aWNlT3JpZW50YXRpb25FbmFibGVkOyB9Ci0KLSAgICBz
dGF0aWMgdm9pZCBzZXRTcGVlY2hJbnB1dEVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNTcGVl
Y2hJbnB1dEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBzcGVlY2hJbnB1
dEVuYWJsZWQoKSB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxlZDsgfQotICAgIHN0YXRpYyBi
b29sIHdlYmtpdFNwZWVjaEVuYWJsZWQoKSB7IHJldHVybiBpc1NwZWVjaElucHV0RW5hYmxlZDsg
fQotICAgIHN0YXRpYyBib29sIHdlYmtpdEdyYW1tYXJFbmFibGVkKCkgeyByZXR1cm4gaXNTcGVl
Y2hJbnB1dEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldERldmljZU1vdGlvbkVuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgbV9pc0RldmljZU1vdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBi
b29sIGRldmljZU1vdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlTW90aW9u
RW5hYmxlZDsgfQorICAgIGJvb2wgZGV2aWNlTW90aW9uRXZlbnRFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0RldmljZU1vdGlvbkVuYWJsZWQ7IH0KKyAgICBib29sIG9uZGV2aWNlbW90aW9u
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNEZXZpY2VNb3Rpb25FbmFibGVkOyB9CisKKyAg
ICB2b2lkIHNldERldmljZU9yaWVudGF0aW9uRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lz
RGV2aWNlT3JpZW50YXRpb25FbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBkZXZpY2VP
cmllbnRhdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRGV2aWNlT3JpZW50YXRpb25F
bmFibGVkOyB9CisgICAgYm9vbCBkZXZpY2VPcmllbnRhdGlvbkV2ZW50RW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7IH0KKyAgICBib29sIG9uZGV2
aWNlb3JpZW50YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0RldmljZU9yaWVudGF0
aW9uRW5hYmxlZDsgfQorCisgICAgdm9pZCBzZXRTcGVlY2hJbnB1dEVuYWJsZWQoYm9vbCBpc0Vu
YWJsZWQpIHsgbV9pc1NwZWVjaElucHV0RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wg
c3BlZWNoSW5wdXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1NwZWVjaElucHV0RW5hYmxl
ZDsgfQorICAgIGJvb2wgd2Via2l0U3BlZWNoRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
cGVlY2hJbnB1dEVuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtpdEdyYW1tYXJFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1NwZWVjaElucHV0RW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKFNDUklQ
VEVEX1NQRUVDSCkKLSAgICBzdGF0aWMgdm9pZCBzZXRTY3JpcHRlZFNwZWVjaEVuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgaXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAg
ICBzdGF0aWMgYm9vbCBzY3JpcHRlZFNwZWVjaEVuYWJsZWQoKSB7IHJldHVybiBpc1NjcmlwdGVk
U3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFNwZWVjaFJlY29nbml0aW9u
RW5hYmxlZCgpIHsgcmV0dXJuIGlzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9Ci0gICAgc3RhdGlj
IGJvb2wgd2Via2l0U3BlZWNoUmVjb2duaXRpb25FcnJvckVuYWJsZWQoKSB7IHJldHVybiBpc1Nj
cmlwdGVkU3BlZWNoRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIHdlYmtpdFNwZWVjaFJlY29n
bml0aW9uRXZlbnRFbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0K
LSAgICBzdGF0aWMgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyRW5hYmxlZCgpIHsgcmV0dXJuIGlz
U2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9Ci0gICAgc3RhdGljIGJvb2wgd2Via2l0U3BlZWNoR3Jh
bW1hckxpc3RFbmFibGVkKCkgeyByZXR1cm4gaXNTY3JpcHRlZFNwZWVjaEVuYWJsZWQ7IH0KKyAg
ICB2b2lkIHNldFNjcmlwdGVkU3BlZWNoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzU2Ny
aXB0ZWRTcGVlY2hFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBzY3JpcHRlZFNwZWVj
aEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9Cisg
ICAgYm9vbCB3ZWJraXRTcGVlY2hSZWNvZ25pdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hSZWNvZ25p
dGlvbkVycm9yRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTY3JpcHRlZFNwZWVjaEVuYWJs
ZWQ7IH0KKyAgICBib29sIHdlYmtpdFNwZWVjaFJlY29nbml0aW9uRXZlbnRFbmFibGVkKCkgY29u
c3QgeyByZXR1cm4gbV9pc1NjcmlwdGVkU3BlZWNoRW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0
U3BlZWNoR3JhbW1hckVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2NyaXB0ZWRTcGVlY2hF
bmFibGVkOyB9CisgICAgYm9vbCB3ZWJraXRTcGVlY2hHcmFtbWFyTGlzdEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShGSUxFX1NZU1RFTSkKLSAgICBzdGF0aWMgYm9vbCBmaWxlU3lzdGVtRW5hYmxlZCgpOwot
ICAgIHN0YXRpYyB2b2lkIHNldEZpbGVTeXN0ZW1FbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlz
RmlsZVN5c3RlbUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGZpbGVTeXN0ZW1FbmFi
bGVkKCkgY29uc3Q7CisgICAgdm9pZCBzZXRGaWxlU3lzdGVtRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBtX2lzRmlsZVN5c3RlbUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfSTE4Tl9BUEkpCi0gICAgc3RhdGljIGJvb2wgamF2YVNjcmlwdEkx
OE5BUElFbmFibGVkKCk7Ci0gICAgc3RhdGljIHZvaWQgc2V0SmF2YVNjcmlwdEkxOE5BUElFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzSmF2YVNjcmlwdEkxOE5BUElFbmFibGVkID0gaXNFbmFi
bGVkOyB9CisgICAgYm9vbCBqYXZhU2NyaXB0STE4TkFQSUVuYWJsZWQoKSBjb25zdDsKKyAgICB2
b2lkIHNldEphdmFTY3JpcHRJMThOQVBJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSmF2
YVNjcmlwdEkxOE5BUElFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCi0gICAgc3RhdGljIGJvb2wgbWVkaWFTdHJlYW1FbmFibGVkKCkgeyBy
ZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRNZWRpYVN0
cmVhbUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNNZWRpYVN0cmVhbUVuYWJsZWQgPSBpc0Vu
YWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRVc2VyTWVkaWFFbmFibGVkKCkgeyBy
ZXR1cm4gaXNNZWRpYVN0cmVhbUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRNZWRp
YVN0cmVhbUVuYWJsZWQoKSB7IHJldHVybiBpc01lZGlhU3RyZWFtRW5hYmxlZDsgfQotCi0gICAg
c3RhdGljIGJvb2wgcGVlckNvbm5lY3Rpb25FbmFibGVkKCkgeyByZXR1cm4gaXNNZWRpYVN0cmVh
bUVuYWJsZWQgJiYgaXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRQZWVyQ29ubmVjdGlvbkVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNQZWVyQ29ubmVjdGlv
bkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCB3ZWJraXRSVENQZWVyQ29u
bmVjdGlvbkVuYWJsZWQoKSB7IHJldHVybiBwZWVyQ29ubmVjdGlvbkVuYWJsZWQoKTsgfQorICAg
IGJvb2wgbWVkaWFTdHJlYW1FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc01lZGlhU3RyZWFt
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0TWVkaWFTdHJlYW1FbmFibGVkKGJvb2wgaXNFbmFibGVk
KSB7IG1faXNNZWRpYVN0cmVhbUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHdlYmtp
dEdldFVzZXJNZWRpYUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTdHJlYW1FbmFi
bGVkOyB9CisgICAgYm9vbCB3ZWJraXRNZWRpYVN0cmVhbUVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX2lzTWVkaWFTdHJlYW1FbmFibGVkOyB9CisKKyAgICBib29sIHBlZXJDb25uZWN0aW9uRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQgJiYgbV9pc1BlZXJD
b25uZWN0aW9uRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0UGVlckNvbm5lY3Rpb25FbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IG1faXNQZWVyQ29ubmVjdGlvbkVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0K
KyAgICBib29sIHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IHBlZXJDb25uZWN0aW9uRW5hYmxlZCgpOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShMRUdBQ1lf
Q1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICBzdGF0aWMgdm9pZCBzZXRMZWdhY3lDU1NWZW5kb3JQ
cmVmaXhlc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhl
c0VuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAgICBzdGF0aWMgYm9vbCBsZWdhY3lDU1NWZW5kb3JQ
cmVmaXhlc0VuYWJsZWQoKSB7IHJldHVybiBpc0xlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxl
ZDsgfQorICAgIHZvaWQgc2V0TGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKGJvb2wgaXNF
bmFibGVkKSB7IG1faXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQgPSBpc0VuYWJsZWQ7
IH0KKyAgICBib29sIGxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKEdBTUVQQUQpCi0gICAgc3RhdGljIHZvaWQgc2V0V2Via2l0R2V0R2FtZXBhZHNFbmFi
bGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzR2FtZXBhZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KLSAg
ICBzdGF0aWMgYm9vbCB3ZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQoKSB7IHJldHVybiBpc0dhbWVw
YWRFbmFibGVkOyB9CisgICAgdm9pZCBzZXRXZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgbV9pc0dhbWVwYWRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCB3
ZWJraXRHZXRHYW1lcGFkc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzR2FtZXBhZEVuYWJs
ZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFFVT1RBKQotICAgIHN0YXRpYyBib29sIHF1b3Rh
RW5hYmxlZCgpIHsgcmV0dXJuIGlzUXVvdGFFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0
UXVvdGFFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzUXVvdGFFbmFibGVkID0gaXNFbmFibGVk
OyB9CisgICAgYm9vbCBxdW90YUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUXVvdGFFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRRdW90YUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc1F1
b3RhRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFfU09V
UkNFKQotICAgIHN0YXRpYyBib29sIG1lZGlhU291cmNlRW5hYmxlZCgpIHsgcmV0dXJuIGlzTWVk
aWFTb3VyY2VFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0TWVkaWFTb3VyY2VFbmFibGVk
KGJvb2wgaXNFbmFibGVkKSB7IGlzTWVkaWFTb3VyY2VFbmFibGVkID0gaXNFbmFibGVkOyB9Cisg
ICAgYm9vbCBtZWRpYVNvdXJjZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzTWVkaWFTb3Vy
Y2VFbmFibGVkOyB9CisgICAgdm9pZCBzZXRNZWRpYVNvdXJjZUVuYWJsZWQoYm9vbCBpc0VuYWJs
ZWQpIHsgbV9pc01lZGlhU291cmNlRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQotICAgIHN0YXRpYyBib29sIGVuY3J5cHRlZE1lZGlh
RW5hYmxlZCgpIHsgcmV0dXJuIGlzRW5jcnlwdGVkTWVkaWFFbmFibGVkOyB9Ci0gICAgc3RhdGlj
IHZvaWQgc2V0RW5jcnlwdGVkTWVkaWFFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IGlzRW5jcnlw
dGVkTWVkaWFFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgYm9vbCBlbmNyeXB0ZWRNZWRpYUVu
YWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRW5jcnlwdGVkTWVkaWFFbmFibGVkOyB9CisgICAg
dm9pZCBzZXRFbmNyeXB0ZWRNZWRpYUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0VuY3J5
cHRlZE1lZGlhRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgc3RhdGljIGJvb2wgd2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSB7IHJl
dHVybiBpc1ZpZGVvVHJhY2tFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0V2Via2l0Vmlk
ZW9UcmFja0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNWaWRlb1RyYWNrRW5hYmxlZCA9IGlz
RW5hYmxlZDsgfQorICAgIGJvb2wgd2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX2lzVmlkZW9UcmFja0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFdlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNWaWRlb1RyYWNrRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBzdGF0aWMgYm9v
bCBzaGFkb3dET01FbmFibGVkKCkgeyByZXR1cm4gaXNTaGFkb3dET01FbmFibGVkOyB9Ci0gICAg
c3RhdGljIHZvaWQgc2V0U2hhZG93RE9NRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc1NoYWRv
d0RPTUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIHNoYWRvd0RPTUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2lzU2hhZG93RE9NRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0U2hhZG93
RE9NRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzU2hhZG93RE9NRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQogCi0gICAgc3RhdGljIGJvb2wgYXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVu
YWJsZWQoKSB7IHJldHVybiBpc0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkOyB9
Ci0gICAgc3RhdGljIHZvaWQgc2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgYXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJs
ZWQ7IH0KKyAgICB2b2lkIHNldEF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKGJv
b2wgaXNFbmFibGVkKSB7IG1faXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCA9
IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQotICAg
IHN0YXRpYyBib29sIGN1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCgpIHsgcmV0dXJuIGlzQ3VzdG9t
RE9NRWxlbWVudHNFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tRE9NRWxlbWVu
dHMoYm9vbCBpc0VuYWJsZWQpIHsgaXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQgPSBpc0VuYWJs
ZWQ7IH0KKyAgICBib29sIGN1c3RvbURPTUVsZW1lbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1faXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEN1c3RvbURPTUVs
ZW1lbnRzKGJvb2wgaXNFbmFibGVkKSB7IG1faXNDdXN0b21ET01FbGVtZW50c0VuYWJsZWQgPSBp
c0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICBzdGF0
aWMgYm9vbCBzdHlsZVNjb3BlZEVuYWJsZWQoKSB7IHJldHVybiBpc1N0eWxlU2NvcGVkRW5hYmxl
ZDsgfQotICAgIHN0YXRpYyB2b2lkIHNldFN0eWxlU2NvcGVkRW5hYmxlZChib29sIGlzRW5hYmxl
ZCkgeyBpc1N0eWxlU2NvcGVkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgc3R5bGVT
Y29wZWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0eWxlU2NvcGVkRW5hYmxlZDsgfQor
ICAgIHZvaWQgc2V0U3R5bGVTY29wZWRFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNTdHls
ZVNjb3BlZEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfREFURSkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVEYXRlRW5hYmxlZCgpIHsgcmV0
dXJuIGlzSW5wdXRUeXBlRGF0ZUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRJbnB1dFR5
cGVEYXRlRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZURhdGVFbmFibGVkID0g
aXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVEYXRlRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlRGF0
ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZURhdGVFbmFibGVkID0gaXNF
bmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FX0lOQ09N
UExFVEUpCi0gICAgc3RhdGljIGJvb2wgaW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKCkgeyByZXR1
cm4gaXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRJbnB1
dFR5cGVEYXRlVGltZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNJbnB1dFR5cGVEYXRlVGlt
ZUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKyAgICBib29sIGlucHV0VHlwZURhdGVUaW1lRW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnB1dFR5cGVEYXRlVGltZUVuYWJsZWQ7IH0KKyAgICB2
b2lkIHNldElucHV0VHlwZURhdGVUaW1lRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzSW5w
dXRUeXBlRGF0ZVRpbWVFbmFibGVkID0gaXNFbmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShJTlBVVF9UWVBFX0RBVEVUSU1FTE9DQUwpCi0gICAgc3RhdGljIGJvb2wgaW5wdXRUeXBlRGF0
ZVRpbWVMb2NhbEVuYWJsZWQoKSB7IHJldHVybiBpc0lucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFi
bGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQo
Ym9vbCBpc0VuYWJsZWQpIHsgaXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCA9IGlzRW5h
YmxlZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2lzSW5wdXRUeXBlRGF0ZVRpbWVMb2NhbEVuYWJsZWQ7IH0KKyAgICB2b2lkIHNl
dElucHV0VHlwZURhdGVUaW1lTG9jYWxFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1
dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoSU5QVVRfVFlQRV9NT05USCkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVNb250aEVu
YWJsZWQoKSB7IHJldHVybiBpc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsgfQotICAgIHN0YXRpYyB2
b2lkIHNldElucHV0VHlwZU1vbnRoRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlw
ZU1vbnRoRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgaW5wdXRUeXBlTW9udGhFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0lucHV0VHlwZU1vbnRoRW5hYmxlZDsgfQorICAgIHZv
aWQgc2V0SW5wdXRUeXBlTW9udGhFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1faXNJbnB1dFR5
cGVNb250aEVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKElOUFVU
X1RZUEVfVElNRSkKLSAgICBzdGF0aWMgYm9vbCBpbnB1dFR5cGVUaW1lRW5hYmxlZCgpIHsgcmV0
dXJuIGlzSW5wdXRUeXBlVGltZUVuYWJsZWQ7IH0KLSAgICBzdGF0aWMgdm9pZCBzZXRJbnB1dFR5
cGVUaW1lRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBpc0lucHV0VHlwZVRpbWVFbmFibGVkID0g
aXNFbmFibGVkOyB9CisgICAgYm9vbCBpbnB1dFR5cGVUaW1lRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJbnB1dFR5cGVUaW1lRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SW5wdXRUeXBlVGlt
ZUVuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgbV9pc0lucHV0VHlwZVRpbWVFbmFibGVkID0gaXNF
bmFibGVkOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCi0gICAgc3Rh
dGljIGJvb2wgaW5wdXRUeXBlV2Vla0VuYWJsZWQoKSB7IHJldHVybiBpc0lucHV0VHlwZVdlZWtF
bmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0SW5wdXRUeXBlV2Vla0VuYWJsZWQoYm9vbCBp
c0VuYWJsZWQpIHsgaXNJbnB1dFR5cGVXZWVrRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJv
b2wgaW5wdXRUeXBlV2Vla0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5wdXRUeXBlV2Vl
a0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldElucHV0VHlwZVdlZWtFbmFibGVkKGJvb2wgaXNFbmFi
bGVkKSB7IG1faXNJbnB1dFR5cGVXZWVrRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoQ1NQX05FWFQpCi0gICAgc3RhdGljIGJvb2wgZXhwZXJpbWVudGFsQ29udGVu
dFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKCkgeyByZXR1cm4gYXJlRXhwZXJpbWVudGFs
Q29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQg
c2V0RXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKGJvb2wg
aXNFbmFibGVkKSB7IGFyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVz
RW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIGJvb2wgZXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hcmVFeHBlcmltZW50
YWxDb250ZW50U2VjdXJpdHlQb2xpY3lGZWF0dXJlc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEV4
cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZChib29sIGlzRW5h
YmxlZCkgeyBtX2FyZUV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNT
KQotICAgIHN0YXRpYyBib29sIHNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoKSB7IHJldHVybiBhcmVT
ZWFtbGVzc0lGcmFtZXNFbmFibGVkOyB9Ci0gICAgc3RhdGljIHZvaWQgc2V0U2VhbWxlc3NJRnJh
bWVzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBhcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkID0g
aXNFbmFibGVkOyB9CisgICAgYm9vbCBzZWFtbGVzc0lGcmFtZXNFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9hcmVTZWFtbGVzc0lGcmFtZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRTZWFtbGVz
c0lGcmFtZXNFbmFibGVkKGJvb2wgaXNFbmFibGVkKSB7IG1fYXJlU2VhbWxlc3NJRnJhbWVzRW5h
YmxlZCA9IGlzRW5hYmxlZDsgfQogI2VuZGlmCiAKLSAgICBzdGF0aWMgYm9vbCBsYW5nQXR0cmli
dXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpIHsgcmV0dXJuIGlzTGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7IH0KKyAgICBib29sIGxhbmdBdHRyaWJ1dGVBd2FyZUZv
cm1Db250cm9sVUlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0xhbmdBdHRyaWJ1dGVBd2Fy
ZUZvcm1Db250cm9sVUlFbmFibGVkOyB9CiAgICAgLy8gVGhlIGxhbmcgYXR0cmlidXRlIHN1cHBv
cnQgaXMgaW5jb21wbGV0ZSBhbmQgc2hvdWxkIG9ubHkgYmUgdHVybmVkIG9uIGZvciB0ZXN0cy4K
LSAgICBzdGF0aWMgdm9pZCBzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxl
ZChib29sIGlzRW5hYmxlZCkgeyBpc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFi
bGVkID0gaXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRMYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29u
dHJvbFVJRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBtX2lzTGFuZ0F0dHJpYnV0ZUF3YXJlRm9y
bUNvbnRyb2xVSUVuYWJsZWQgPSBpc0VuYWJsZWQ7IH0KKworICAgIHN0YXRpYyBSdW50aW1lRW5h
YmxlZEZlYXR1cmVzJiBzaGFyZWRGZWF0dXJlcygpOwogCiBwcml2YXRlOgogICAgIC8vIE5ldmVy
IGluc3RhbnRpYXRlLgotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMoKSB7IH0KKyAgICBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzKCk7CiAKLSAgICBzdGF0aWMgYm9vbCBpc0xvY2FsU3RvcmFnZUVu
YWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNTZXNzaW9uU3RvcmFnZUVuYWJsZWQ7Ci0gICAgc3Rh
dGljIGJvb2wgaXNXZWJraXROb3RpZmljYXRpb25zRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBp
c0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzRGF0YVRyYW5zZmVy
SXRlbXNFbmFibGVkOwotICAgIHN0YXRpYyBib29sIGlzR2VvbG9jYXRpb25FbmFibGVkOwotICAg
IHN0YXRpYyBib29sIGlzSW5kZXhlZERCRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1RvdWNo
RW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0RldmljZU1vdGlvbkVuYWJsZWQ7Ci0gICAgc3Rh
dGljIGJvb2wgaXNEZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNT
cGVlY2hJbnB1dEVuYWJsZWQ7Ci0gICAgc3RhdGljIGJvb2wgaXNDYW52YXNQYXRoRW5hYmxlZDsK
LSAgICBzdGF0aWMgYm9vbCBpc0NTU0V4Y2x1c2lvbnNFbmFibGVkOwotICAgIHN0YXRpYyBib29s
IGlzQ1NTU2hhcGVzRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc0NTU1JlZ2lvbnNFbmFibGVk
OwotICAgIHN0YXRpYyBib29sIGlzQ1NTQ29tcG9zaXRpbmdFbmFibGVkOwotICAgIFdFQkNPUkVf
VEVTVElORyBzdGF0aWMgYm9vbCBpc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFi
bGVkOworICAgIGJvb2wgbV9pc0xvY2FsU3RvcmFnZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzU2Vz
c2lvblN0b3JhZ2VFbmFibGVkOworICAgIGJvb2wgbV9pc1dlYmtpdE5vdGlmaWNhdGlvbnNFbmFi
bGVkOworICAgIGJvb2wgbV9pc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOworICAgIGJvb2wgbV9p
c0RhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZDsKKyAgICBib29sIG1faXNHZW9sb2NhdGlvbkVuYWJs
ZWQ7CisgICAgYm9vbCBtX2lzSW5kZXhlZERCRW5hYmxlZDsKKyAgICBib29sIG1faXNUb3VjaEVu
YWJsZWQ7CisgICAgYm9vbCBtX2lzRGV2aWNlTW90aW9uRW5hYmxlZDsKKyAgICBib29sIG1faXNE
ZXZpY2VPcmllbnRhdGlvbkVuYWJsZWQ7CisgICAgYm9vbCBtX2lzU3BlZWNoSW5wdXRFbmFibGVk
OworICAgIGJvb2wgbV9pc0NhbnZhc1BhdGhFbmFibGVkOworICAgIGJvb2wgbV9pc0NTU0V4Y2x1
c2lvbnNFbmFibGVkOworICAgIGJvb2wgbV9pc0NTU1NoYXBlc0VuYWJsZWQ7CisgICAgYm9vbCBt
X2lzQ1NTUmVnaW9uc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzQ1NTQ29tcG9zaXRpbmdFbmFibGVk
OworICAgIGJvb2wgbV9pc0xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkOwog
I2lmIEVOQUJMRShTQ1JJUFRFRF9TUEVFQ0gpCi0gICAgc3RhdGljIGJvb2wgaXNTY3JpcHRlZFNw
ZWVjaEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzU2NyaXB0ZWRTcGVlY2hFbmFibGVkOwogI2VuZGlm
CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIHN0YXRpYyBib29sIGlzRmlsZVN5c3RlbUVu
YWJsZWQ7CisgICAgYm9vbCBtX2lzRmlsZVN5c3RlbUVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0kxOE5fQVBJKQotICAgIHN0YXRpYyBib29sIGlzSmF2YVNjcmlwdEkx
OE5BUElFbmFibGVkOworICAgIGJvb2wgbV9pc0phdmFTY3JpcHRJMThOQVBJRW5hYmxlZDsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBzdGF0aWMgYm9vbCBpc01lZGlh
U3RyZWFtRW5hYmxlZDsKLSAgICBzdGF0aWMgYm9vbCBpc1BlZXJDb25uZWN0aW9uRW5hYmxlZDsK
KyAgICBib29sIG1faXNNZWRpYVN0cmVhbUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzUGVlckNvbm5l
Y3Rpb25FbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBzdGF0aWMg
Ym9vbCBpc0dhbWVwYWRFbmFibGVkOworICAgIGJvb2wgbV9pc0dhbWVwYWRFbmFibGVkOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoTEVHQUNZX0NTU19WRU5ET1JfUFJFRklYRVMpCi0gICAgc3RhdGlj
IGJvb2wgaXNMZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzTGVn
YWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoUVVPVEEp
Ci0gICAgc3RhdGljIGJvb2wgaXNRdW90YUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzUXVvdGFFbmFi
bGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgc3RhdGljIGJv
b2wgaXNGdWxsU2NyZWVuQVBJRW5hYmxlZDsKKyAgICBib29sIG1faXNGdWxsU2NyZWVuQVBJRW5h
YmxlZDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLSAgICBzdGF0aWMgYm9v
bCBpc01lZGlhU291cmNlRW5hYmxlZDsKKyAgICBib29sIG1faXNNZWRpYVNvdXJjZUVuYWJsZWQ7
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCi0gICAgc3RhdGljIGJvb2wg
aXNFbmNyeXB0ZWRNZWRpYUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzRW5jcnlwdGVkTWVkaWFFbmFi
bGVkOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgc3RhdGljIGJvb2wg
aXNWaWRlb1RyYWNrRW5hYmxlZDsKKyAgICBib29sIG1faXNWaWRlb1RyYWNrRW5hYmxlZDsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgc3RhdGljIGJvb2wgaXNTaGFkb3dE
T01FbmFibGVkOwotCi0gICAgc3RhdGljIGJvb2wgaXNBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVt
ZW50RW5hYmxlZDsKKyAgICBib29sIG1faXNTaGFkb3dET01FbmFibGVkOworICAgIGJvb2wgbV9p
c0F1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ1VTVE9NX0VMRU1FTlRTKQotICAgIHN0YXRpYyBib29sIGlzQ3VzdG9tRE9NRWxlbWVudHNF
bmFibGVkOworICAgIGJvb2wgbV9pc0N1c3RvbURPTUVsZW1lbnRzRW5hYmxlZDsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICBzdGF0aWMgYm9vbCBpc1N0eWxlU2NvcGVk
RW5hYmxlZDsKKyAgICBib29sIG1faXNTdHlsZVNjb3BlZEVuYWJsZWQ7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShJTlBVVF9UWVBFX0RBVEUpCi0gICAgc3RhdGljIGJvb2wgaXNJbnB1dFR5cGVEYXRl
RW5hYmxlZDsKKyAgICBib29sIG1faXNJbnB1dFR5cGVEYXRlRW5hYmxlZDsKICNlbmRpZgogCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5DT01QTEVURSkKLSAgICBzdGF0aWMgYm9v
bCBpc0lucHV0VHlwZURhdGVUaW1lRW5hYmxlZDsKKyAgICBib29sIG1faXNJbnB1dFR5cGVEYXRl
VGltZUVuYWJsZWQ7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0RBVEVUSU1FTE9D
QUwpCi0gICAgc3RhdGljIGJvb2wgaXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsKKyAg
ICBib29sIG1faXNJbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZDsKICNlbmRpZgogCiAjaWYg
RU5BQkxFKElOUFVUX1RZUEVfTU9OVEgpCi0gICAgc3RhdGljIGJvb2wgaXNJbnB1dFR5cGVNb250
aEVuYWJsZWQ7CisgICAgYm9vbCBtX2lzSW5wdXRUeXBlTW9udGhFbmFibGVkOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9USU1FKQotICAgIHN0YXRpYyBib29sIGlzSW5wdXRUeXBl
VGltZUVuYWJsZWQ7CisgICAgYm9vbCBtX2lzSW5wdXRUeXBlVGltZUVuYWJsZWQ7CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShJTlBVVF9UWVBFX1dFRUspCi0gICAgc3RhdGljIGJvb2wgaXNJbnB1dFR5
cGVXZWVrRW5hYmxlZDsKKyAgICBib29sIG1faXNJbnB1dFR5cGVXZWVrRW5hYmxlZDsKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENTUF9ORVhUKQotICAgIHN0YXRpYyBib29sIGFyZUV4cGVyaW1lbnRh
bENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZDsKKyAgICBib29sIG1fYXJlRXhw
ZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5RmVhdHVyZXNFbmFibGVkOwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoSUZSQU1FX1NFQU1MRVNTKQotICAgIHN0YXRpYyBib29sIGFyZVNlYW1sZXNz
SUZyYW1lc0VuYWJsZWQ7CisgICAgYm9vbCBtX2FyZVNlYW1sZXNzSUZyYW1lc0VuYWJsZWQ7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIHN0YXRpYyBib29sIGlz
Rm9udExvYWRFdmVudHNFbmFibGVkOworICAgIGJvb2wgbV9pc0ZvbnRMb2FkRXZlbnRzRW5hYmxl
ZDsKICNlbmRpZgogCisjaWZuZGVmIENMQVNTX0lGX0dDQworI2lmIENPTVBJTEVSKEdDQykKKyNk
ZWZpbmUgQ0xBU1NfSUZfR0NDIGNsYXNzCisjZWxzZQorI2RlZmluZSBDTEFTU19JRl9HQ0MKKyNl
bmRpZgorI2VuZGlmCisgICAgZnJpZW5kIENMQVNTX0lGX0dDQyBOZXZlckRlc3Ryb3llZDxSdW50
aW1lRW5hYmxlZEZlYXR1cmVzPjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURl
Y2xhcmF0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMDkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBQcm9wZXJ0
eU5hbWVQcmVmaXggZ2V0Q1NTUHJvcGVydHkKICAgICBzd2l0Y2ggKGZpcnN0Q2hhcikgewogI2lm
IEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICBjYXNlICdhJzoKLSAgICAg
ICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5h
YmxlZCgpICYmIG1hdGNoZXNDU1NQcm9wZXJ0eU5hbWVQcmVmaXgocHJvcGVydHlOYW1lLCAiYXBw
bGUiKSkKKyAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkubGVnYWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5
TmFtZVByZWZpeChwcm9wZXJ0eU5hbWUsICJhcHBsZSIpKQogICAgICAgICAgICAgcmV0dXJuIFBy
b3BlcnR5TmFtZVByZWZpeEFwcGxlOwogICAgICAgICBicmVhazsKICNlbmRpZgpAQCAtMTMwLDcg
KzEzMCw3IEBAIHN0YXRpYyBQcm9wZXJ0eU5hbWVQcmVmaXggZ2V0Q1NTUHJvcGVydHkKICAgICAg
ICAgYnJlYWs7CiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJWEVTKQogICAgIGNh
c2UgJ2snOgotICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGVnYWN5Q1NTVmVu
ZG9yUHJlZml4ZXNFbmFibGVkKCkgJiYgbWF0Y2hlc0NTU1Byb3BlcnR5TmFtZVByZWZpeChwcm9w
ZXJ0eU5hbWUsICJraHRtbCIpKQorICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKSAmJiBtYXRj
aGVzQ1NTUHJvcGVydHlOYW1lUHJlZml4KHByb3BlcnR5TmFtZSwgImtodG1sIikpCiAgICAgICAg
ICAgICByZXR1cm4gUHJvcGVydHlOYW1lUHJlZml4S0hUTUw7CiAgICAgICAgIGJyZWFrOwogI2Vu
ZGlmCkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBjc3NQcm9wZXJ0
eUlERm9ySgogI2lmIEVOQUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKICAgICBjYXNl
IFByb3BlcnR5TmFtZVByZWZpeEFwcGxlOgogICAgIGNhc2UgUHJvcGVydHlOYW1lUHJlZml4S0hU
TUw6Ci0gICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsZWdhY3lDU1NWZW5k
b3JQcmVmaXhlc0VuYWJsZWQoKSk7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLmxlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZCgpKTsK
ICAgICAgICAgd3JpdGVXZWJLaXRQcmVmaXgoYnVmZmVyUHRyKTsKICAgICAgICAgaSArPSA1Owog
ICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMyw3ICszLDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDA2IEFuZGVycyBDYXJsc3NvbiA8YW5k
ZXJzY2FAbWFjLmNvbT4KICMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IFNhbXVlbCBXZWluaWcg
PHNhbUB3ZWJraXQub3JnPgogIyBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtv
diA8YXBAd2Via2l0Lm9yZz4KLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IENhbWVyb24gTWNDb3JtYWNrIDxjYW1AbWNj
LmlkLmF1PgogIyBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTAu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKQEAgLTE0NDQsMTEgKzE0NDQsMTEgQEAg
c3ViIEdldFJ1bnRpbWVFbmFibGVGdW5jdGlvbk5hbWUKIHsKICAgICBteSAkc2lnbmF0dXJlID0g
c2hpZnQ7CiAKLSAgICAjIElmIGEgcGFyYW1ldGVyIGlzIGdpdmVuIChlLmcuICJFbmFibGVkQXRS
dW50aW1lPUZlYXR1cmVOYW1lIikgcmV0dXJuIHRoZSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp7
RmVhdHVyZU5hbWV9RW5hYmxlZCgpIG1ldGhvZC4KLSAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OiIgLiBUb01ldGhvZE5hbWUoJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkVuYWJsZWRBdFJ1bnRpbWUifSkgLiAiRW5hYmxlZCIgaWYgKCRzaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn0gJiYgJHNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSBuZSAiVkFMVUVfSVNfTUlTU0lORyIp
OworICAgICMgSWYgYSBwYXJhbWV0ZXIgaXMgZ2l2ZW4gKGUuZy4gIkVuYWJsZWRBdFJ1bnRpbWU9
RmVhdHVyZU5hbWUiKSByZXR1cm4gdGhlIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZl
YXR1cmVzKCkue0ZlYXR1cmVOYW1lfUVuYWJsZWQoKSBtZXRob2QuCisgICAgcmV0dXJuICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLiIgLiBUb01ldGhvZE5hbWUoJHNp
Z25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRpbWUifSkgLiAiRW5h
YmxlZCIgaWYgKCRzaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50
aW1lIn0gJiYgJHNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRBdFJ1bnRp
bWUifSBuZSAiVkFMVUVfSVNfTUlTU0lORyIpOwogCi0gICAgIyBPdGhlcndpc2UgcmV0dXJuIGEg
ZnVuY3Rpb24gbmFtZWQgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6e21ldGhvZE5hbWV9RW5hYmxl
ZCgpLgotICAgIHJldHVybiAiUnVudGltZUVuYWJsZWRGZWF0dXJlczo6IiAuIFRvTWV0aG9kTmFt
ZSgkc2lnbmF0dXJlLT5uYW1lKSAuICJFbmFibGVkIjsKKyAgICAjIE90aGVyd2lzZSByZXR1cm4g
YSBmdW5jdGlvbiBuYW1lZCBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnttZXRob2ROYW1lfUVuYWJsZWQoKS4KKyAgICByZXR1cm4gIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuIiAuIFRvTWV0aG9kTmFtZSgkc2lnbmF0dXJlLT5uYW1lKSAu
ICJFbmFibGVkIjsKIH0KIAogc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRGYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIENTU0ZvbnRGYWNlOjpmb250TG9hZGVkKENTU0ZvbnRG
YWNlCiAgICAgZm9udFNlbGVjdG9yLT5mb250TG9hZGVkKCk7CiAKICNpZiBFTkFCTEUoRk9OVF9M
T0FEX0VWRU5UUykKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVu
dHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZykgeworICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgp
ICYmIG1fbG9hZFN0YXRlID09IExvYWRpbmcpIHsKICAgICAgICAgaWYgKHNvdXJjZS0+ZW5zdXJl
Rm9udERhdGEoKSkKICAgICAgICAgICAgIG5vdGlmeUZvbnRMb2FkZXIoTG9hZGVkKTsKICAgICAg
ICAgZWxzZSBpZiAoIWlzVmFsaWQoKSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIENTU0ZvbnRG
YWNlOjpmb250TG9hZGVkKENTU0ZvbnRGYWNlCiAgICAgICAgICgqaXQpLT5mb250TG9hZGVkKHRo
aXMpOwogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgaWYgKFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpKQog
ICAgICAgICBub3RpZnlMb2FkaW5nRG9uZSgpOwogI2VuZGlmCiB9CkBAIC0xMTgsNyArMTE4LDcg
QEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NTRm9udEZhY2U6OgogICAgIENTU0ZvbnRT
ZWxlY3RvciogZm9udFNlbGVjdG9yID0gKCptX3NlZ21lbnRlZEZvbnRGYWNlcy5iZWdpbigpKS0+
Zm9udFNlbGVjdG9yKCk7CiAKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICBpZiAo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2Fk
U3RhdGUgPT0gTm90TG9hZGVkKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9hZFN0YXRlID09IE5v
dExvYWRlZCkKICAgICAgICAgbm90aWZ5Rm9udExvYWRlcihMb2FkaW5nKTsKICNlbmRpZgogCkBA
IC0xMjcsNyArMTI3LDcgQEAgUGFzc1JlZlB0cjxTaW1wbGVGb250RGF0YT4gQ1NTRm9udEZhY2U6
OgogICAgICAgICBpZiAoUmVmUHRyPFNpbXBsZUZvbnREYXRhPiByZXN1bHQgPSBtX3NvdXJjZXNb
aV0tPmdldEZvbnREYXRhKGZvbnREZXNjcmlwdGlvbiwgc3ludGhldGljQm9sZCwgc3ludGhldGlj
SXRhbGljLCBmb250U2VsZWN0b3IpKSB7CiAgICAgICAgICAgICBtX2FjdGl2ZVNvdXJjZSA9IG1f
c291cmNlc1tpXS5nZXQoKTsKICNpZiBFTkFCTEUoRk9OVF9MT0FEX0VWRU5UUykKLSAgICAgICAg
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSAm
JiBtX2xvYWRTdGF0ZSA9PSBMb2FkaW5nICYmIG1fc291cmNlc1tpXS0+aXNMb2FkZWQoKSkgewor
ICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
Zm9udExvYWRFdmVudHNFbmFibGVkKCkgJiYgbV9sb2FkU3RhdGUgPT0gTG9hZGluZyAmJiBtX3Nv
dXJjZXNbaV0tPmlzTG9hZGVkKCkpIHsKICAgICAgICAgICAgICAgICBub3RpZnlGb250TG9hZGVy
KExvYWRlZCk7CiAgICAgICAgICAgICAgICAgbm90aWZ5TG9hZGluZ0RvbmUoKTsKICAgICAgICAg
ICAgIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBQYXNzUmVmUHRyPFNpbXBsZUZvbnREYXRhPiBDU1NG
b250RmFjZTo6CiAgICAgfQogCiAjaWYgRU5BQkxFKEZPTlRfTE9BRF9FVkVOVFMpCi0gICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpICYmIG1fbG9h
ZFN0YXRlID09IExvYWRpbmcpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiBtX2xvYWRTdGF0ZSA9PSBM
b2FkaW5nKSB7CiAgICAgICAgIG5vdGlmeUZvbnRMb2FkZXIoRXJyb3IpOwogICAgICAgICBub3Rp
ZnlMb2FkaW5nRG9uZSgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2Vs
ZWN0b3IuY3BwCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dFNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDExLCAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNywgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTIzNSw3
ICsyMzUsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YWRkRm9udEZhY2VSdWxlKGNvCiAgICAg
ICAgICAgICBSZWZQdHI8Q1NTRm9udEZhY2VSdWxlPiBydWxlOwogI2lmIEVOQUJMRShGT05UX0xP
QURfRVZFTlRTKQogICAgICAgICAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMTIxMTYgLSBUaGlzIENTU0ZvbnRGYWNlUnVsZSBoYXMgbm8gcGFy
ZW50LgotICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZvbnRMb2FkRXZl
bnRzRW5hYmxlZCgpKQorICAgICAgICAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkuZm9udExvYWRFdmVudHNFbmFibGVkKCkpCiAgICAgICAgICAgICAgICAg
cnVsZSA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NTRm9udEZhY2VSdWxlPihmb250RmFjZVJ1bGUt
PmNyZWF0ZUNTU09NV3JhcHBlcigpKTsKICNlbmRpZgogICAgICAgICAgICAgZm9udEZhY2UgPSBD
U1NGb250RmFjZTo6Y3JlYXRlKHN0YXRpY19jYXN0PEZvbnRUcmFpdHNNYXNrPih0cmFpdHNNYXNr
KSwgcnVsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTU2NDA0
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNyArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDAzIExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQWxsYW4gU2FuZGZlbGQgSmVuc2VuIChr
ZGVAY2FyZXdvbGYuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAw
OSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgTmljaG9sYXMgU2hhbmtzIDx3ZWJraXRAbmlja3NoYW5r
cy5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9y
Zz4KICAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQpAQCAtNTg2LDcgKzU4Niw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnQKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0U2hhcGVNYXJnaW46CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBl
UGFkZGluZzoKICAgICAgICAgYWNjZXB0c05lZ2F0aXZlTnVtYmVycyA9IGZhbHNlOwotICAgICAg
ICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2hhcGVzRW5hYmxlZCgpOworICAg
ICAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NT
aGFwZXNFbmFibGVkKCk7CiAjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5Qm90dG9tOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlMZWZ0OgpAQCAtMTAzMSwxMyArMTAzMSwxMyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0CiAgICAgICAgIGJyZWFrOwogI2lmIEVOQUJM
RShDU1NfRVhDTFVTSU9OUykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcEZsb3c6Ci0g
ICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzRXhjbHVzaW9uc0VuYWJsZWQo
KSkKKyAgICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmNzc0V4Y2x1c2lvbnNFbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQm90
aCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlTWF4aW11bSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2xlYXIp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVdlYmtpdFdyYXBUaHJvdWdoOgotICAgICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OmNzc0V4Y2x1c2lvbnNFbmFibGVkKCkpCisgICAgICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NFeGNsdXNpb25zRW5hYmxlZCgpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAodmFsdWVJRCA9PSBDU1NWYWx1ZVdy
YXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTMwMTEsNyArMzAxMSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3Bl
cnR5SUQKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
U2hhcGVJbnNpZGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFNoYXBlT3V0c2lkZToKLSAg
ICAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTaGFwZXNFbmFibGVkKCkpCisg
ICAgICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jc3NT
aGFwZXNFbmFibGVkKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUF1dG8pCiAgICAgICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CkBA
IC0zMDI2LDcgKzMwMjYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0
eUlECiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTaGFwZU1hcmdp
bjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2hhcGVQYWRkaW5nOgotICAgICAgICB2YWxp
ZFByaW1pdGl2ZSA9IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTaGFwZXNFbmFibGVkKCkg
JiYgIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8IEZOb25OZWcpKTsKKyAgICAgICAg
dmFsaWRQcmltaXRpdmUgPSAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS5jc3NTaGFwZXNFbmFibGVkKCkgJiYgIWlkICYmIHZhbGlkVW5pdCh2YWx1ZSwgRkxlbmd0aCB8
IEZOb25OZWcpKTsKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICNpZiBFTkFCTEUoQ1NTX0lNQUdF
X09SSUVOVEFUSU9OKQpAQCAtMTIxOTksNyArMTIxOTksNyBAQCBzdGF0aWMgQ1NTUHJvcGVydHlJ
RCBjc3NQcm9wZXJ0eUlEKGNvbnN0CiAjaWYgRU5BQkxFKExFR0FDWV9DU1NfVkVORE9SX1BSRUZJ
WEVTKQogICAgICAgICAvLyBJZiB0aGUgcHJlZml4IGlzIC1hcHBsZS0gb3IgLWtodG1sLSwgY2hh
bmdlIGl0IHRvIC13ZWJraXQtLgogICAgICAgICAvLyBUaGlzIG1ha2VzIHRoZSBzdHJpbmcgb25l
IGNoYXJhY3RlciBsb25nZXIuCi0gICAgICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjps
ZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJsZWQoKQorICAgICAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sZWdhY3lDU1NWZW5kb3JQcmVmaXhlc0VuYWJs
ZWQoKQogICAgICAgICAgICAgJiYgKGhhc1ByZWZpeChidWZmZXIsIGxlbmd0aCwgIi1hcHBsZS0i
KSB8fCBoYXNQcmVmaXgoYnVmZmVyLCBsZW5ndGgsICIta2h0bWwtIikpKSB7CiAgICAgICAgICAg
ICBtZW1tb3ZlKGJ1ZmZlciArIDcsIGJ1ZmZlciArIDYsIGxlbmd0aCArIDEgLSA2KTsKICAgICAg
ICAgICAgIG1lbWNweShidWZmZXIsICItd2Via2l0IiwgNyk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU2VnbWVudGVkRm9udEZhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTZWdtZW50ZWRGb250RmFjZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTc1LDcgKzc1LDcgQEAgdm9pZCBDU1NTZWdtZW50ZWRGb250RmFjZTo6Zm9udExvYWRlZChDUwog
ICAgIHBydW5lVGFibGUoKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiAhaXNM
b2FkaW5nKCkpIHsKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSAmJiAhaXNMb2FkaW5nKCkpIHsKICAgICAgICAg
VmVjdG9yPFJlZlB0cjxMb2FkRm9udENhbGxiYWNrPiA+IGNhbGxiYWNrczsKICAgICAgICAgbV9j
YWxsYmFja3Muc3dhcChjYWxsYmFja3MpOwogICAgICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7
IGluZGV4IDwgY2FsbGJhY2tzLnNpemUoKTsgKytpbmRleCkgewpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMTIgKzIwOSwxMiBAQCBwdWJs
aWM6CiAgICAgewogI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCi0gICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01FbmFi
bGVkKCkgfHwgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkpOwor
ICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
aGFkb3dET01FbmFibGVkKCkgfHwgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSk7CiAjZWxzZQotICAgICAgICBBU1NFUlQoUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkpOworICAgICAgICBBU1NFUlQo
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zdHlsZVNjb3BlZEVuYWJs
ZWQoKSk7CiAjZW5kaWYKICNlbHNlCi0gICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFkb3dET01FbmFibGVkKCkpOworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkpOwogI2VuZGlmCiAg
ICAgICAgIGlmICghbV9zY29wZVJlc29sdmVyKQogICAgICAgICAgICAgbV9zY29wZVJlc29sdmVy
ID0gYWRvcHRQdHIobmV3IFN0eWxlU2NvcGVSZXNvbHZlcigpKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0OCwxMiArMTE0OCwxMiBAQCBib29sIERvY3Vt
ZW50Ojpjc3NTdGlja3lQb3NpdGlvbkVuYWJsZWQoCiAKIGJvb2wgRG9jdW1lbnQ6OmNzc1JlZ2lv
bnNFbmFibGVkKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
Y3NzUmVnaW9uc0VuYWJsZWQoKTsgCisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OnNoYXJlZEZlYXR1cmVzKCkuY3NzUmVnaW9uc0VuYWJsZWQoKTsgCiB9CiAKIGJvb2wgRG9jdW1l
bnQ6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OmNzc0NvbXBvc2l0aW5nRW5hYmxlZCgpOworICAgIHJldHVybiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc0NvbXBvc2l0aW5nRW5hYmxl
ZCgpOwogfQogCiBib29sIERvY3VtZW50Ojpjc3NHcmlkTGF5b3V0RW5hYmxlZCgpIGNvbnN0CkBA
IC01Njk5LDcgKzU2OTksNyBAQCBIVE1MSUZyYW1lRWxlbWVudCogRG9jdW1lbnQ6OnNlYW1sZXNz
UGFyCiBib29sIERvY3VtZW50OjpzaG91bGREaXNwbGF5U2VhbWxlc3NseVdpdGhQYXJlbnQoKSBj
b25zdAogewogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgaWYgKCFSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzZWFtbGVzc0lGcmFtZXNFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNlYW1sZXNzSUZyYW1lc0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXJFbGVtZW50ID0gdGhpcy0+b3duZXJFbGVtZW50KCk7CiAgICAgaWYgKCFvd25lckVsZW1lbnQp
CkBAIC01OTc3LDcgKzU5NzcsNyBAQCBib29sIERvY3VtZW50OjpoYXZlU3R5bGVzaGVldHNMb2Fk
ZWQoKSBjCiBMb2NhbGUmIERvY3VtZW50OjpnZXRDYWNoZWRMb2NhbGUoY29uc3QgQXRvbWljU3Ry
aW5nJiBsb2NhbGUpCiB7CiAgICAgQXRvbWljU3RyaW5nIGxvY2FsZUtleSA9IGxvY2FsZTsKLSAg
ICBpZiAobG9jYWxlLmlzRW1wdHkoKSB8fCAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6bGFuZ0F0
dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKKyAgICBpZiAobG9jYWxlLmlzRW1w
dHkoKSB8fCAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5sYW5nQXR0
cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQogICAgICAgICBsb2NhbGVLZXkgPSBk
ZWZhdWx0TGFuZ3VhZ2UoKTsKICAgICBMb2NhbGVJZGVudGlmaWVyVG9Mb2NhbGVNYXA6OkFkZFJl
c3VsdCByZXN1bHQgPSBtX2xvY2FsZUNhY2hlLmFkZChsb2NhbGVLZXksIG51bGxwdHIpOwogICAg
IGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ4Nyw3ICsxNDg3LDcgQEAgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50
OjpjcmVhdGVTaAogICAgICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CiAKICNpZiBF
TkFCTEUoU0hBRE9XX0RPTSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6YXV0aG9y
U2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoKSkgeworICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF1dGhvclNoYWRvd0RPTUZvckFueUVsZW1lbnRF
bmFibGVkKCkpIHsKICAgICAgICAgYWRkU2hhZG93Um9vdChTaGFkb3dSb290OjpjcmVhdGUoZG9j
dW1lbnQoKSwgU2hhZG93Um9vdDo6QXV0aG9yU2hhZG93Um9vdCkpOwogICAgICAgICByZXR1cm4g
c2hhZG93Um9vdCgpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkocmV2aXNp
b24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTcsNyArOTcsNyBAQCBQ
b3NpdGlvbjo6UG9zaXRpb24oUGFzc1JlZlB0cjxOb2RlPiBhbmNoCiAgICAgLCBtX2lzTGVnYWN5
RWRpdGluZ1Bvc2l0aW9uKHRydWUpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgQVNT
RVJUKChtX2FuY2hvck5vZGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93RE9NRW5h
YmxlZCgpKSB8fCAhbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93Um9vdCgp
IHx8IG1fYW5jaG9yTm9kZSA9PSBjb250YWluZXJOb2RlKCkpOworICAgIEFTU0VSVCgobV9hbmNo
b3JOb2RlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93
RE9NRW5hYmxlZCgpKSB8fCAhbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93
Um9vdCgpIHx8IG1fYW5jaG9yTm9kZSA9PSBjb250YWluZXJOb2RlKCkpOwogI2Vsc2UKICAgICBB
U1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSB8fCBt
X2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKICNlbmRpZgpAQCAtMTExLDcgKzExMSw3
IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2gKICAgICAsIG1faXNM
ZWdhY3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0g
ICAgQVNTRVJUKChtX2FuY2hvck5vZGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhZG93
RE9NRW5hYmxlZCgpKSB8fCAhbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlzU2hhZG93
Um9vdCgpIHx8IG1fYW5jaG9yTm9kZSA9PSBjb250YWluZXJOb2RlKCkpOworICAgIEFTU0VSVCgo
bV9hbmNob3JOb2RlICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
c2hhZG93RE9NRW5hYmxlZCgpKSB8fCAhbV9hbmNob3JOb2RlIHx8ICFtX2FuY2hvck5vZGUtPmlz
U2hhZG93Um9vdCgpIHx8IG1fYW5jaG9yTm9kZSA9PSBjb250YWluZXJOb2RlKCkpOwogI2Vsc2UK
ICAgICBBU1NFUlQoIW1fYW5jaG9yTm9kZSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3Qo
KSB8fCBtX2FuY2hvck5vZGUgPT0gY29udGFpbmVyTm9kZSgpKTsKICNlbmRpZgpAQCAtMTMwLDcg
KzEzMCw3IEBAIFBvc2l0aW9uOjpQb3NpdGlvbihQYXNzUmVmUHRyPE5vZGU+IGFuY2gKICAgICAs
IG1faXNMZWdhY3lFZGl0aW5nUG9zaXRpb24oZmFsc2UpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCi0gICAgQVNTRVJUKChtX2FuY2hvck5vZGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhZG93RE9NRW5hYmxlZCgpKQorICAgIEFTU0VSVCgobV9hbmNob3JOb2RlICYmIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2hhZG93RE9NRW5hYmxlZCgpKQogICAg
ICAgICAgICB8fCAhbV9hbmNob3JOb2RlIHx8ICFlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNo
b3JOb2RlLmdldCgpKSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CiAjZWxzZQog
ICAgIEFTU0VSVCghbV9hbmNob3JOb2RlIHx8ICFlZGl0aW5nSWdub3Jlc0NvbnRlbnQobV9hbmNo
b3JOb2RlLmdldCgpKSB8fCAhbV9hbmNob3JOb2RlLT5pc1NoYWRvd1Jvb3QoKSk7CkBAIC04NzUs
NyArODc1LDcgQEAgQ29udGFpbmVyTm9kZSogUG9zaXRpb246OmZpbmRQYXJlbnQoY29ucwogICAg
IC8vIEZJWE1FOiBTZWUgaHR0cDovL3dlYi51Zy84MjY5NwogCiAjaWYgRU5BQkxFKFNIQURPV19E
T00pCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkK
KyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zaGFkb3dE
T01FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBub2RlLT5wYXJlbnROb2RlKCk7CiAjZW5kaWYK
IApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyAr
MzIyLDcgQEAgRE9NU2VsZWN0aW9uKiBUcmVlU2NvcGU6OmdldFNlbGVjdGlvbigpCiAgICAgLy8g
YXMgYSBjb250YWluZXIuIEl0IGlzIG5vdyBlbmFibGVkIG9ubHkgaWYgcnVudGltZSBTaGFkb3cg
RE9NIGZlYXR1cmUgaXMgZW5hYmxlZC4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTgyNjk3CiAjaWYgRU5BQkxFKFNIQURPV19ET00pCi0gICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkgeworICAgIGlmIChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQo
KSkgewogICAgICAgICBtX3NlbGVjdGlvbiA9IERPTVNlbGVjdGlvbjo6Y3JlYXRlKHRoaXMpOwog
ICAgICAgICByZXR1cm4gbV9zZWxlY3Rpb24uZ2V0KCk7CiAgICAgfQpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L21ha2VfbmFtZXMucGwJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9t
YWtlX25hbWVzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC00MTAsNyArNDEwLDcgQEAgRU5ECiAgICAg
bXkgJHJ1bnRpbWVDb25kaXRpb25hbCA9ICRlbmFibGVkVGFnc3skdGFnTmFtZX17cnVudGltZUNv
bmRpdGlvbmFsfTsKICAgICBpZiAoJHJ1bnRpbWVDb25kaXRpb25hbCkgewogICAgICAgICBwcmlu
dCBGIDw8RU5ECi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoke3J1bnRpbWVDb25k
aXRpb25hbH1FbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLiR7cnVudGltZUNvbmRpdGlvbmFsfUVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIDA7CiBFTkQKIDsKQEAgLTEwOTYsNyArMTA5Niw3IEBAIEVORAogICAgICAgICAgICAgcHJp
bnQgRiA8PEVORAogc3RhdGljIEpTRE9NV3JhcHBlciogY3JlYXRlJHtKU0ludGVyZmFjZU5hbWV9
V3JhcHBlcihFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFBhc3NSZWZQdHI8JHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQ+IGVsZW1lbnQpCiB7Ci0g
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjoke3J1bnRpbWVDb25kaXRpb25hbH1FbmFi
bGVkKCkpIHsKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuJHtydW50aW1lQ29uZGl0aW9uYWx9RW5hYmxlZCgpKSB7CiAgICAgICAgIEFTU0VSVCghZWxl
bWVudCB8fCBlbGVtZW50LT5pcyRwYXJhbWV0ZXJze2ZhbGxiYWNrSW50ZXJmYWNlTmFtZX0oKSk7
CiAgICAgICAgIHJldHVybiBDUkVBVEVfRE9NX1dSQVBQRVIoZXhlYywgZ2xvYmFsT2JqZWN0LCAk
cGFyYW1ldGVyc3tmYWxsYmFja0pTSW50ZXJmYWNlTmFtZX0sIGVsZW1lbnQuZ2V0KCkpOwogICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAkocmV2aXNp
b24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZp
c3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxl
ciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwg
MjAxMCwgMjAxMSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAg
ICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29w
eXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQogICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xNjQ2LDcg
KzE2NDYsNyBAQCBib29sIEhUTUxJbnB1dEVsZW1lbnQ6OmlzU3RlcHBhYmxlKCkgY29uCiBib29s
IEhUTUxJbnB1dEVsZW1lbnQ6OmlzU3BlZWNoRW5hYmxlZCgpIGNvbnN0CiB7CiAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBSQU5HRSwgRU1BSUwsIFVSTCwgQ09MT1IgYW5kIERBVEUvVElN
RSBpbnB1dCB0eXBlcy4KLSAgICByZXR1cm4gbV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RTcGVl
Y2hBdHRyaWJ1dGUoKSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzcGVlY2hJbnB1dEVuYWJs
ZWQoKSAmJiBoYXNBdHRyaWJ1dGUod2Via2l0c3BlZWNoQXR0cik7CisgICAgcmV0dXJuIG1faW5w
dXRUeXBlLT5zaG91bGRSZXNwZWN0U3BlZWNoQXR0cmlidXRlKCkgJiYgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zcGVlY2hJbnB1dEVuYWJsZWQoKSAmJiBoYXNBdHRy
aWJ1dGUod2Via2l0c3BlZWNoQXR0cik7CiB9CiAKICNlbmRpZgpAQCAtMTk1MCw3ICsxOTUwLDcg
QEAgYm9vbCBIVE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hvbwogICAgIHBhcmFtZXRl
cnMubWluaW11bSA9IG1pbmltdW0oKTsKICAgICBwYXJhbWV0ZXJzLm1heGltdW0gPSBtYXhpbXVt
KCk7CiAgICAgcGFyYW1ldGVycy5yZXF1aXJlZCA9IGlzUmVxdWlyZWQoKTsKLSAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFi
bGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKCkpCiAgICAgICAgIHBhcmFt
ZXRlcnMubG9jYWxlID0gZGVmYXVsdExhbmd1YWdlKCk7CiAgICAgZWxzZSB7CiAgICAgICAgIEF0
b21pY1N0cmluZyBjb21wdXRlZExvY2FsZSA9IGNvbXB1dGVJbmhlcml0ZWRMYW5ndWFnZSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NTY0MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzUsNyArNTM1LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpmaW5p
c2hQYXJzaW5nQ2hpbAogI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAg
IGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkK
KyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0
VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byB0cmFja0Rl
c2NlbmRhbnRzID0gZGVzY2VuZGFudHNPZlR5cGU8SFRNTFRyYWNrRWxlbWVudD4odGhpcyk7CkBA
IC02NjksNyArNjY5LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzY2hlZHVsZURlbGF5ZWRB
YwogICAgIH0KIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSAmJiAoYWN0aW9uVHlwZSAmIENv
bmZpZ3VyZVRleHRUcmFja3MpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKGFjdGlvblR5cGUgJiBD
b25maWd1cmVUZXh0VHJhY2tzKSkKICAgICAgICAgc2V0RmxhZ3MobV9wZW5kaW5nQWN0aW9uRmxh
Z3MsIENvbmZpZ3VyZVRleHRUcmFja3MpOwogI2VuZGlmCiAKQEAgLTcwNiw3ICs3MDYsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpCiAgICAgUmVmPEhUTUxNZWRp
YUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBsb2FkTmV4dFNvdXJjZUNoaWxkIG1heSBmaXJl
ICdiZWZvcmVsb2FkJywgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAK
ICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgJiYgKG1fcGVuZGluZ0FjdGlvbkZsYWdzICYgQ29u
ZmlndXJlVGV4dFRyYWNrcykpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSAmJiAobV9wZW5kaW5nQWN0aW9u
RmxhZ3MgJiBDb25maWd1cmVUZXh0VHJhY2tzKSkKICAgICAgICAgY29uZmlndXJlVGV4dFRyYWNr
cygpOwogI2VuZGlmCiAKQEAgLTcxOCw3ICs3MTgsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmxvYWRUaW1lckZpcmVkKFRpCiAgICAgfQogCiAjaWYgVVNFKFBMQVRGT1JNX1RFWFRfVFJBQ0tf
TUVOVSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0Vu
YWJsZWQoKSAmJiAobV9wZW5kaW5nQWN0aW9uRmxhZ3MgJiBUZXh0VHJhY2tDaGFuZ2VzTm90aWZp
Y2F0aW9uKSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMo
KS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpICYmIChtX3BlbmRpbmdBY3Rpb25GbGFncyAmIFRl
eHRUcmFja0NoYW5nZXNOb3RpZmljYXRpb24pKQogICAgICAgICBub3RpZnlNZWRpYVBsYXllck9m
VGV4dFRyYWNrQ2hhbmdlcygpOwogI2VuZGlmCiAKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnByZXBhcmVGb3JMb2FkKCkKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkuZW1wdGllZEV2ZW50KTsKICAgICAgICAgdXBkYXRlTWVkaWFDb250cm9sbGVy
KCk7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQotICAgICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICAgICAgaWYgKFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKICAgICAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoMCk7CiAjZW5kaWYKICAg
ICB9CkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkSW50ZXJu
YWwoKQogCiAgICAgLy8gSFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrc0FyZVJlYWR5IHdpbGwg
bmVlZCAiLi4uIHRoZSB0ZXh0IHRyYWNrcyB3aG9zZSBtb2RlIHdhcyBub3QgaW4gdGhlCiAgICAg
Ly8gZGlzYWJsZWQgc3RhdGUgd2hlbiB0aGUgZWxlbWVudCdzIHJlc291cmNlIHNlbGVjdGlvbiBh
bGdvcml0aG0gbGFzdCBzdGFydGVkIi4KLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgeworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKICAgICAg
ICAgbV90ZXh0VHJhY2tzV2hlblJlc291cmNlU2VsZWN0aW9uQmVnYW4uY2xlYXIoKTsKICAgICAg
ICAgaWYgKG1fdGV4dFRyYWNrcykgewogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fdGV4dFRyYWNrcy0+bGVuZ3RoKCk7ICsraSkgewpAQCAtMTgyMiw3ICsxODIyLDcgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRSZWFkeVN0YXRlKE1lZAogICAgIFJlYWR5U3RhdGUg
bmV3U3RhdGUgPSBzdGF0aWNfY2FzdDxSZWFkeVN0YXRlPihzdGF0ZSk7CiAKICNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCi0gICAgYm9vbCB0cmFja3NBcmVSZWFkeSA9ICFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHx8IHRleHRUcmFja3NBcmVSZWFkeSgp
OworICAgIGJvb2wgdHJhY2tzQXJlUmVhZHkgPSAhUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpIHx8IHRleHRUcmFja3NBcmVS
ZWFkeSgpOwogCiAgICAgaWYgKG5ld1N0YXRlID09IG9sZFN0YXRlICYmIG1fdHJhY2tzQXJlUmVh
ZHkgPT0gdHJhY2tzQXJlUmVhZHkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MjcsNyArMTkyNyw3
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2V0UmVhZHlTdGF0ZShNZWQKICAgICB1cGRhdGVQ
bGF5U3RhdGUoKTsKICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgdXBkYXRlQWN0aXZlVGV4
dFRyYWNrQ3VlcyhjdXJyZW50VGltZSgpKTsKICNlbmRpZgogfQpAQCAtMjgxMCw3ICsyODEwLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dyZXNzVAogICAgICAgICBtZWRp
YUNvbnRyb2xzKCktPnBsYXliYWNrUHJvZ3Jlc3NlZCgpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5h
YmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFj
a0N1ZXMoY3VycmVudFRpbWUoKSk7CiAjZW5kaWYKIH0KQEAgLTI4NjIsNyArMjg2Miw3IEBAIGRv
dWJsZSBIVE1MTWVkaWFFbGVtZW50OjpwZXJjZW50TG9hZGVkKCkKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjptZWRpYVBsYXllckRpZEFkZEF1ZGlvVHJhY2soUGFzc1JlZlB0cjxBdWRpb1RyYWNr
UHJpdmF0ZT4gcHJwVHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBhZGRBdWRpb1RyYWNrKEF1ZGlvVHJhY2s6OmNyZWF0ZSh0aGlzLCBwcnBU
cmFjaykpOwpAQCAtMjg3MCw3ICsyODcwLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckRpZEFkZAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRk
VGV4dFRyYWNrKFBhc3NSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZT4gcHJwVHJhY2spCiB7
Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxl
ZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8g
NC44LjEwLjEyLjIgU291cmNpbmcgaW4tYmFuZCB0ZXh0IHRyYWNrcwpAQCAtMjkwNSw3ICsyOTA1
LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckRpZEFkZAogCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyRGlkQWRkVmlkZW9UcmFjayhQYXNzUmVmUHRyPFZp
ZGVvVHJhY2tQcml2YXRlPiBwcnBUcmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGFkZFZpZGVvVHJhY2soVmlkZW9UcmFjazo6Y3JlYXRlKHRo
aXMsIHBycFRyYWNrKSk7CkBAIC0zMDEwLDcgKzMwMTAsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmNsb3NlQ2FwdGlvblRyYWNrCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9U
cmFjayhQYXNzUmVmUHRyPEF1ZGlvVHJhY2s+IHRyYWNrKQogewotICAgIGlmICghUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXVkaW9UcmFja3MoKS0+YXBwZW5kKHRyYWNr
KTsKQEAgLTMwMTgsNyArMzAxOCw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6YWRkQXVkaW9U
cmFjayhQYXMKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soUGFzc1JlZlB0
cjxUZXh0VHJhY2s+IHRyYWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgdGV4dFRyYWNrcygpLT5hcHBlbmQodHJhY2spOwpAQCAtMzAyOCw3ICsz
MDI4LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjphZGRUZXh0VHJhY2soUGFzcwogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soUGFzc1JlZlB0cjxWaWRlb1RyYWNrPiB0
cmFjaykKIHsKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAg
IHZpZGVvVHJhY2tzKCktPmFwcGVuZCh0cmFjayk7CkBAIC0zMDM2LDcgKzMwMzYsNyBAQCB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFZpZGVvVHJhY2soUGFzCiAKIHZvaWQgSFRNTE1lZGlhRWxl
bWVudDo6cmVtb3ZlQXVkaW9UcmFjayhBdWRpb1RyYWNrKiB0cmFjaykKIHsKLSAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fYXVkaW9UcmFja3MtPnJlbW92
ZSh0cmFjayk7CkBAIC0zMDQ0LDcgKzMwNDQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJl
bW92ZUF1ZGlvVHJhY2soCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNr
KFRleHRUcmFjayogdHJhY2spCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3
ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBUcmFja0Rpc3BsYXlVcGRhdGVTY29wZSBzY29wZSh0aGlzKTsKQEAgLTMw
NTksNyArMzA1OSw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlVGV4dFRyYWNrKFQK
IAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVWaWRlb1RyYWNrKFZpZGVvVHJhY2sqIHRy
YWNrKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV92aWRlb1RyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKQEAgLTMwODYsNyArMzA4Niw3IEBAIHZvaWQg
SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlQWxsSW5iYW5kVHIKIAogUGFzc1JlZlB0cjxUZXh0VHJh
Y2s+IEhUTUxNZWRpYUVsZW1lbnQ6OmFkZFRleHRUcmFjayhjb25zdCBTdHJpbmcmIGtpbmQsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFj
a0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICAvLyA0LjguMTAuMTIuNCBUZXh0IHRyYWNrIEFQSQpAQCAtMzEyMyw3ICszMTIzLDcgQEAgUGFz
c1JlZlB0cjxUZXh0VHJhY2s+IEhUTUxNZWRpYUVsZW1lbnQ6OgogCiBBdWRpb1RyYWNrTGlzdCog
SFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UcmFja3MoKQogewotICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKKyAgICBpZiAoIVJ1bnRpbWVF
bmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBpZiAoIW1fYXVkaW9UcmFja3MpCkBAIC0zMTM0
LDcgKzMxMzQsNyBAQCBBdWRpb1RyYWNrTGlzdCogSFRNTE1lZGlhRWxlbWVudDo6YXVkaW9UCiAK
IFRleHRUcmFja0xpc3QqIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja3MoKSAKIHsKLSAgICBp
ZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisg
ICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZp
ZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgaWYgKCFtX3RleHRU
cmFja3MpCkBAIC0zMTQ1LDcgKzMxNDUsNyBAQCBUZXh0VHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVt
ZW50Ojp0ZXh0VHJhCiAKIFZpZGVvVHJhY2tMaXN0KiBIVE1MTWVkaWFFbGVtZW50Ojp2aWRlb1Ry
YWNrcygpCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1Ry
YWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIGlmICghbV92aWRlb1RyYWNrcykKQEAgLTMxNTgsNyArMzE1OCw3IEBAIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6ZGlkQWRkVGV4dFRyYWNrKEgKIHsKICAgICBBU1NFUlQodHJhY2tFbGVtZW50
LT5oYXNUYWdOYW1lKHRyYWNrVGFnKSk7CiAKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIDQuOC4xMC4xMi4zIFNvdXJjaW5nIG91dC1vZi1iYW5kIHRl
eHQgdHJhY2tzCkBAIC0zMTg0LDcgKzMxODQsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRp
ZFJlbW92ZVRleHRUcmFjCiB7CiAgICAgQVNTRVJUKHRyYWNrRWxlbWVudC0+aGFzVGFnTmFtZSh0
cmFja1RhZykpOwogCi0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRl
b1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAK
ICNpZiAhTE9HX0RJU0FCTEVECkBAIC0zNjI2LDcgKzM2MjYsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoCiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVu
dDo6bWVkaWFQbGF5ZXJUaW1lQ2hhbmdlZCIpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQot
ICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtp
dFZpZGVvVHJhY2tFbmFibGVkKCkpCiAgICAgICAgIHVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMo
Y3VycmVudFRpbWUoKSk7CiAjZW5kaWYKIApAQCAtNDExNyw3ICs0MTE3LDcgQEAgdm9pZCBIVE1M
TWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZAogICAgIG1fcmVhZHlTdGF0ZSA9IEhBVkVf
Tk9USElORzsKICAgICB1cGRhdGVNZWRpYUNvbnRyb2xsZXIoKTsKICNpZiBFTkFCTEUoVklERU9f
VFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tF
bmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkud2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkKICAgICAgICAgdXBkYXRlQWN0aXZlVGV4dFRy
YWNrQ3VlcygwKTsKICNlbmRpZgogfQpAQCAtNDQ4Myw3ICs0NDgzLDcgQEAgYm9vbCBIVE1MTWVk
aWFFbGVtZW50OjpoYXNDbG9zZWRDYXB0aW9ucwogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lm
IEVOQUJMRShWSURFT19UUkFDSykKLSAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6Ondl
YmtpdFZpZGVvVHJhY2tFbmFibGVkKCkgfHwgIW1fdGV4dFRyYWNrcykKKyAgICBpZiAoIVJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkud2Via2l0VmlkZW9UcmFja0VuYWJs
ZWQoKSB8fCAhbV90ZXh0VHJhY2tzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90ZXh0VHJhY2tzLT5sZW5ndGgoKTsgKytpKSB7CkBAIC00
NTI3LDcgKzQ1MjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnNldENsb3NlZENhcHRpb25z
CiAgICAgbV9wbGF5ZXItPnNldENsb3NlZENhcHRpb25zVmlzaWJsZShjbG9zZWRDYXB0aW9uVmlz
aWJsZSk7CiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCi0gICAgaWYgKFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKKyAgICBpZiAoUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgp
KSB7CiAgICAgICAgIG1hcmtDYXB0aW9uQW5kU3VidGl0bGVUcmFja3NBc1VuY29uZmlndXJlZChJ
bW1lZGlhdGVseSk7CiAgICAgICAgIHVwZGF0ZVRleHRUcmFja0Rpc3BsYXkoKTsKICAgICB9CkBA
IC00NzI3LDcgKzQ3MjcsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbmZpZ3VyZVRleHRU
cmFjCiAKICAgICBtZWRpYUNvbnRyb2xzKCktPmNoYW5nZWRDbG9zZWRDYXB0aW9uc1Zpc2liaWxp
dHkoKTsKICAgICAKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0VmlkZW9U
cmFja0VuYWJsZWQoKSkgeworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpIHsKICAgICAgICAgdXBkYXRlVGV4
dFRyYWNrRGlzcGxheSgpOwogICAgICAgICB1cGRhdGVBY3RpdmVUZXh0VHJhY2tDdWVzKGN1cnJl
bnRUaW1lKCkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIEhUTUxT
dHlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvCiAgICAgaWYgKG5hbWUgPT0gdGl0bGVBdHRy
ICYmIHNoZWV0KCkpCiAgICAgICAgIHNoZWV0KCktPnNldFRpdGxlKHZhbHVlKTsKICNpZiBFTkFC
TEUoU1RZTEVfU0NPUEVEKQotICAgIGVsc2UgaWYgKG5hbWUgPT0gc2NvcGVkQXR0ciAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNjb3BlZEVuYWJsZWQoKSkKKyAgICBlbHNlIGlmIChu
YW1lID09IHNjb3BlZEF0dHIgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zdHlsZVNjb3BlZEVuYWJsZWQoKSkKICAgICAgICAgc2NvcGVkQXR0cmlidXRlQ2hhbmdl
ZCghdmFsdWUuaXNOdWxsKCkpOwogI2VuZGlmCiAgICAgZWxzZSBpZiAobmFtZSA9PSBtZWRpYUF0
dHIpIHsKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmZpbmlzaFBh
cnNpbmdDaGlsCiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKIHZvaWQgSFRNTFN0eWxlRWxlbWVu
dDo6c2NvcGVkQXR0cmlidXRlQ2hhbmdlZChib29sIHNjb3BlZCkKIHsKLSAgICBBU1NFUlQoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6c3R5bGVTY29wZWRFbmFibGVkKCkpOworICAgIEFTU0VSVChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnN0eWxlU2NvcGVkRW5hYmxl
ZCgpKTsKIAogICAgIGlmICghaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CkBAIC0xNTks
NyArMTU5LDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZWdpc3RlcldpdGhTY29waQogCiB2
b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnVucmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoQ29udGFpbmVy
Tm9kZSogc2NvcGUpCiB7Ci0gICAgQVNTRVJUKG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0
ZSAhPSBOb3RSZWdpc3RlcmVkIHx8ICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNjb3Bl
ZEVuYWJsZWQoKSk7CisgICAgQVNTRVJUKG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0ZSAh
PSBOb3RSZWdpc3RlcmVkIHx8ICFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJl
cygpLnN0eWxlU2NvcGVkRW5hYmxlZCgpKTsKICAgICBpZiAoIWlzUmVnaXN0ZXJlZEFzU2NvcGVk
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgSFRNTFN0eWxl
RWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY28KIAogYm9vbCBIVE1MU3R5bGVFbGVtZW50OjpzY29w
ZWQoKSBjb25zdAogewotICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNj
b3BlZEVuYWJsZWQoKSAmJiBmYXN0SGFzQXR0cmlidXRlKHNjb3BlZEF0dHIpOworICAgIHJldHVy
biBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnN0eWxlU2NvcGVkRW5h
YmxlZCgpICYmIGZhc3RIYXNBdHRyaWJ1dGUoc2NvcGVkQXR0cik7CiB9CiAKIHZvaWQgSFRNTFN0
eWxlRWxlbWVudDo6c2V0U2NvcGVkKGJvb2wgc2NvcGVkVmFsdWUpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTMgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTMs
NyArOTMsNyBAQCB2b2lkIEhUTUxUcmFja0VsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhCiAKIHZv
aWQgSFRNTFRyYWNrRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBpZiAoUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6d2Via2l0VmlkZW9UcmFja0VuYWJsZWQoKSkgeworICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJhY2tFbmFibGVk
KCkpIHsKICAgICAgICAgaWYgKG5hbWUgPT0gc3JjQXR0cikgewogICAgICAgICAgICAgaWYgKCF2
YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgc2NoZWR1bGVMb2FkKCk7CkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzY2hlZHVsZUxvYWQoKQogICAgIGlm
IChtX2xvYWRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIVJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OndlYmtpdFZpZGVvVHJhY2tFbmFibGVkKCkpCisgICAgaWYg
KCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYmtpdFZpZGVvVHJh
Y2tFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIDIuIElmIHRoZSB0ZXh0IHRy
YWNrJ3MgdGV4dCB0cmFjayBtb2RlIGlzIG5vdCBzZXQgdG8gb25lIG9mIGhpZGRlbiBvciBzaG93
aW5nLCBhYm9ydCB0aGVzZSBzdGVwcy4KQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEhUTUxUcmFj
a0VsZW1lbnQ6OmxvYWRUaW1lckZpcmVkKFRpCiAKIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6Y2Fu
TG9hZFVybChjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjp3ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQorICAgIGlmICghUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS53ZWJraXRWaWRlb1RyYWNrRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBIVE1MTWVkaWFFbGVtZW50KiBwYXJlbnQgPSBtZWRp
YUVsZW1lbnQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5jcHAJKHJldmlzaW9uIDE1
NjQwNCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMiw3ICsyLDcgQEAKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0
b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBr
ZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgICAgICAgICAgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAbnlwb3AuY29tKQogICogQ29weXJpZ2h0IChDKSAy
MDA3IFNhbXVlbCBXZWluaWcgKHNhbUB3ZWJraXQub3JnKQogICogQ29weXJpZ2h0IChDKSAyMDA5
LCAyMDEwLCAyMDExLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC05
OSwxNSArOTksMTUgQEAgc3RhdGljIE93blB0cjxJbnB1dFR5cGVGYWN0b3J5TWFwPiBjcmVhdAog
ICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpjb2xvcigpLCAmQ29sb3JJbnB1dFR5cGU6OmNy
ZWF0ZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFKQotICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlRW5hYmxlZCgpKQorICAgIGlmIChSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlucHV0VHlwZURhdGVFbmFibGVk
KCkpCiAgICAgICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpkYXRlKCksICZEYXRlSW5wdXRU
eXBlOjpjcmVhdGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfREFURVRJTUVfSU5D
T01QTEVURSkKLSAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlRGF0ZVRp
bWVFbmFibGVkKCkpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkuaW5wdXRUeXBlRGF0ZVRpbWVFbmFibGVkKCkpCiAgICAgICAgIG1hcC0+YWRkKElucHV0
VHlwZU5hbWVzOjpkYXRldGltZSgpLCAmRGF0ZVRpbWVJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjZW5k
aWYKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9EQVRFVElNRUxPQ0FMKQotICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVEYXRlVGltZUxvY2FsRW5hYmxlZCgpKQorICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlucHV0VHlwZURhdGVU
aW1lTG9jYWxFbmFibGVkKCkpCiAgICAgICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpkYXRl
dGltZWxvY2FsKCksICZEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAg
ICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmVtYWlsKCksICZFbWFpbElucHV0VHlwZTo6Y3Jl
YXRlKTsKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMgT3duUHRyPElucHV0VHlwZUZhY3RvcnlN
YXA+IGNyZWF0CiAgICAgbWFwLT5hZGQoSW5wdXRUeXBlTmFtZXM6OmhpZGRlbigpLCAmSGlkZGVu
SW5wdXRUeXBlOjpjcmVhdGUpOwogICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjppbWFnZSgp
LCAmSW1hZ2VJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfTU9OVEgp
Ci0gICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmlucHV0VHlwZU1vbnRoRW5hYmxlZCgp
KQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlucHV0
VHlwZU1vbnRoRW5hYmxlZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6bW9u
dGgoKSwgJk1vbnRoSW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAgICAgbWFwLT5hZGQoSW5w
dXRUeXBlTmFtZXM6Om51bWJlcigpLCAmTnVtYmVySW5wdXRUeXBlOjpjcmVhdGUpOwpAQCAtMTI3
LDEyICsxMjcsMTIgQEAgc3RhdGljIE93blB0cjxJbnB1dFR5cGVGYWN0b3J5TWFwPiBjcmVhdAog
ICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVzOjpzdWJtaXQoKSwgJlN1Ym1pdElucHV0VHlwZTo6
Y3JlYXRlKTsKICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dGVsZXBob25lKCksICZUZWxl
cGhvbmVJbnB1dFR5cGU6OmNyZWF0ZSk7CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfVElNRSkKLSAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6aW5wdXRUeXBlVGltZUVuYWJsZWQoKSkKKyAg
ICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5pbnB1dFR5cGVU
aW1lRW5hYmxlZCgpKQogICAgICAgICBtYXAtPmFkZChJbnB1dFR5cGVOYW1lczo6dGltZSgpLCAm
VGltZUlucHV0VHlwZTo6Y3JlYXRlKTsKICNlbmRpZgogICAgIG1hcC0+YWRkKElucHV0VHlwZU5h
bWVzOjp1cmwoKSwgJlVSTElucHV0VHlwZTo6Y3JlYXRlKTsKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9XRUVLKQotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjppbnB1dFR5cGVXZWVrRW5h
YmxlZCgpKQorICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmlucHV0VHlwZVdlZWtFbmFibGVkKCkpCiAgICAgICAgIG1hcC0+YWRkKElucHV0VHlwZU5hbWVz
Ojp3ZWVrKCksICZXZWVrSW5wdXRUeXBlOjpjcmVhdGUpOwogI2VuZGlmCiAgICAgLy8gTm8gbmVl
ZCB0byByZWdpc3RlciAidGV4dCIgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdCB0eXBlLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcAkocmV2
aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xp
Y3kuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTE5MDUsNyArMTkwNiw3IEBAIHZvaWQgQ29udGVudFNlY3VyaXR5
UG9saWN5OjpyZXBvcnRCbG9ja2UKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5OjpleHBlcmlt
ZW50YWxGZWF0dXJlc0VuYWJsZWQoKSBjb25zdAogewogI2lmIEVOQUJMRShDU1BfTkVYVCkKLSAg
ICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZXhwZXJpbWVudGFsQ29udGVudFNlY3Vy
aXR5UG9saWN5RmVhdHVyZXNFbmFibGVkKCk7CisgICAgcmV0dXJuIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuZXhwZXJpbWVudGFsQ29udGVudFNlY3VyaXR5UG9saWN5
RmVhdHVyZXNFbmFibGVkKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjI0LDEwICsx
NjI0LDEwIEBAIGJvb2wgRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEEKICAgICBl
bHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFs
bG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKICAgICAgICAgYWRkQmVmb3JlVW5sb2Fk
RXZlbnRMaXN0ZW5lcih0aGlzKTsKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQotICAg
IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlbW90aW9uRXZlbnQgJiYg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZGV2aWNlTW90aW9uRW5hYmxlZCgpKSB7CisgICAgZWxz
ZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5kZXZpY2Vtb3Rpb25FdmVudCAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRldmljZU1vdGlvbkVuYWJsZWQo
KSkgewogICAgICAgICBpZiAoRGV2aWNlTW90aW9uQ29udHJvbGxlciogY29udHJvbGxlciA9IERl
dmljZU1vdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSgpKSkKICAgICAgICAgICAgIGNvbnRyb2xs
ZXItPmFkZERldmljZUV2ZW50TGlzdGVuZXIodGhpcyk7Ci0gICAgfSBlbHNlIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLmRldmljZW9yaWVudGF0aW9uRXZlbnQgJiYgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6ZGV2aWNlT3JpZW50YXRpb25FbmFibGVkKCkpIHsKKyAgICB9IGVsc2UgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZGV2aWNlb3JpZW50YXRpb25FdmVudCAmJiBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmRldmljZU9yaWVudGF0aW9uRW5h
YmxlZCgpKSB7CiAgICAgICAgIGlmIChEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSBEZXZpY2VPcmllbnRhdGlvbkNvbnRyb2xsZXI6OmZyb20ocGFnZSgpKSkKICAgICAg
ICAgICAgIGNvbnRyb2xsZXItPmFkZERldmljZUV2ZW50TGlzdGVuZXIodGhpcyk7CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMs
NyBAQAogICogICAgICAgICAgICAgICAgICAgICAxOTk5IExhcnMgS25vbGwgPGtub2xsQGtkZS5v
cmc+CiAgKiAgICAgICAgICAgICAgICAgICAgIDE5OTkgQW50dGkgS29pdmlzdG8gPGtvaXZpc3Rv
QGtkZS5vcmc+CiAgKiAgICAgICAgICAgICAgICAgICAgIDIwMDAgRGlyayBNdWVsbGVyIDxtdWVs
bGVyQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBHcmFoYW0gRGVubmlzIChncmFoYW0uZGVubmlz
QGdtYWlsLmNvbSkKICAqICAgICAgICAgICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChh
cEBueXBvcC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KQEAgLTI3NjYsNyArMjc2Niw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3Jt
UG9zdExheW91dFRhc2tzKCkKICAgICAgICAgZnJhbWUoKS5sb2FkZXIoKS5kaWRMYXlvdXQobWls
ZXN0b25lc0FjaGlldmVkKTsKIAogI2lmIEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQotICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKKyAgICBp
ZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50
c0VuYWJsZWQoKSkKICAgICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLT5mb250bG9hZGVyKCktPmRp
ZExheW91dCgpOwogI2VuZGlmCiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxTZXR0aW5ncy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY2LDE1ICs2
NiwxNSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6
OkJhY2t1cChTZXR0aW5ncyYgc2V0dGluZ3MpCi0gICAgOiBtX29yaWdpbmFsQ1NTRXhjbHVzaW9u
c0VuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzRXhjbHVzaW9uc0VuYWJsZWQoKSkK
LSAgICAsIG1fb3JpZ2luYWxDU1NTaGFwZXNFbmFibGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6
OmNzc1NoYXBlc0VuYWJsZWQoKSkKKyAgICA6IG1fb3JpZ2luYWxDU1NFeGNsdXNpb25zRW5hYmxl
ZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc0V4Y2x1c2lvbnNF
bmFibGVkKCkpCisgICAgLCBtX29yaWdpbmFsQ1NTU2hhcGVzRW5hYmxlZChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmNzc1NoYXBlc0VuYWJsZWQoKSkKICAgICAsIG1f
b3JpZ2luYWxDU1NWYXJpYWJsZXNFbmFibGVkKHNldHRpbmdzLmNzc1ZhcmlhYmxlc0VuYWJsZWQo
KSkKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICAsIG1fb3JpZ2luYWxTaGFkb3dET01FbmFi
bGVkKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYWRvd0RPTUVuYWJsZWQoKSkKLSAgICAsIG1f
b3JpZ2luYWxBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjphdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpKQorICAgICwg
bV9vcmlnaW5hbFNoYWRvd0RPTUVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zaGFkb3dET01FbmFibGVkKCkpCisgICAgLCBtX29yaWdpbmFsQXV0aG9yU2hh
ZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5hdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZCgpKQogI2VuZGlm
CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkKLSAgICAsIG1fb3JpZ2luYWxTdHlsZVNjb3BlZChS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzdHlsZVNjb3BlZEVuYWJsZWQoKSkKKyAgICAsIG1fb3Jp
Z2luYWxTdHlsZVNjb3BlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnN0eWxlU2NvcGVkRW5hYmxlZCgpKQogI2VuZGlmCiAgICAgLCBtX29yaWdpbmFsRWRpdGluZ0Jl
aGF2aW9yKHNldHRpbmdzLmVkaXRpbmdCZWhhdmlvclR5cGUoKSkKICNpZiBFTkFCTEUoVEVYVF9B
VVRPU0laSU5HKQpAQCAtODUsNyArODUsNyBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJh
Y2t1cChTZXR0aW5nCiAgICAgLCBtX29yaWdpbmFsTWVkaWFUeXBlT3ZlcnJpZGUoc2V0dGluZ3Mu
bWVkaWFUeXBlT3ZlcnJpZGUoKSkKICAgICAsIG1fb3JpZ2luYWxDYW52YXNVc2VzQWNjZWxlcmF0
ZWREcmF3aW5nKHNldHRpbmdzLmNhbnZhc1VzZXNBY2NlbGVyYXRlZERyYXdpbmcoKSkKICAgICAs
IG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQoc2V0dGluZ3MubW9ja1Njcm9sbGJhcnNF
bmFibGVkKCkpCi0gICAgLCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVk
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlF
bmFibGVkKCkpCisgICAgLCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVk
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkubGFuZ0F0dHJpYnV0ZUF3
YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoKSkKICAgICAsIG1faW1hZ2VzRW5hYmxlZChzZXR0aW5n
cy5hcmVJbWFnZXNFbmFibGVkKCkpCiAgICAgLCBtX21pbmltdW1UaW1lckludGVydmFsKHNldHRp
bmdzLm1pbkRPTVRpbWVySW50ZXJ2YWwoKSkKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0x
MDIsMTUgKzEwMiwxNSBAQCBJbnRlcm5hbFNldHRpbmdzOjpCYWNrdXA6OkJhY2t1cChTZXR0aW5n
CiAKIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpyZXN0b3JlVG8oU2V0dGluZ3MmIHNl
dHRpbmdzKQogewotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU0V4Y2x1c2lvbnNF
bmFibGVkKG1fb3JpZ2luYWxDU1NFeGNsdXNpb25zRW5hYmxlZCk7Ci0gICAgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2V0Q1NTU2hhcGVzRW5hYmxlZChtX29yaWdpbmFsQ1NTU2hhcGVzRW5hYmxl
ZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NF
eGNsdXNpb25zRW5hYmxlZChtX29yaWdpbmFsQ1NTRXhjbHVzaW9uc0VuYWJsZWQpOworICAgIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTU2hhcGVzRW5hYmxl
ZChtX29yaWdpbmFsQ1NTU2hhcGVzRW5hYmxlZCk7CiAgICAgc2V0dGluZ3Muc2V0Q1NTVmFyaWFi
bGVzRW5hYmxlZChtX29yaWdpbmFsQ1NTVmFyaWFibGVzRW5hYmxlZCk7CiAjaWYgRU5BQkxFKFNI
QURPV19ET00pCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93RE9NRW5hYmxl
ZChtX29yaWdpbmFsU2hhZG93RE9NRW5hYmxlZCk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQobV9vcmlnaW5hbEF1dGhv
clNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNoYWRvd0RPTUVuYWJsZWQobV9vcmlnaW5hbFNoYWRv
d0RPTUVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2V0QXV0aG9yU2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQobV9vcmlnaW5hbEF1dGhv
clNoYWRvd0RPTUZvckFueUVsZW1lbnRFbmFibGVkKTsKICNlbmRpZgogI2lmIEVOQUJMRShTVFlM
RV9TQ09QRUQpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U3R5bGVTY29wZWRFbmFi
bGVkKG1fb3JpZ2luYWxTdHlsZVNjb3BlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS5zZXRTdHlsZVNjb3BlZEVuYWJsZWQobV9vcmlnaW5hbFN0eWxlU2Nv
cGVkKTsKICNlbmRpZgogICAgIHNldHRpbmdzLnNldEVkaXRpbmdCZWhhdmlvclR5cGUobV9vcmln
aW5hbEVkaXRpbmdCZWhhdmlvcik7CiAjaWYgRU5BQkxFKFRFWFRfQVVUT1NJWklORykKQEAgLTEy
MSw3ICsxMjEsNyBAQCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvCiAg
ICAgc2V0dGluZ3Muc2V0TWVkaWFUeXBlT3ZlcnJpZGUobV9vcmlnaW5hbE1lZGlhVHlwZU92ZXJy
aWRlKTsKICAgICBzZXR0aW5ncy5zZXRDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKG1fb3Jp
Z2luYWxDYW52YXNVc2VzQWNjZWxlcmF0ZWREcmF3aW5nKTsKICAgICBzZXR0aW5ncy5zZXRNb2Nr
U2Nyb2xsYmFyc0VuYWJsZWQobV9vcmlnaW5hbE1vY2tTY3JvbGxiYXJzRW5hYmxlZCk7Ci0gICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xV
SUVuYWJsZWQobV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk7CisgICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRMYW5nQXR0cmlidXRl
QXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9s
VUlFbmFibGVkKTsKICAgICBzZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKG1faW1hZ2VzRW5hYmxl
ZCk7CiAgICAgc2V0dGluZ3Muc2V0TWluRE9NVGltZXJJbnRlcnZhbChtX21pbmltdW1UaW1lcklu
dGVydmFsKTsKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9p
ZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRTaGFkb3dET01FbmFibAogICAgIH0KIAogI2lmIEVOQUJM
RShTSEFET1dfRE9NKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFNoYWRvd0RPTUVu
YWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZWQpOwogI2Vsc2UKICAgICAvLyBFdmVuIFNI
QURPV19ET00gaXMgb2ZmLCBJbnRlcm5hbFNldHRpbmdzIGFsbG93cyBzZXRTaGFkb3dET01FbmFi
bGVkKGZhbHNlKSB0bwogICAgIC8vIGhhdmUgYnJvYWRlciB0ZXN0IGNvdmVyYWdlLiBCdXQgaXQg
Y2Fubm90IGJlIHNldFNoYWRvd0RPTUVuYWJsZWQodHJ1ZSkuCkBAIC0yMjcsNyArMjI3LDcgQEAg
dm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRTaGFkb3dET01FbmFibAogdm9pZCBJbnRlcm5hbFNl
dHRpbmdzOjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChib29sIGlzRW5h
YmxlZCkKIHsKICNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRBdXRob3JTaGFkb3dET01Gb3JBbnlFbGVtZW50RW5hYmxlZChpc0VuYWJsZWQpOwor
ICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0QXV0aG9yU2hh
ZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQoaXNFbmFibGVkKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGlzRW5hYmxlZCk7CiAjZW5kaWYKQEAgLTIzNiw3ICsyMzYsNyBAQCB2b2lkIEludGVy
bmFsU2V0dGluZ3M6OnNldEF1dGhvclNoYWRvd0RPCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNl
dFN0eWxlU2NvcGVkRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNUWUxFX1ND
T1BFRCkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTdHlsZVNjb3BlZEVuYWJsZWQo
ZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5z
ZXRTdHlsZVNjb3BlZEVuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShl
bmFibGVkKTsKICNlbmRpZgpAQCAtMzQ2LDEzICszNDYsMTMgQEAgdm9pZCBJbnRlcm5hbFNldHRp
bmdzOjpzZXRUZXh0QXV0b3NpemluZwogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRDU1NFeGNs
dXNpb25zRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFVO
VVNFRF9QQVJBTShlYyk7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTRXhjbHVz
aW9uc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zZXRDU1NFeGNsdXNpb25zRW5hYmxlZChlbmFibGVkKTsKIH0KIAogdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpzZXRDU1NTaGFwZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGVjKTsKLSAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRDU1NTaGFwZXNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTU2hhcGVzRW5hYmxlZChlbmFibGVk
KTsKIH0KIAogdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRDU1NWYXJpYWJsZXNFbmFibGVkKGJv
b2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC00NDksNyArNDQ5LDcgQEAgdm9pZCBJ
bnRlcm5hbFNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbgogCiB2b2lkIEludGVybmFsU2V0dGlu
Z3M6OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKIHsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRMYW5nQXR0cmlidXRlQXdhcmVG
b3JtQ29udHJvbFVJRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNldExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFi
bGVkKGVuYWJsZWQpOwogfQogCiB2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldEltYWdlc0VuYWJs
ZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIyIEBACisyMDEzLTA5LTI1ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBw
bGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBT
aW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjE4ODMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JUZXN0
UnVubmVyKTogVXNlCisgICAgICAgIFNpbmdsZXRvbiBhY2Nlc3Nvci4KKyAgICAgICAgKFdlYktp
dDo6SW5qZWN0ZWRCdW5kbGU6OnNldFNoYWRvd0RPTUVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZTo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZTo6c2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKToKKyAgICAgICAgKFdl
YktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL3F0
L1dlYlByb2Nlc3NRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OnBsYXRmb3Jt
SW5pdGlhbGl6ZVdlYlByb2Nlc3MpOiBEaXR0by4KKwogMjAxMy0wOS0yNSAgQWxsYW4gU2FuZGZl
bGQgSmVuc2VuICA8YWxsYW4uamVuc2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBi
dWlsZCB3aXRoIFF0IDUuMiBRdFBvc2l0aW9uIG1vZHVsZQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRs
ZS5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xOTEsMTIgKzE5
MSwxMiBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpvdmVycmlkZUJvb2xQcmVmZXJlCiAKICNpZiBF
TkFCTEUoQ1NTX1JFR0lPTlMpCiAgICAgaWYgKHByZWZlcmVuY2UgPT0gIldlYktpdENTU1JlZ2lv
bnNFbmFibGVkIikKLSAgICAgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0Q1NTUmVnaW9u
c0VuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgaWYgKHByZWZlcmVuY2UgPT0gIldlYktpdENT
U0NvbXBvc2l0aW5nRW5hYmxlZCIpCi0gICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNl
dENTU0NvbXBvc2l0aW5nRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoZW5hYmxl
ZCk7CiAjZW5kaWYKIAogICAgIC8vIE1hcCB0aGUgbmFtZXMgdXNlZCBpbiBMYXlvdXRUZXN0cyB3
aXRoIHRoZSBuYW1lcyB1c2VkIGluIFdlYkNvcmU6OlNldHRpbmdzIGFuZCBXZWJQcmVmZXJlbmNl
c1N0b3JlLgpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFNlcmlh
bExvYWRpbmdFbmEKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldFNoYWRvd0RPTUVuYWJsZWQoYm9v
bCBlbmFibGVkKQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQotICAgIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTaGFkb3dET01FbmFibGVkKGVuYWJsZWQp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CiAjZW5kaWYKQEAgLTY1NSw3ICs2
NTUsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRTaGFkb3dET01FbmFibGVkCiB2b2lkIElu
amVjdGVkQnVuZGxlOjpzZXRDU1NSZWdpb25zRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYg
RU5BQkxFKENTU19SRUdJT05TKQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1Jl
Z2lvbnNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtNjY0LDcgKzY2NCw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OnNldENTU1JlZ2lvbnNFbmFibGUKIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNl
dENTU0NvbXBvc2l0aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKENTU19D
T01QT1NJVElORykKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGlu
Z0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS5zZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGU6OnNldENTU0NvbXBvc2l0aW5nRW4KIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNl
dFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogI2lmIEVOQUJMRShJRlJB
TUVfU0VBTUxFU1MpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJh
bWVzRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShlbmFibGVkKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDkxLDggKzI0OTEsOCBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVByZWZlcmVuY2VzKGNv
bnN0IFdlCiAgICAgc2V0dGluZ3Muc2V0U2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKHN0b3Jl
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGlsZWRTY3JvbGxpbmdJbmRp
Y2F0b3JWaXNpYmxlS2V5KCkpKTsKICAgICBzZXR0aW5ncy5zZXRBZ2dyZXNzaXZlVGlsZVJldGVu
dGlvbkVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojph
Z2dyZXNzaXZlVGlsZVJldGVudGlvbkVuYWJsZWRLZXkoKSkpOwogICAgIHNldHRpbmdzLnNldENT
U0N1c3RvbUZpbHRlckVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVu
Y2VzS2V5Ojpjc3NDdXN0b21GaWx0ZXJFbmFibGVkS2V5KCkpKTsKLSAgICBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OmNzc1JlZ2lvbnNFbmFibGVkS2V5KCkpKTsKLSAgICBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZh
bHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDb21wb3NpdGluZ0VuYWJsZWRLZXkoKSkp
OworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTUmVn
aW9uc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpj
c3NSZWdpb25zRW5hYmxlZEtleSgpKSk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5zZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5Ojpjc3NDb21wb3NpdGluZ0VuYWJsZWRLZXkoKSkpOwog
ICAgIHNldHRpbmdzLnNldENTU0dyaWRMYXlvdXRFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZv
cktleShXZWJQcmVmZXJlbmNlc0tleTo6Y3NzR3JpZExheW91dEVuYWJsZWRLZXkoKSkpOwogICAg
IHNldHRpbmdzLnNldFJlZ2lvbkJhc2VkQ29sdW1uc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVl
Rm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpyZWdpb25CYXNlZENvbHVtbnNFbmFibGVkS2V5KCkp
KTsKICAgICBzZXR0aW5ncy5zZXRXZWJHTEVuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5Ojp3ZWJHTEVuYWJsZWRLZXkoKSkpOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvV2ViUHJvY2Vzc1F0LmNwcAkocmV2aXNpb24gMTU2NDA0
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9xdC9XZWJQcm9jZXNzUXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRp
YWxpemVXZWJQcgogICAgIH0KICNlbmRpZgogCi0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0U3BlZWNoSW5wdXRFbmFibGVkKGZhbHNlKTsKKyAgICBXZWJDb3JlOjpSdW50
aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNwZWVjaElucHV0RW5hYmxl
ZChmYWxzZSk7CiAKICAgICAvLyBXZSdsbCBvbmx5IGluc3RhbGwgdGhlIFF0IGJ1aWx0aW4gYnVu
ZGxlIGlmIHdlIGRvbid0IGhhdmUgb25lIGdpdmVuIGJ5IHRoZSBVSSBwcm9jZXNzLgogICAgIC8v
IEN1cnJlbnRseSBvbmx5IFdUUiBwcm92aWRlcyBpdHMgb3duIGJ1bmRsZS4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA5LTI0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFtXaW5kb3dzXSBSZWZhY3RvciBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3Iv
V2ViS2l0RXhwb3J0cy5kZWYuaW46CisgICAgICAgIEV4cG9zZSBzaW5nbGV0b24gYWNjZXNzb3Ig
Zm9yIERMTCBjbGllbnRzLgorCiAyMDEzLTA5LTI1ICBBbGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxh
bGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGJ1aWxkIHdpdGggUXQg
NS4yIFF0UG9zaXRpb24gbW9kdWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9q
L1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1dlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVyYXRvci9XZWJL
aXRFeHBvcnRzLmRlZi5pbgkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9XZWJL
aXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTIzNyw4ICsyMzcsNiBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdp
dGhQb2ludGVyKD9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3Jl
QEBRQUVYWFosID9kaXNjb25uZWN0RnJvbnRlbmRASW5zcGVjdG9yQ29udHJvbGxlckBXZWJDb3Jl
QEBRRUFBWFhaKQogI2VuZGlmCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pc0FjdGl2ZUlu
c2VydGlvblBvaW50QFdlYkNvcmVAQFlBX05QQlZOb2RlQDFAQFosID9pc0FjdGl2ZUluc2VydGlv
blBvaW50QFdlYkNvcmVAQFlBX05QRUJWTm9kZUAxQEBaKQotICAgICAgICA/aXNDU1NFeGNsdXNp
b25zRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEKLSAgICAgICAg
P2lzQ1NTU2hhcGVzRW5hYmxlZEBSdW50aW1lRW5hYmxlZEZlYXR1cmVzQFdlYkNvcmVAQDBfTkEK
ICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2lzUHJlbG9hZGVkQENhY2hlZFJlc291cmNlTG9h
ZGVyQFdlYkNvcmVAQFFCRV9OQUJWU3RyaW5nQFdURkBAQFosID9pc1ByZWxvYWRlZEBDYWNoZWRS
ZXNvdXJjZUxvYWRlckBXZWJDb3JlQEBRRUJBX05BRUJWU3RyaW5nQFdURkBAQFopCiAgICAgICAg
IHN5bWJvbFdpdGhQb2ludGVyKD9qc0FycmF5QFdlYkNvcmVAQFlBP0FWSlNWYWx1ZUBKU0NAQFBB
VkV4ZWNTdGF0ZUAzQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAVj8kUGFzc1JlZlB0ckBWRE9NU3Ry
aW5nTGlzdEBXZWJDb3JlQEBAV1RGQEBAWiwgP2pzQXJyYXlAV2ViQ29yZUBAWUE/QVZKU1ZhbHVl
QEpTQ0BAUEVBVkV4ZWNTdGF0ZUAzQFBFQVZKU0RPTUdsb2JhbE9iamVjdEAxQFY/JFBhc3NSZWZQ
dHJAVkRPTVN0cmluZ0xpc3RAV2ViQ29yZUBAQFdURkBAQFopCiAgICAgICAgIHN5bWJvbFdpdGhQ
b2ludGVyKD9sYXN0Q2hhbmdlV2FzVXNlckVkaXRASFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnRA
V2ViQ29yZUBAUUJFX05YWiwgP2xhc3RDaGFuZ2VXYXNVc2VyRWRpdEBIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudEBXZWJDb3JlQEBRRUJBX05YWikKQEAgLTI5OSw2ICsyOTcsNyBAQCBFWFBPUlRT
CiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9zZXRQc2V1ZG9ARWxlbWVudEBXZWJDb3JlQEBR
QUVYQUJWQXRvbWljU3RyaW5nQFdURkBAQFosID9zZXRQc2V1ZG9ARWxlbWVudEBXZWJDb3JlQEBR
RUFBWEFFQlZBdG9taWNTdHJpbmdAV1RGQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIo
P3NldE1lZGlhVHlwZU92ZXJyaWRlQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZTdHJpbmdAV1RG
QEBAWiwgP3NldE1lZGlhVHlwZU92ZXJyaWRlQFNldHRpbmdzQFdlYkNvcmVAQFFFQUFYQUVCVlN0
cmluZ0BXVEZAQEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/c2V0dGluZ3NARG9jdW1l
bnRAV2ViQ29yZUBAUUJFUEFWU2V0dGluZ3NAMkBYWiwgP3NldHRpbmdzQERvY3VtZW50QFdlYkNv
cmVAQFFFQkFQRUFWU2V0dGluZ3NAMkBYWikKKyAgICAgICAgP3NoYXJlZEZlYXR1cmVzQFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXNAV2ViQ29yZUBAU0FBQVYxMkBYWgogICAgICAgICBzeW1ib2xXaXRo
UG9pbnRlcig/c3Vic3RyaW5nQFN0cmluZ0BXVEZAQFFCRT9BVjEyQElJQFosID9zdWJzdHJpbmdA
U3RyaW5nQFdURkBAUUVCQT9BVjEyQElJQFopCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9z
dWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFCRUFCVlN0cmluZ0BXVEZA
QFhaLCA/c3VnZ2VzdGVkVmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRRUJBQUVCVlN0
cmluZ0BXVEZAQFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/dGFyZ2V0QEhpc3RvcnlJ
dGVtQFdlYkNvcmVAQFFCRUFCVlN0cmluZ0BXVEZAQFhaLCA/dGFyZ2V0QEhpc3RvcnlJdGVtQFdl
YkNvcmVAQFFFQkFBRUJWU3RyaW5nQFdURkBAWFopCkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wOS0yNSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWZhY3RvciBSdW50
aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgzLgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnQuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0OjpzZXRTdHlsZVNj
b3BlZEVuYWJsZWQpOiB1c2UKKyAgICAgICAgc2luZ2xldG9uIGFjY2Vzc29yLgorCiAyMDEzLTA5
LTIzICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQGJsYWNrYmVycnkuY29tPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBQb29yIHJlbmRlcmluZyBvcGVuaW5nIGEgR29vZ2xlIG1hcCBzaG9ydCBsaW5r
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydC5jcHAJKHJldmlzaW9uIDE1NjQwNCkK
KysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEyIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRHVtcFJl
bmRlclRyZWVTdXBwb3J0OjpzY2FsZVBhZ2VCeSgKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQog
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnQ6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChib29sIGVu
YWJsZWQpCiB7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U3R5bGVTY29wZWRFbmFi
bGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkuc2V0U3R5bGVTY29wZWRFbmFibGVkKGVuYWJsZWQpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA5LTI1ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpzZXRDU1NS
ZWdpb25zRW5hYmxlZCk6IFVzZSBzaW5nbGV0b24uCisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmw6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQpOiBEaXR0by4KKyAgICAgICAgKiBl
d2svZXdrX3NldHRpbmdzLmNwcDoKKyAgICAgICAgKGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2Vu
YWJsZV9nZXQpOiBEaXR0by4KKyAgICAgICAgKGV3a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJs
ZV9zZXQpOgorICAgICAgICAqIGV3ay9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdf
cHJpdl9uZXcpOiBEaXR0by4KKwogMjAxMy0wOS0yMCAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1h
cmlvLnByYWRhQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIERvIG5vdCBleHBvc2UgYXJp
YS1oZWxwIGluIEFUSyBiYXNlZCBwbGF0Zm9ybXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZs
LmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsy
LDcgQEAKICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMK
ICAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcwogICAgIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAgICBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC0zMjAsMTMgKzMyMSwxMyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEVmbDo6c2V0Q1NTUmVnCiB7CiAgICAgRFJUX1NVUFBSVF9QQUdFX0dFVF9PUl9SRVRVUk4o
ZXdrVmlldywgcGFnZSk7CiAKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
ZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKGVuYWJsZWQp
OwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0U2VhbWxlc3NJRnJhbWVz
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAg
ICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFi
bGVkKGVuYWJsZWQpOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJl
ZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVkKTsKICNlbHNlCiAg
ICAgVU5VU0VEX1BBUkFNKGVuYWJsZWQpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3NldHRpbmdzLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19zZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAg
ICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5c3RlbXMKICAg
ICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMCBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgICAgQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgICAgQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjU1
LDcgKzI1Niw3IEBAIHZvaWQgZXdrX3NldHRpbmdzX29iamVjdF9jYWNoZV9lbmFibGVfc2UKIEVp
bmFfQm9vbCBld2tfc2V0dGluZ3Nfc2hhZG93X2RvbV9lbmFibGVfZ2V0KCkKIHsKICNpZiBFTkFC
TEUoU0hBRE9XX0RPTSkKLSAgICByZXR1cm4gV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhZG93RE9NRW5hYmxlZCgpOworICAgIHJldHVybiBXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNoYWRvd0RPTUVuYWJsZWQoKTsKICNlbHNlCiAg
ICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCkBAIC0yNjUsNyArMjY2LDcgQEAgRWluYV9Cb29sIGV3
a19zZXR0aW5nc19zaGFkb3dfZG9tX2VuYWJsZQogewogI2lmIEVOQUJMRShTSEFET1dfRE9NKQog
ICAgIGVuYWJsZSA9ICEhZW5hYmxlOwotICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxlKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNoYWRvd0RPTUVuYWJsZWQoZW5hYmxl
KTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGVuYWJsZSk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIsNiAr
Miw3IEBACiAgICAgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTAgUHJvRlVTSU9OIGVtYmVkZGVkIHN5
c3RlbXMKICAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzCiAg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisgICAgQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIAogICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNzM2LDkgKzczNyw5IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tf
dmlld18KICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFNhbnNTZXJpZkZvbnRGYW1pbHkoInNh
bnMiKTsKICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFN0YW5kYXJkRm9udEZhbWlseSgic2Fu
cyIpOwogICAgIHByaXYtPnBhZ2VTZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
KGZhbHNlKTsKLSAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdp
b25zRW5hYmxlZCh0cnVlKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpz
aGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFibGVkKHRydWUpOwogI2lmIEVOQUJMRShJ
RlJBTUVfU0VBTUxFU1MpCi0gICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0
U2VhbWxlc3NJRnJhbWVzRW5hYmxlZCh0cnVlKTsKKyAgICBXZWJDb3JlOjpSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQodHJ1
ZSk7CiAjZW5kaWYKICAgICBwcml2LT5wYWdlU2V0dGluZ3MtPnNldFNjcmlwdEVuYWJsZWQodHJ1
ZSk7CiAgICAgcHJpdi0+cGFnZVNldHRpbmdzLT5zZXRQbHVnaW5zRW5hYmxlZCh0cnVlKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEzLTA5LTI1ICBC
cmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJlZmFjdG9yIFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBTaW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE4ODMuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpz
ZXRDU1NSZWdpb25zRW5hYmxlZCk6IFVzZSBzaW5nbGV0b24uCisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBvbGljeUZlYXR1
cmVzRW5hYmxlZCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFNlYW1s
ZXNzSUZyYW1lc0VuYWJsZWQpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpz
ZXRTaGFkb3dET01FbmFibGVkKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6
c2V0U3R5bGVTY29wZWRFbmFibGVkKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKTogRGl0dG8uCisK
IDIwMTMtMDktMjQgIExvcmVuem8gVGlsdmUgIDxsdGlsdmVAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBGaXggY29tcGlsYXRpb24gcHJvYmxlbXMgd2hlbiBzZXR0aW5nIEVOQUJMRV9EUkFH
X1NVUFBPUlQgPSBGQUxTRQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCShyZXZpc2lv
biAxNTY0MDQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQAogICogIENv
cHlyaWdodCAoQykgMjAxMCBKb29uZSBIdXIgPGpvb25lQGtsZHAub3JnPgogICogIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogIENvcHlyaWdo
dCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotICogIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTU3NSw3
ICs1NzUsNyBAQCB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0Q1NTR3JpCiAKIHZv
aWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRDU1NSZWdpb25zRW5hYmxlZChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBib29sIGVuYWJsZWQpCiB7Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5hYmxlZChlbmFibGVkKTsK
IH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENTU0N1c3RvbUZpbHRlckVu
YWJsZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgYm9vbCBlbmFibGVkKQpAQCAtNTg4LDI4ICs1
ODgsMjggQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldENTU0N1cwogdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBv
bGljeUZlYXR1cmVzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKENTUF9ORVhU
KQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1
cml0eVBvbGljeUZlYXR1cmVzRW5hYmxlZChlbmFibGVkKTsKKyAgICBSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldEV4cGVyaW1lbnRhbENvbnRlbnRTZWN1cml0eVBv
bGljeUZlYXR1cmVzRW5hYmxlZChlbmFibGVkKTsKICNlbmRpZgogfQogCiB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydEd0azo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChib29sIGVuYWJsZWQp
CiB7CiAjaWYgRU5BQkxFKElGUkFNRV9TRUFNTEVTUykKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1
cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKGVuYWJsZWQpOworICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChl
bmFibGVkKTsKICNlbmRpZgogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0
U2hhZG93RE9NRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5BQkxFKFNIQURPV19ET00p
Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2hhZG93RE9NRW5hYmxlZChlbmFibGVk
KTsKKyAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNoYWRv
d0RPTUVuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRHdGs6OnNldFN0eWxlU2NvcGVkRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAjaWYgRU5B
QkxFKFNUWUxFX1NDT1BFRCkKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTdHlsZVNj
b3BlZEVuYWJsZWQoZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5zZXRTdHlsZVNjb3BlZEVuYWJsZWQoZW5hYmxlZCk7CiAjZW5kaWYKIH0KIApJ
bmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNp
b24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMiw2ICsxMiw3IEBACiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5
IEJvYmJ5IFBvd2VycwogICogIENvcHlyaWdodCAoQykgMjAxMCBKb29uZSBIdXIgPGpvb25lQGts
ZHAub3JnPgogICogIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICogIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCkBAIC0zNTgzLDcgKzM1ODQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
dXBkYXRlX3NldHRpCiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgV2Vi
Q29yZTo6UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0TWVkaWFTdHJlYW1FbmFibGVkKHNldHRp
bmdzUHJpdmF0ZS0+ZW5hYmxlTWVkaWFTdHJlYW0pOworICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0TWVkaWFTdHJlYW1FbmFibGVkKHNldHRp
bmdzUHJpdmF0ZS0+ZW5hYmxlTWVkaWFTdHJlYW0pOwogI2VuZGlmCiAKICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTY0MDQp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMy0wOS0yNSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBSZWZhY3RvciBSdW50aW1lRW5hYmxlZEZlYXR1cmVzIGFzIGEgU2luZ2xldG9u
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxODgz
LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6
XSk6IFVzZSBzaW5nbGV0b24gYWNjZXNzb3IuCisgICAgICAgICgtW1dlYlZpZXcgX3NldERhc2hi
b2FyZEJlaGF2aW9yOnRvOl0pOiBEaXR0by4KKwogMjAxMy0wOS0yNCAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIEpTQyBkZWJ1ZyBob29rcyB0byBwYXNz
IGEgQ2FsbEZyYW1lKiBpbnN0ZWFkIG9mIGEgRGVidWdnZXJDYWxsRnJhbWUuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxNTY0MDQpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA2IERhdmlkIFNtaXRoIChjYXRmaXNo
Lm1hbkBnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKQEAg
LTE1MjEsMTMgKzE1MjEsMTMgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkOihXZWJQcmVm
ZXJlbgogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBzZXR0aW5ncy5zZXRDU1NDdXN0b21G
aWx0ZXJFbmFibGVkKFtwcmVmZXJlbmNlcyBjc3NDdXN0b21GaWx0ZXJFbmFibGVkXSk7CiAjZW5k
aWYKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRDU1NSZWdpb25zRW5hYmxlZChbcHJl
ZmVyZW5jZXMgY3NzUmVnaW9uc0VuYWJsZWRdKTsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzZXRDU1NDb21wb3NpdGluZ0VuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc0NvbXBvc2l0aW5nRW5h
YmxlZF0pOworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0
Q1NTUmVnaW9uc0VuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc1JlZ2lvbnNFbmFibGVkXSk7CisgICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NDb21wb3NpdGlu
Z0VuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc0NvbXBvc2l0aW5nRW5hYmxlZF0pOwogI2lmIEVOQUJM
RShXRUJfQVVESU8pCiAgICAgc2V0dGluZ3Muc2V0V2ViQXVkaW9FbmFibGVkKFtwcmVmZXJlbmNl
cyB3ZWJBdWRpb0VuYWJsZWRdKTsKICNlbmRpZgogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1Mp
Ci0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChb
cHJlZmVyZW5jZXMgc2VhbWxlc3NJRnJhbWVzRW5hYmxlZF0pOworICAgIFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChbcHJl
ZmVyZW5jZXMgc2VhbWxlc3NJRnJhbWVzRW5hYmxlZF0pOwogI2VuZGlmCiAgICAgc2V0dGluZ3Mu
c2V0Q1NTR3JpZExheW91dEVuYWJsZWQoW3ByZWZlcmVuY2VzIGNzc0dyaWRMYXlvdXRFbmFibGVk
XSk7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpAQCAtMjE4Niw3ICsyMTg2LDcgQEAgLSAo
dm9pZClfc2V0RGFzaGJvYXJkQmVoYXZpb3I6KFdlYkRhc2hibwogICAgICAgICAgICAgaWYgKF9w
cml2YXRlLT5wYWdlKQogICAgICAgICAgICAgICAgIF9wcml2YXRlLT5wYWdlLT5zZXR0aW5ncygp
LnNldFVzZXNEYXNoYm9hcmRCYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKGZsYWcpOwogI2lmIEVO
QUJMRShMRUdBQ1lfQ1NTX1ZFTkRPUl9QUkVGSVhFUykKLSAgICAgICAgICAgIFJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNldExlZ2FjeUNTU1ZlbmRvclByZWZpeGVzRW5hYmxlZChmbGFnKTsKKyAg
ICAgICAgICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0TGVn
YWN5Q1NTVmVuZG9yUHJlZml4ZXNFbmFibGVkKGZsYWcpOwogI2VuZGlmCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NjQwNCkKKysr
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTMtMDktMjUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVmYWN0b3IgUnVudGltZUVuYWJsZWRGZWF0dXJlcyBhcyBhIFNpbmdsZXRvbi4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMTg4My4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFwaS9xd2Vi
c2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkpOiBVc2Ug
c2luZ2xldG9uIGFjY2Vzc29yLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJU
cmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXRT
ZWFtbGVzc0lGcmFtZXNFbmFibGVkKTogRGl0dG8uCisKIDIwMTMtMDktMjUgIEFsbGFuIFNhbmRm
ZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXgg
YnVpbGQgd2l0aCBRdCA1LjIgUXRQb3NpdGlvbiBtb2R1bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYnNldHRpbmdzLmNwcAkocmV2aXNpb24gMTU2NDA0KQorKysgU291cmNlL1dlYktpdC9x
dC9BcGkvcXdlYnNldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8q
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE3MywxMCArMTc0LDEwIEBAIHZv
aWQgUVdlYlNldHRpbmdzUHJpdmF0ZTo6YXBwbHkoKQogCiAgICAgICAgIHZhbHVlID0gYXR0cmli
dXRlcy52YWx1ZShRV2ViU2V0dGluZ3M6OkNTU1JlZ2lvbnNFbmFibGVkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5n
czo6Q1NTUmVnaW9uc0VuYWJsZWQpKTsKLSAgICAgICAgV2ViQ29yZTo6UnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2V0Q1NTUmVnaW9uc0VuYWJsZWQodmFsdWUpOworICAgICAgICBXZWJDb3JlOjpS
dW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldENTU1JlZ2lvbnNFbmFi
bGVkKHZhbHVlKTsKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5n
czo6Q1NTQ29tcG9zaXRpbmdFbmFibGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYmFsLT5hdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NTQ29tcG9zaXRpbmdF
bmFibGVkKSk7Ci0gICAgICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldENT
U0NvbXBvc2l0aW5nRW5hYmxlZCh2YWx1ZSk7CisgICAgICAgIFdlYkNvcmU6OlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0Q1NTQ29tcG9zaXRpbmdFbmFibGVkKHZh
bHVlKTsKICAgICAgICAgdmFsdWUgPSBhdHRyaWJ1dGVzLnZhbHVlKFFXZWJTZXR0aW5nczo6Q1NT
R3JpZExheW91dEVuYWJsZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9i
YWwtPmF0dHJpYnV0ZXMudmFsdWUoUVdlYlNldHRpbmdzOjpDU1NHcmlkTGF5b3V0RW5hYmxlZCkp
OwogICAgICAgICBzZXR0aW5ncy0+c2V0Q1NTR3JpZExheW91dEVuYWJsZWQodmFsdWUpOwpJbmRl
eDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1w
UmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9uIDE1NjQwNCkKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogICAgIENvcHlyaWdodCAoQykgMjAxMCBSb2JlcnQgSG9n
YW4gPHJvYmVydEByb2JlcnRob2dhbi5uZXQ+CiAgICAgQ29weXJpZ2h0IChDKSAyMDA4LDIwMDks
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAgICBD
b3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotICAgIENv
cHlyaWdodCAoQykgMjAwNywgMjAxMiBBcHBsZSBJbmMuCisgICAgQ29weXJpZ2h0IChDKSAyMDA3
LCAyMDEyLCAyMDEzIEFwcGxlIEluYy4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtODYyLDcgKzg2
Miw3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OmdldFRyYWNrZWQKIHZvaWQgRHVt
cFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldFNlYW1sZXNzSUZyYW1lc0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogI2lmIEVOQUJMRShJRlJBTUVfU0VBTUxFU1MpCi0gICAgV2ViQ29yZTo6UnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2V0U2VhbWxlc3NJRnJhbWVzRW5hYmxlZChlbmFibGVkKTsKKyAg
ICBXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnNldFNl
YW1sZXNzSUZyYW1lc0VuYWJsZWQoZW5hYmxlZCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShl
bmFibGVkKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gMTU2NDA0KQor
KysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTMtMDktMjQgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisK
KyAgICAgICAgW1dpbmRvd3NdIFJlZmFjdG9yIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXMgYXMgYSBT
aW5nbGV0b24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjE4ODMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFu
Z2VkKTogVXNlIHNpbmdsZXRvbiBhY2Nlc3NvcgorCiAyMDEzLTA5LTI0ICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5kb3dzXSBVbnJldmlld2VkIGNy
YXNoIGZpeCBhZnRlciByMTU2MzIxLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9u
IDE1NjQwNCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00NzgzLDEyICs0NzgzLDEyIEBAIEhSRVNVTFQgV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5j
ZXNDaGFuZ2UKICAgICBociA9IHByZWZlcmVuY2VzLT5pc0NTU1JlZ2lvbnNFbmFibGVkKCZlbmFi
bGVkKTsKICAgICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwotICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldENTU1JlZ2lvbnNFbmFibGVkKCEhZW5hYmxlZCk7CisgICAg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRDU1NSZWdpb25zRW5h
YmxlZCghIWVuYWJsZWQpOwogCiAgICAgaHIgPSBwcmVmZXJlbmNlcy0+YXJlU2VhbWxlc3NJRnJh
bWVzRW5hYmxlZCgmZW5hYmxlZCk7CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVy
biBocjsKLSAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRTZWFtbGVzc0lGcmFtZXNFbmFi
bGVkKCEhZW5hYmxlZCk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5zZXRTZWFtbGVzc0lGcmFtZXNFbmFibGVkKCEhZW5hYmxlZCk7CiAKICAgICBociA9IHBy
ZWZlcmVuY2VzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJ
TEVEKGhyKSkK
</data>
<flag name="review"
          id="234869"
          type_id="1"
          status="+"
          setter="jer.noble"
    />
          </attachment>
      

    </bug>

</bugzilla>