<?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>93130</bug_id>
          
          <creation_ts>2012-08-03 09:21:18 -0700</creation_ts>
          <short_desc>Web Inspector: add memory instrumentation for CSSValue and its descendants</short_desc>
          <delta_ts>2012-08-06 07:10:36 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>92748</dependson>
          <blocked>87262</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>alph</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>koivisto</cc>
    
    <cc>loislo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>686822</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-03 09:21:18 -0700</bug_when>
    <thetext>It is the next step required for reporting memory footprint for CSSStyleSheet and related objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686836</commentid>
    <comment_count>1</comment_count>
      <attachid>156398</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-03 09:32:53 -0700</bug_when>
    <thetext>Created attachment 156398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686881</commentid>
    <comment_count>2</comment_count>
      <attachid>156398</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-03 10:04:49 -0700</bug_when>
    <thetext>Comment on attachment 156398
Patch

Attachment 156398 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13434081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686890</commentid>
    <comment_count>3</comment_count>
      <attachid>156398</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-03 10:14:43 -0700</bug_when>
    <thetext>Comment on attachment 156398
Patch

Attachment 156398 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13423861</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686936</commentid>
    <comment_count>4</comment_count>
      <attachid>156398</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-03 10:43:50 -0700</bug_when>
    <thetext>Comment on attachment 156398
Patch

Attachment 156398 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13426670</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687124</commentid>
    <comment_count>5</comment_count>
      <attachid>156398</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-03 14:05:03 -0700</bug_when>
    <thetext>Comment on attachment 156398
Patch

Attachment 156398 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13428711</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687881</commentid>
    <comment_count>6</comment_count>
      <attachid>156629</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-06 02:12:19 -0700</bug_when>
    <thetext>Created attachment 156629
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687897</commentid>
    <comment_count>7</comment_count>
      <attachid>156631</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-06 02:27:25 -0700</bug_when>
    <thetext>Created attachment 156631
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687925</commentid>
    <comment_count>8</comment_count>
      <attachid>156631</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-06 02:44:42 -0700</bug_when>
    <thetext>Comment on attachment 156631
Patch

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

&gt; Source/WebCore/css/CSSCrossfadeValue.cpp:147
&gt; +    MemoryClassInfo&lt;CSSCrossfadeValue&gt; info(memoryObjectInfo, this, MemoryInstrumentation::CSS);
&gt; +    info.addInstrumentedMember(m_fromValue);
&gt; +    info.addInstrumentedMember(m_toValue);
&gt; +    info.addInstrumentedMember(m_percentageValue);
&gt; +    // FIXME: add instrumentation for
&gt; +    // m_cachedFromImage
&gt; +    // m_cachedToImage
&gt; +    // m_generatedImage

looks like you missed to call CSSImageGeneratorValue::reportDescendantMemoryUsage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687942</commentid>
    <comment_count>9</comment_count>
      <attachid>156631</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-06 02:59:11 -0700</bug_when>
    <thetext>Comment on attachment 156631
Patch

Attachment 156631 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13438638</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687949</commentid>
    <comment_count>10</comment_count>
      <attachid>156643</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-06 03:05:33 -0700</bug_when>
    <thetext>Created attachment 156643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687950</commentid>
    <comment_count>11</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-06 03:06:14 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 156631 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156631&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSCrossfadeValue.cpp:147
&gt; &gt; +    MemoryClassInfo&lt;CSSCrossfadeValue&gt; info(memoryObjectInfo, this, MemoryInstrumentation::CSS);
&gt; &gt; +    info.addInstrumentedMember(m_fromValue);
&gt; &gt; +    info.addInstrumentedMember(m_toValue);
&gt; &gt; +    info.addInstrumentedMember(m_percentageValue);
&gt; &gt; +    // FIXME: add instrumentation for
&gt; &gt; +    // m_cachedFromImage
&gt; &gt; +    // m_cachedToImage
&gt; &gt; +    // m_generatedImage
&gt; 
&gt; looks like you missed to call CSSImageGeneratorValue::reportDescendantMemoryUsage

Added CSSImageGeneratorValue::reportBaseClassMemoryUsage call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687999</commentid>
    <comment_count>12</comment_count>
      <attachid>156643</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-06 04:30:13 -0700</bug_when>
    <thetext>Comment on attachment 156643
Patch

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

&gt; Source/WebCore/css/CSSCursorImageValue.cpp:139
&gt; +    MemoryClassInfo&lt;CSSCursorImageValue&gt; info(memoryObjectInfo, this, MemoryInstrumentation::CSS);
&gt; +#if ENABLE(SVG)

CSSImageValue::reportBaseClassMemoryUsage ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688003</commentid>
    <comment_count>13</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-06 04:37:29 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #8)
&gt; &gt; (From update of attachment 156631 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156631&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/CSSCrossfadeValue.cpp:147
&gt; &gt; &gt; +    MemoryClassInfo&lt;CSSCrossfadeValue&gt; info(memoryObjectInfo, this, MemoryInstrumentation::CSS);
&gt; &gt; &gt; +    info.addInstrumentedMember(m_fromValue);
&gt; &gt; &gt; +    info.addInstrumentedMember(m_toValue);
&gt; &gt; &gt; +    info.addInstrumentedMember(m_percentageValue);
&gt; &gt; &gt; +    // FIXME: add instrumentation for
&gt; &gt; &gt; +    // m_cachedFromImage
&gt; &gt; &gt; +    // m_cachedToImage
&gt; &gt; &gt; +    // m_generatedImage
&gt; &gt; 
&gt; &gt; looks like you missed to call CSSImageGeneratorValue::reportDescendantMemoryUsage
&gt; 
&gt; Added CSSImageGeneratorValue::reportBaseClassMemoryUsage call

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688010</commentid>
    <comment_count>14</comment_count>
      <attachid>156661</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-06 04:51:17 -0700</bug_when>
    <thetext>Created attachment 156661
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688077</commentid>
    <comment_count>15</comment_count>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-08-06 06:25:02 -0700</bug_when>
    <thetext>lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688103</commentid>
    <comment_count>16</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-08-06 07:10:36 -0700</bug_when>
    <thetext>Committed r124768: &lt;http://trac.webkit.org/changeset/124768&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156398</attachid>
            <date>2012-08-03 09:32:53 -0700</date>
            <delta_ts>2012-08-06 02:12:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93130-20120803203231.patch</filename>
            <type>text/plain</type>
            <size>69873</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NjEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZiZTA2ZGNhMTdkODM3
NDI5YzlkMzMyODAxZGYyYWQyYmIxYTY3YS4uY2E2YmMzOGNmZmUwNDBiZGVhYjBmOTI0ZmFmZGYz
NmM4MWM5NTYwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAxMi0wOC0wMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgbWVtb3J5IGluc3RydW1lbnRhdGlvbiBmb3IgQ1NTVmFsdWUgYW5kIGl0cyBkZXNj
ZW5kYW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBtZW1vcnkgZm9vdHByaW50IHJlcG9ydGluZyByb3V0aW5lIHRvIENTU1ZhbHVlIGFuZCBp
dHMgZGVzY2VuZGFudHMuCisKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NBc3BlY3RSYXRpb1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0FzcGVj
dFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJhdGlvVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5o
OgorICAgICAgICAoQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NhbGNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KENTU0NhbGNQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuaDoKKyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxj
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDYW52YXNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5oOgorICAgICAgICAo
Q1NTQ2FudmFzVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jvc3NmYWRlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmg6CisgICAgICAgIChDU1NGb250RmFjZVNyY1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKENTU0Z1bmN0aW9uVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0dyYWRpZW50Q29sb3JTdG9wOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01l
bW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxH
cmFkaWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNz
cy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NHcmFkaWVudENvbG9yU3RvcCk6Cisg
ICAgICAgIChDU1NHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKENTU0xpbmVhckdyYWRpZW50VmFs
dWUpOgorICAgICAgICAoQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaDoKKyAgICAgICAgKENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0lt
YWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuaDoKKyAgICAgICAgKEltYWdlV2l0aFNjYWxlKToKKyAg
ICAgICAgKENTU0ltYWdlU2V0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1
ZS5oOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0luaGVyaXRl
ZFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0luaGVyaXRlZFZhbHVlOjpyZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0NTU0luaGVyaXRlZFZhbHVlLmg6CisgICAgICAgIChDU1NJbmhlcml0ZWRWYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbml0
aWFsVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmg6CisgICAgICAgIChDU1NJbml0aWFs
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0xpbmVCb3hDb250YWluVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTTGluZUJveENv
bnRhaW5WYWx1ZS5oOgorICAgICAgICAoQ1NTTGluZUJveENvbnRhaW5WYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChDU1NQcmlt
aXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmg6Cisg
ICAgICAgIChDU1NSZWZsZWN0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBj
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoQ1NTTGluZWFyVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6CisgICAgICAgIChDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUp
OgorICAgICAgICAoQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVW5pY29kZVJh
bmdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKENTU1Vu
aWNvZGVSYW5nZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENsb25lQ1NTVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChUZXh0Q2xvbmVDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0NTU1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1ZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVl
TGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKENTU1ZhbHVlTGlzdCk6Cisg
ICAgICAgICogY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
cmlhYmxlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChDU1NW
YXJpYWJsZVZhbHVlKToKKyAgICAgICAgKiBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmVhdHVyZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUu
aDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgorICAgICAgICAqIGNzcy9Gb250VmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0ZvbnRWYWx1ZS5oOgor
ICAgICAgICAoRm9udFZhbHVlKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXhwOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogY3NzL1NoYWRvd1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1ZhbHVl
OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogY3NzL1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU0ZpbHRl
clZhbHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktp
dENTU1NWR0RvY3VtZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU1NWR0RvY3VtZW50VmFs
dWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1
ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU2hhZGVyVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAo
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUpOgorICAgICAgICAqIGRvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1l
bnRhdGlvbi5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5Q2xhc3NJbmZvOjphZGRTdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdDb2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5oOgor
ICAgICAgICAoU1ZHQ29sb3IpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYWludDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5oOgorICAgICAgICAoU1ZHUGFp
bnQpOgorCiAyMDEyLTA4LTAzICBHZW9yZ2UgU3RhaWtvcyAgPHN0YWlrb3NAd2Via2l0Lm9yZz4K
IAogICAgICAgICBbQmxhY2tCZXJyeV0gQWRkIGEgbnVsbCBjaGVjayBmb3IgbWVkaWEgaW1wbGVt
ZW50YXRpb24gdG8gZml4IGEgY3Jhc2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0
aW9WYWx1ZS5jcHAKaW5kZXggMThiMGRlZDY3MzZlZTE0NDlmODcwMWVlOTlhOTcxMDJlYjNjYjUz
Ny4uYjA3ZjdiYTY2OWNhZmEyZmQ4M2NjN2Y0ZjViY2ZmYzI1ZTExYzdmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0FzcGVjdFJhdGlvVmFsdWUuaCIKIAorI2lu
Y2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNCArNDMsOSBAQCBTdHJp
bmcgQ1NTQXNwZWN0UmF0aW9WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
IHJlc3VsdC50b1N0cmluZygpOwogfQogCit2b2lkIENTU0FzcGVjdFJhdGlvVmFsdWU6OnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NBc3BlY3RSYXRpb1ZhbHVlPiBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKaW5kZXggMmY2YjQy
NmQ4YzBhODNhOTZmOTVlYzkwYmIyYmNmNmFhY2EzZmMyNS4uNWNjMzM5MjQ5YmI1MTMxYWI2NjY1
ZDFlMjgyMGI0ZDhkNzgyZDQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Fz
cGVjdFJhdGlvVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9W
YWx1ZS5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBmbG9hdCBudW1lcmF0b3JWYWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbnVtZXJhdG9yVmFsdWU7IH0KICAgICBmbG9hdCBkZW5vbWlu
YXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9kZW5vbWluYXRvclZhbHVlOyB9CiAKKyAgICB2
b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgQ1NTQXNwZWN0UmF0aW9WYWx1ZShmbG9hdCBudW1lcmF0b3JWYWx1
ZSwgZmxvYXQgZGVub21pbmF0b3JWYWx1ZSkKICAgICAgICAgOiBDU1NWYWx1ZShBc3BlY3RSYXRp
b0NsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xp
Y2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
LmNwcAppbmRleCAwNGVmMmQzNjZjODBjMzJlNzY3Yzc2OTUwYzY1NjEwZDZjYjY1MmQwLi5mZjcz
YWNhZjg0OTE2ZTJkNzMxOTFiNmVhZjljOGFkNWY5N2YyZGMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5o
IgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZv
cm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAKQEAgLTQ5LDQgKzUwLDEwIEBAIFN0cmlu
ZyBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJl
dHVybiB0ZXh0OwogfQogCit2b2lkIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cisg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9zbGljZXMpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZh
bHVlLmgKaW5kZXggZDgyMzBmNDc0ZWJmOWY0YWQ0ODllNzdjZWEyMTY0ZWQ0ODdjZTY2Zi4uNDg4
YjRhNDFkMjBkZmFmMmM0MjJjNjE0MzgwNTNlMTQ1ZWY0NDZmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaApAQCAtNDUsNiArNDUsOCBAQCBwdWJs
aWM6CiAKICAgICBRdWFkKiBzbGljZXMoKSB7IHJldHVybiBtX3NsaWNlcyA/IG1fc2xpY2VzLT5n
ZXRRdWFkVmFsdWUoKSA6IDA7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAgIC8vIFRoZXNlIGZvdXIgdmFsdWVz
IGFyZSB1c2VkIHRvIG1ha2UgImN1dHMiIGluIHRoZSBib3JkZXIgaW1hZ2UuIFRoZXkgY2FuIGJl
IG51bWJlcnMKICAgICAvLyBvciBwZXJjZW50YWdlcy4KICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IG1fc2xpY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUu
Y3BwCmluZGV4IDU0MjQ3ZTAzNTlmYjQ3NDgxY2NhYjI3ODRmZTA0NDI4Y2NkN2M0ZjQuLmJjOGVk
ZDkzZjFhMzIwMzE2NDA4NjEwYTk2ZjYzZDJiZTUxYjFkNTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKIAogI2luY2x1ZGUg
IkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgIk1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKIAogI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KQEAgLTg2LDYgKzg3LDExIEBAIFN0cmluZyBDU1NDYWxjVmFsdWU6OmN1
c3RvbUNzc1RleHQoKSBjb25zdAogICAgICAgICByZXN1bHQuYXBwZW5kKCcpJyk7CiAgICAgcmV0
dXJuIHJlc3VsdC50b1N0cmluZygpOyAKIH0KKwordm9pZCBDU1NDYWxjVmFsdWU6OnJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NDYWxjVmFsdWU+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworfQogICAgIAogZG91
YmxlIENTU0NhbGNWYWx1ZTo6Y2xhbXBUb1Blcm1pdHRlZFJhbmdlKGRvdWJsZSB2YWx1ZSkgY29u
c3QKIHsKQEAgLTE3NSw2ICsxODEsMTIgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiAwOyAgICAgICAgCiAgICAgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0IE9WRVJSSURFCisg
ICAgeworICAgICAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ2FsY1ByaW1pdGl2ZVZhbHVlPiBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAg
ICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV92YWx1ZSk7CisgICAgfQogICAgIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBDU1NDYWxjUHJpbWl0aXZlVmFsdWUoQ1NTUHJpbWl0aXZl
VmFsdWUqIHZhbHVlLCBib29sIGlzSW50ZWdlcikKQEAgLTI2MCw2ICsyNzIsMTMgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gZXZhbHVhdGUobGVmdFZhbHVlLCByaWdodFZhbHVlKTsKICAgICB9
CiAKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIE1lbW9yeUNs
YXNzSW5mbzxDU1NDYWxjQmluYXJ5T3BlcmF0aW9uPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9sZWZ0U2lkZSk7CisgICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKG1fcmlnaHRTaWRlKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIFN0cmluZyBjdXN0b21Dc3NU
ZXh0KCkgY29uc3QKICAgICB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKaW5kZXggNTdhMjQ5Zjg5NjhjNTE2NDgy
ODZlZTc0MTA0NTcxN2VkZWU2Njc2Zi4uYjI1ZjdiMzFhNTAyMmMwOGI4ZmY2ZDVhNjI2ZDBjNDM3
NDRmNDkxNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCkBAIC02
NCw2ICs2NCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSBkb3VibGVWYWx1ZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBjb21wdXRlTGVuZ3RoUHgoUmVuZGVyU3R5bGUq
IGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIg
PSAxLjAsIGJvb2wgY29tcHV0aW5nRm9udFNpemUgPSBmYWxzZSkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0ID0gMDsKICAgICAK
ICAgICBDYWxjdWxhdGlvbkNhdGVnb3J5IGNhdGVnb3J5KCkgY29uc3QgeyByZXR1cm4gbV9jYXRl
Z29yeTsgfSAgICAKICAgICBib29sIGlzSW50ZWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnRl
Z2VyOyB9CkBAIC05NSw2ICs5Nyw4IEBAIHB1YmxpYzoKICAgICBkb3VibGUgY29tcHV0ZUxlbmd0
aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRv
dWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpIGNv
bnN0OwogICAgICAgICAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OworCisgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogICAgIAogcHJpdmF0ZTogICAgCiAgICAgQ1NTQ2FsY1ZhbHVlKFBhc3NSZWZQdHI8Q1NTQ2Fs
Y0V4cHJlc3Npb25Ob2RlPiBleHByZXNzaW9uLCBDYWxjdWxhdGlvblBlcm1pdHRlZFZhbHVlUmFu
Z2UgcmFuZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAppbmRleCA3ODNjZWVm
ODJiNTBmODg1ZTM3MDU5ZTc1ZGUxNTZkZWRmMjdkMTYxLi5jZTY5ZWY1ODhkZWNkNDgyMWQxMmI3
YjhmNGU3ZGEyODkwNGNiZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2Fu
dmFzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDU1NDYW52YXNWYWx1ZS5oIgogCiAjaW5jbHVk
ZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTIsNCAr
OTMsMTEgQEAgUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6OmltYWdlKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIC8KICAgICByZXR1cm4gZWx0LT5jb3BpZWRJ
bWFnZSgpOwogfQogCit2b2lkIENTU0NhbnZhc1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBN
ZW1vcnlDbGFzc0luZm88Q1NTQ2FudmFzVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhp
cywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkU3RyaW5nKG1fbmFt
ZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9lbGVtZW50KTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bnZhc1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaAppbmRleCAx
NTllNjE5NTY4YmE1MDM4YzU3MWRjMTQ1ZDg5ZWZkOTY1ZmU0ZDk0Li4xM2ZiNTg3NDFlNTcwZDVi
NGE1M2RmMzI1MmU0ZTNjODY2NjE0NGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FudmFzVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
aApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxv
YWRlciopIHsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU0NhbnZhc1ZhbHVlKGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKENhbnZhc0Ns
YXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKaW5kZXggNGZmMDhh
ZmNhNWZkNGExMDU1ZjVlZDE1ZmQxZThmYTkyNDA0YTZlMi4uMWI3NWMwYWYyYjliMDUxNDg4YjYy
YTJkMGUyNDdmM2UwOTc5NDRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFs
dWUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKICNpbmNsdWRlICJDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdl
QnVmZmVyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
UmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUg
IlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKQEAgLTEzNCw2ICsxMzUsMTggQEAgdm9pZCBDU1NDcm9z
c2ZhZGVWYWx1ZTo6bG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVz
b3VyY2VMb2FkZXIKICAgICBtX2Nyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXIuc2V0UmVhZHkodHJ1
ZSk7CiB9CiAKK3ZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1l
bW9yeUNsYXNzSW5mbzxDU1NDcm9zc2ZhZGVWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50
ZWRNZW1iZXIobV9mcm9tVmFsdWUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1f
dG9WYWx1ZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9wZXJjZW50YWdlVmFs
dWUpOworICAgIC8vIEZJWE1FOiBhZGQgaW5zdHJ1bWVudGF0aW9uIGZvcgorICAgIC8vIG1fY2Fj
aGVkRnJvbUltYWdlCisgICAgLy8gbV9jYWNoZWRUb0ltYWdlCisgICAgLy8gbV9nZW5lcmF0ZWRJ
bWFnZQorfQorCiBQYXNzUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6
ZS5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oCmluZGV4IGZi
NGMyZTBkNzhmZjBkZDFiNzJlMDdhYTJjYzdjODlkNDFjYzk1YzQuLmM0OGVlZmNiYTdjNDE2MDQw
NTg5MGE0N2NhYmI0NDk1NWY4MTJhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDcm9zc2ZhZGVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5oCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0UGVyY2VudGFn
ZShQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBwZXJjZW50YWdlVmFsdWUpIHsgbV9wZXJj
ZW50YWdlVmFsdWUgPSBwZXJjZW50YWdlVmFsdWU7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBDU1NDcm9zc2ZhZGVWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBmcm9tVmFsdWUsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHRvVmFsdWUpCiAgICAgICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZShDcm9zc2ZhZGVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJz
b3JJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVl
LmNwcAppbmRleCBmODUwNjg0OGZmNzQ1NGM0MDI3YzBmMmMxMWQxNGE4NGJiZTYyOGViLi5jYTU0
NGY1MmZlOTAzNjUwNjFkMGY3ZjA1MmJmNWNjMDEzNDU3NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAi
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJUcmVlU2Nv
cGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0
cmFzLmg+CkBAIC0xMzIsNCArMTMzLDEyIEBAIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6cmVt
b3ZlUmVmZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIH0KICNlbmRpZgogCit2
b2lkIENTU0N1cnNvckltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNz
SW5mbzxDU1NDdXJzb3JJbWFnZVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkSGFzaFNldChtX3JlZmVyZW5jZWRFbGVtZW50cyk7CisjZW5kaWYKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0N1cnNvckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZh
bHVlLmgKaW5kZXggY2IyNjkxOWU0NjgzZDYyNTU2N2U3ODc0OWE3YzgwZmZjOWNlMGVlNy4uZGM4
ZDFmZjRjYTVmNTg2NTI4ZTk3MDYyY2Q1ZTk4ZDY2ZjZiMTJlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqKTsKICNlbmRpZgogCisgICAg
dm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OworCiBwcml2YXRlOgogICAgIENTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IEludFBvaW50JiBob3RTcG90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRG
YWNlU3JjVmFsdWUuY3BwCmluZGV4IDc5YWUwZTc0MTI3NGQwMTRhMTI1MjdkM2Q3NDI2MzkzOTQ2
ZWY5YTUuLmU5NzA4MTVkNzg1NmZmNDJjOGNjMjRjOTI0NTNlNmM1YTVmNTExNjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIk1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJTVkdGb250RmFj
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtODgsNSArOTAsMTYgQEAgQ2FjaGVkRm9udCogQ1NTRm9udEZhY2VTcmNW
YWx1ZTo6Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIG1fY2FjaGVk
Rm9udC5nZXQoKTsKIH0KIAordm9pZCBDU1NGb250RmFjZVNyY1ZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
K3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTRm9udEZhY2VTcmNWYWx1ZT4gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5h
ZGRTdHJpbmcobV9yZXNvdXJjZSk7CisgICAgaW5mby5hZGRTdHJpbmcobV9mb3JtYXQpOworICAg
IC8vIEZJWE1FOiBhZGQgbV9jYWNoZWRGb250IHdoZW4gTWVtb3J5Q2FjaGUgaXMgaW5zdHJ1bWVu
dGVkLgorI2lmIEVOQUJMRShTVkdfRk9OVFMpCisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobV9zdmdGb250RmFjZUVsZW1lbnQpOworI2VuZGlmCit9CisKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgKaW5kZXggOTQ2MDdmZWQwYzBkYWY1Njg3YzUyYTI3
N2IyMDc3ZDEyNWEyMGJmZi4uMTA5NzZjOGRmNDUyMTQ0OTU0YzljMjkwZmM2NTk5ZWZhODE5ZjQw
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBAIC02OSw2ICs2
OSw4IEBAIHB1YmxpYzoKIAogICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9jdW1lbnQqKTsK
IAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NGb250RmFjZVNyY1ZhbHVlKGNvbnN0IFN0cmlu
ZyYgcmVzb3VyY2UsIGJvb2wgbG9jYWwpCiAgICAgICAgIDogQ1NTVmFsdWUoRm9udEZhY2VTcmND
bGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcAppbmRleCA1MjJhZDlm
ZDE2NGE3ZDVkNGFkY2NmYWVhYmY3NmM3YzhiMzY2MTVhLi43YTQyYzQ0MmNiYWU4ZGVjYjUxYjhm
NzI3MjVkZWU5YzFlYjA5NjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKICNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00OSw0ICs1MCwxMSBAQCBTdHJpbmcgQ1NTRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBDU1NGdW5jdGlvblZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTRnVuY3Rpb25WYWx1ZT4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cisg
ICAgaW5mby5hZGRTdHJpbmcobV9uYW1lKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJl
cihtX2FyZ3MpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRl
eCBhMzVhMWIxN2IzMTAyODk5YmViZmRkMWUxOGNjMTNiNGM3ZjZiN2JmLi42YjdmYmM2NWU0ZTRm
MWMwN2NhNTJlMTIzZmNmZGFlZDU3MTkzNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlv
blZhbHVlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNz
c1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDU1NGdW5j
dGlvblZhbHVlKENTU1BhcnNlckZ1bmN0aW9uKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFk
aWVudFZhbHVlLmNwcAppbmRleCAzZjE5NzlmZWU1MDA0ZDNlYmJkOGZkN2E1MWRiNzE3M2ZhZDFm
ZTAzLi4zMDc2ZDJhZjYyYTlhZjA5NTY5N2M5MmE1YjUyMGFiN2JjMGNlODkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiSW50U2l6ZUhhc2gu
aCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVu
ZGVyU3R5bGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgpAQCAtNDIsNiArNDMsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIENTU0dyYWRpZW50Q29sb3JTdG9wOjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbzxDU1NHcmFkaWVudENvbG9yU3RvcD4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRNZW1iZXIobV9wb3NpdGlvbik7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobV9jb2xvcik7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6Omlt
YWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAg
aWYgKHNpemUuaXNFbXB0eSgpKQpAQCAtNDUyLDYgKzQ2MCwxNyBAQCBib29sIENTU0dyYWRpZW50
VmFsdWU6OmlzQ2FjaGVhYmxlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBD
U1NHcmFkaWVudFZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NH
cmFkaWVudFZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6Q1NTKTsKKyAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZXBvcnRCYXNlQ2xh
c3NNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX2ZpcnN0WCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9maXJz
dFkpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2Vjb25kWCk7CisgICAgaW5m
by5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9zZWNvbmRZKTsKKyAgICBpbmZvLmFkZEluc3RydW1l
bnRlZFZlY3RvcihtX3N0b3BzKTsKK30KKwogU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6
OmN1c3RvbUNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQ7CkBAIC01OTQsNiAr
NjEzLDEzIEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNy
ZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCogcmVuZGVyCiAgICAgcmV0dXJuIGdyYWRpZW50LnJl
bGVhc2UoKTsKIH0KIAordm9pZCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
K3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NT
R3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9hbmdsZSk7Cit9CisKIFN0cmlu
ZyBDU1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICBT
dHJpbmcgcmVzdWx0OwpAQCAtODkxLDQgKzkxNywxNiBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBD
U1NSYWRpYWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRl
cgogICAgIHJldHVybiBncmFkaWVudC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1JhZGlh
bEdyYWRpZW50VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDU1MpOworICAgIENTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01l
bW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKG1fZmlyc3RSYWRpdXMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2Vj
b25kUmFkaXVzKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3NoYXBlKTsKKyAg
ICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3NpemluZ0JlaGF2aW9yKTsKKyAgICBpbmZv
LmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2VuZEhvcml6b250YWxTaXplKTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZE1lbWJlcihtX2VuZFZlcnRpY2FsU2l6ZSk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IDBjN2Vm
Nzc2NGIyMTBiMzM2NmZiMGMzOTBkYTQ0YjM0NjM0OWU4OTQuLjg4MmNjNjI4ZmZkNjU2ZmVhYTFh
NmQ0NzFmZWNiNjdmM2NmYmRhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
aApAQCAtNDUsNiArNDUsNyBAQCBzdHJ1Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewogICAgIFJl
ZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9jb2xvcjsKICAgICBDb2xvciBtX3Jlc29sdmVkQ29s
b3I7CiAgICAgYm9vbCBtX2NvbG9ySXNEZXJpdmVkRnJvbUVsZW1lbnQ7CisgICAgdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiB9OwogCiBjbGFzcyBDU1NH
cmFkaWVudFZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUgewpAQCAtMTA1LDYg
KzEwNiw4IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdDsKIAor
ICAgIHZvaWQgcmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0OworCiAgICAgLy8gUG9pbnRzLiBTb21lIG9mIHRoZXNlIG1heSBiZSBudWxsIGZvciBsaW5l
YXIgZ3JhZGllbnRzLgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9maXJzdFg7CiAg
ICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2ZpcnN0WTsKQEAgLTEzOSw2ICsxNDIsOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTGluZWFyR3JhZGllbnRW
YWx1ZSgqdGhpcykpOwogICAgIH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NMaW5lYXJH
cmFkaWVudFZhbHVlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlw
ZSA9IGZhbHNlKQogICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUoTGluZWFyR3JhZGllbnRDbGFz
cywgcmVwZWF0LCBkZXByZWNhdGVkVHlwZSkKQEAgLTE4MCw2ICsxODUsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBmb3IgYSBnaXZlbiBzaXplLgogICAgIFBhc3NSZWZQ
dHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUm
KTsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKENTU0dy
YWRpZW50UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZhbHNlKQogICAgICAg
ICA6IENTU0dyYWRpZW50VmFsdWUoUmFkaWFsR3JhZGllbnRDbGFzcywgcmVwZWF0LCBkZXByZWNh
dGVkVHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNw
cAppbmRleCA5YmU0NDZiZDBmYjg1YjA2NGQ2OWYxODYzMjY5OWEwMzlhMGFjMWQ2Li5jMmFkNTAx
ZjNjZjBkNTVhYjE1NGI2MzAxYzk0MTFkMWMwOGRkZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ1NTQ3Jvc3NmYWRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IApAQCAtMTA4LDYgKzEwOSwxNCBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnB1dElt
YWdlKGNvbnN0IEludFNpemUmIHNpemUsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYQogICAgIG1faW1h
Z2VzLmFkZChzaXplLCBpbWFnZSk7CiB9CiAKK3ZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6
cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNT
Uyk7CisgICAgaW5mby5hZGRIYXNoQ291bnRlZFNldChtX3NpemVzKTsKKyAgICBpbmZvLmFkZEhh
c2hNYXAobV9jbGllbnRzKTsKKyAgICBpbmZvLmFkZEhhc2hNYXAobV9pbWFnZXMpOyAvLyBGSVhN
RTogaW5zdHJ1bWVudCBJbWFnZQorfQorCiBQYXNzUmVmUHRyPEltYWdlPiBDU1NJbWFnZUdlbmVy
YXRvclZhbHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBz
aXplKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCmluZGV4IGIzZDg0ZWFiMjgzZjEyNGE0MjMxNDBjYjQ1
MmQ1NDY4MGE4MTM5YmIuLmNkZjQwNWExY2MwYjM5MDgyNjk2YzU3ZjhmN2EyMjA2MDA3OTFkOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaApAQCAtNzMs
NiArNzMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwdXRJbWFnZShjb25zdCBJbnRTaXplJiwg
UGFzc1JlZlB0cjxJbWFnZT4pOwogICAgIGNvbnN0IFJlbmRlck9iamVjdFNpemVDb3VudE1hcCYg
Y2xpZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50czsgfQogCisgICAgdm9pZCByZXBvcnRC
YXNlQ2xhc3NNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKICAgICBIYXNo
Q291bnRlZFNldDxJbnRTaXplPiBtX3NpemVzOyAvLyBBIGNvdW50IG9mIGhvdyBtYW55IHRpbWVz
IGEgZ2l2ZW4gaW1hZ2Ugc2l6ZSBpcyBpbiB1c2UuCiAgICAgUmVuZGVyT2JqZWN0U2l6ZUNvdW50
TWFwIG1fY2xpZW50czsgLy8gQSBtYXAgZnJvbSBSZW5kZXJPYmplY3RzICh3aXRoIGVudHJ5IGNv
dW50KSB0byBpbWFnZSBzaXplcy4KICAgICBIYXNoTWFwPEludFNpemUsIFJlZlB0cjxJbWFnZT4g
PiBtX2ltYWdlczsgLy8gQSBjYWNoZSBvZiBJbWFnZSBvYmplY3RzIGJ5IGltYWdlIHNpemUuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggMGY0OGQwMTBhYzY5ODNl
OWY2YTA3YmI5YmQyNTNlZTBiOGY3MjdlNy4uNDM5NTMyZjk4NDVkN2E5OGE3ZTgxMWY4NDMxZWM2
ZWM0Mjc0ZWZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAt
MzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAi
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJT
dHlsZUNhY2hlZEltYWdlU2V0LmgiCiAjaW5jbHVkZSAiU3R5bGVQZW5kaW5nSW1hZ2UuaCIKQEAg
LTE1Miw2ICsxNTMsMTkgQEAgUGFzc1JlZlB0cjxDU1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNl
dFZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENT
U0ltYWdlU2V0VmFsdWUoKnRoaXMpKTsKIH0KIAordm9pZCBDU1NJbWFnZVNldFZhbHVlOjpyZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTSW1hZ2VTZXRWYWx1ZT4gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAg
Q1NTVmFsdWVMaXN0OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRWZWN0b3IobV9pbWFnZXNJblNldCk7Cit9CisK
K3ZvaWQgQ1NTSW1hZ2VTZXRWYWx1ZTo6SW1hZ2VXaXRoU2NhbGU6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5
Q2xhc3NJbmZvPENTU0ltYWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxlPiBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFk
ZFN0cmluZyhpbWFnZVVSTCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShDU1NfSU1BR0VfU0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVl
LmgKaW5kZXggNDA0ZDNmOWVlZDBlZjhjN2E3ZTU2OGY0YWEyNTc3YTZkZTQyNjNiOS4uMzA4Y2Qz
ZjY1MTIzMjllYjdmOTMxODkwMWViMjY3OWQyNDQzYzA3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VTZXRWYWx1ZS5oCkBAIC01OCwxMCArNTgsMTMgQEAgcHVibGljOgogICAgIHN0cnVjdCBJ
bWFnZVdpdGhTY2FsZSB7CiAgICAgICAgIFN0cmluZyBpbWFnZVVSTDsKICAgICAgICAgZmxvYXQg
c2NhbGVGYWN0b3I7CisgICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyopIGNvbnN0OwogICAgIH07CiAKICAgICBQYXNzUmVmUHRyPENTU0ltYWdlU2V0VmFsdWU+
IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEltYWdl
V2l0aFNjYWxlIGJlc3RJbWFnZUZvclNjYWxlRmFjdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZVZhbHVlLmNwcAppbmRleCA2MTk2NDYzMGM2ZGVjZGFmOTE5MTI4NWQwODZmOGIzZjAxZTE3
ZTkzLi43MGY5YTRjNTdmMTEyYjQ0ZTQ3ZDE4NDg2YTczNDRlMjcyYzk4YTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0yNCwxMCArMjQsMTEgQEAKICNpbmNsdWRlICJD
U1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJNZW1vcnlD
YWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlN0
eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVBlbmRpbmdJbWFnZS5oIgogCkBAIC0x
MTUsNCArMTE2LDExIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0ltYWdlVmFsdWU6OmNsb25l
Rm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiB1cmlWYWx1ZS5yZWxlYXNlKCk7CiB9CiAKK3Zv
aWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENT
U0ltYWdlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkU3RyaW5nKG1fdXJsKTsKKyAgICAvLyBObyBuZWVk
IHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBSZW5kZXJBcmVu
YS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmgKaW5kZXggNWIyY2U0NzYwYzk0NmE5ZTg3ZTQ3YWExMTViYTU2ZjhiNjQ4YzhlMy4uZmY1NmY0
M2QyNzQwMTYzYzY5YjZjYzI2YWI3ZTc0NDVkODEzNDhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAg
IENTU0ltYWdlVmFsdWUoQ2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHVybCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuY3BwCmluZGV4IDhjNGJlNmQ0YmM3MDBjMmIwNmIx
MDM1ZjcyNTgzYzc1YWQ4OTE3MzIuLjI2ODBmMmZkNjQzN2ZkNmU0NzczMTk1ZTM0MGQ0Yjc3NDE2
MDFlZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmNwcApAQCAtMjEs
NiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0luaGVyaXRlZFZh
bHVlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zMCw0ICszMSw5IEBA
IFN0cmluZyBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuICJpbmhlcml0IjsKIH0KIAordm9pZCBDU1NJbmhlcml0ZWRWYWx1ZTo6cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0luaGVyaXRlZFZhbHVlPiBpbmZvKG1lbW9yeU9i
amVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVy
aXRlZFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAppbmRl
eCA1YWE5MDYzNjc3MTczMDQ2NjhiMTM0MmJiNmQxN2JhZGIxNjdkMGU5Li42OGMwMDFmNTM0MjY2
YTRmN2RhZWJiMGRlZTYyOWQzNTdhZTlmZDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW5oZXJpdGVkVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJp
dGVkVmFsdWUuaApAQCAtMzUsNiArMzUsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9t
Q3NzVGV4dCgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU0luaGVyaXRlZFZh
bHVlKCkKICAgICAgICAgOiBDU1NWYWx1ZShJbmhlcml0ZWRDbGFzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0luaXRpYWxWYWx1ZS5jcHAKaW5kZXggOGRlM2YzMTgyYzVjMWVlZGUzYWNkOTIwMTBkMDdl
OWJlODE5YjIzMi4uMzZiZDk1MDgwZWI1ZDViOWQ1YzliMGI0ZGI5NmJjMWY2ZjllNGJhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKIAorI2luY2x1
ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMwLDQgKzMxLDkgQEAgU3RyaW5nIENTU0luaXRp
YWxWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJpbml0aWFsIjsKIH0K
IAordm9pZCBDU1NJbml0aWFsVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNz
SW5mbzxDU1NJbml0aWFsVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKaW5kZXggZGQ4NmQ4NDI0MWE2NmZmMmY3MzdhZTlh
MDIxYTRiYmFjODA4YjYwMC4uZDUyMzM0M2QzZDM0MTczNDEzMTNhNmFlOTVjNmE2Njk3NDMwODFh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaApAQCAtNDEsNiArNDEsOCBAQCBw
dWJsaWM6CiAKICAgICBib29sIGlzSW1wbGljaXQoKSBjb25zdCB7IHJldHVybiBtX2lzSW1wbGlj
aXQ7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NJbml0aWFsVmFsdWUoYm9vbCBpbXBs
aWNpdCkKICAgICAgICAgOiBDU1NWYWx1ZShJbml0aWFsQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAKaW5kZXggNTMxMzJlYjE5MGY1ZWEyOWNj
NzM0ZDBkZDVjMjc5NDVjYmZlMWJkYy4uMmNmZmU1MzRjOTY5M2U0N2NiYTFkOGJjNWNmN2ViM2Yx
MWZlNTliMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWlu
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVl
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0xpbmVCb3hDb250YWluVmFsdWUu
aCIKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNzIsNCArNzMsOSBAQCBTdHJpbmcgQ1NTTGluZUJveENvbnRhaW5WYWx1
ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKK3ZvaWQgQ1NT
TGluZUJveENvbnRhaW5WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZv
PENTU0xpbmVCb3hDb250YWluVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0xpbmVCb3hDb250YWluVmFsdWUuaAppbmRleCBkZGMwYzYwZjNjMjQ2NWFmZTIzNzJkYzNmNDQw
ZGM3MTQwZWM1MjdiLi5lZWI2NDcwYzgzODc3ZWM2ZWYyYzhkYzA0MTg4MDBmNGQ0YzVkZDE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgKQEAgLTUwLDYg
KzUwLDggQEAgcHVibGljOgogCiAgICAgTGluZUJveENvbnRhaW4gdmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlOyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTGluZUJveENvbnRhaW4g
bV92YWx1ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKaW5kZXgg
ZDViZGU4MmExYjRkZDliNDI1ODljMWM1ZDBmNGE2NGQwOWVmYmM5MC4uYTgxNjMwMjAwYTIxMmQ0
ZjMzN2NlYjIxMDQzNWEyNjNkMTVmODQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNs
dWRlICJDb3VudGVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIk1l
bW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWly
LmgiCiAjaW5jbHVkZSAiUkdCQ29sb3IuaCIKQEAgLTEyNTgsNCArMTI1OSw0NiBAQCBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBDU1NQcmltaXRpdmVWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgp
IGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBDU1NQcmltaXRpdmVWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1ByaW1pdGl2ZVZhbHVlPiBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsK
KyAgICBzd2l0Y2ggKG1fcHJpbWl0aXZlVW5pdFR5cGUpIHsKKyAgICBjYXNlIENTU19VUkk6Cisg
ICAgY2FzZSBDU1NfVkFSSUFCTEVfTkFNRToKKyAgICBjYXNlIENTU19TVFJJTkc6CisgICAgY2Fz
ZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6CisgICAgY2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOgor
ICAgIGNhc2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgorICAgICAgICAv
LyBGSVhNRTogZGV0ZWN0IG90aGVyIGNhc2VzIHdoZW4gbV92YWx1ZSBpcyBTdHJpbmdJbXBsKgor
ICAgICAgICBpbmZvLmFkZFN0cmluZyhtX3ZhbHVlLnN0cmluZyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ1NTX0NPVU5URVI6CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fdmFsdWUuY291
bnRlcik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1JFQ1Q6CisgICAgICAgIGluZm8u
YWRkTWVtYmVyKG1fdmFsdWUucmVjdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1FV
QUQ6CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fdmFsdWUucXVhZCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTX1BBSVI6CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fdmFsdWUucGFp
cik7CisgICAgICAgIGJyZWFrOworI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5B
QkxFKFdJREdFVF9SRUdJT04pCisgICAgY2FzZSBDU1NfREFTSEJPQVJEX1JFR0lPTjoKKyAgICAg
ICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZS5yZWdpb24pOworICAgICAgICBicmVhazsKKyNlbmRp
ZgorICAgIGNhc2UgQ1NTX1NIQVBFOgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnNo
YXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDU1NfQ0FMQzoKKyAgICAgICAgaW5mby5h
ZGRNZW1iZXIobV92YWx1ZS5jYWxjKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmluZGV4IDg3MDY5YzA0MzMzOTU2MzA3NzY4NmY4
NjczOTQwZWUxZmM5ZDcxMzQuLmZkMDgzMmQzNDc4MGI5Njk0NTAwNTE5NDIwZGExM2VlZDFmMzdi
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0zMDYsNiArMzA2
LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGNsb25lRm9y
Q1NTT00oKSBjb25zdDsKICAgICB2b2lkIHNldENTU09NU2FmZSgpIHsgbV9pc0NTU09NU2FmZSA9
IHRydWU7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBGSVhNRTogaW50IHZzLiB1bnNp
Z25lZCBvdmVybG9hZGluZyBpcyB0b28gc3VidGxlIHRvIGRpc3Rpbmd1aXNoIHRoZSBjb2xvciBh
bmQgaWRlbnRpZmllciBjYXNlcy4KICAgICBDU1NQcmltaXRpdmVWYWx1ZShpbnQgaWRlbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAppbmRleCBiMzZjM2FkN2IyYzIxMmRh
YjZjNzljYTg0YmM5NTAwMTY5ODNmZDljLi4wOTg0NzUyNzNmMzI2N2NjOGUwNmNjZjU3NjU2NWUw
ZjRkNTAwMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNjUs
NCArNjYsMTEgQEAgdm9pZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBTdHkKICAgICAgICAgbV9tYXNrLT5hZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKIH0KIAordm9pZCBDU1NSZWZs
ZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NSZWZsZWN0
VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fb2Zmc2V0KTsKKyAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX21hc2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKaW5kZXggNWNmYjIwZTI3Zjc1
ODg0MDYxOTQxMjU4MGJjMDM0ZmVhNTdhNjllZi4uMWJkZmQ1ZmU3NmM3ZWYyODFmN2Y3Nzg5YjI5
Y2VhYTQ0OGM3M2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaApAQCAtNTEs
NiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CiAKKyAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTUmVmbGVjdFZhbHVlKENTU1JlZmxlY3Rpb25EaXJlY3Rp
b24gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvZmZzZXQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IG1hc2spCiAgICAgICAgIDogQ1NTVmFsdWUoUmVmbGVjdENsYXNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGRj
ZjdiYjI5YjU0NmM2ODRiZDk2YzdjZjZhYTE3NjhkZTRlYTEwMTAuLmZlODI3OGFiYzE3MWQ4NTE4
MDAyMzE3M2EwYzU4MGVmMDVlYWM1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw2ICszNiwxMSBAQCBTdHJpbmcgQ1NTTGluZWFyVGltaW5n
RnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJsaW5lYXIi
OwogfQogCit2b2lkIENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAor
eworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlPiBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30K
KwogU3RyaW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4
dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRleHQoImN1YmljLWJlemllcigiKTsKQEAgLTQ5LDYg
KzU1LDExIEBAIFN0cmluZyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3Rv
bUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCit2b2lkIENTU0N1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJ
bmZvPENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIFN0cmluZyBDU1NT
dGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogewogICAgIFN0
cmluZyB0ZXh0KCJzdGVwcygiKTsKQEAgLTU5LDQgKzcwLDkgQEAgU3RyaW5nIENTU1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHQ7
CiB9CiAKK3ZvaWQgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sK
KyAgICBNZW1vcnlDbGFzc0luZm88Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlPiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmgKaW5kZXggZTU0NGM1ZmYwMGMwZDZmYzMxOTdmNDY4NWE4YTE1MjEzZGI0NThh
MC4uM2ViNGIyMjk1YWI5NzYzOTJmZGRmMmU1MGMyOWZkYzI2YmU1MGQ0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC00MCw2ICs0MCw4IEBAIHB1
YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSgpCiAgICAgICAgIDogQ1NT
VmFsdWUoTGluZWFyVGltaW5nRnVuY3Rpb25DbGFzcykKQEAgLTYxLDYgKzYzLDggQEAgcHVibGlj
OgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KICAgICBkb3VibGUgeTIo
KSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUg
eDIsIGRvdWJsZSB5MikKICAgICAgICAgOiBDU1NWYWx1ZShDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uQ2xhc3MpCkBAIC04OSw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21D
c3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTU3RlcHNUaW1pbmdG
dW5jdGlvblZhbHVlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICAgICAgOiBDU1NW
YWx1ZShTdGVwc1RpbWluZ0Z1bmN0aW9uQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vu
aWNvZGVSYW5nZVZhbHVlLmNwcAppbmRleCAyYzJjNDRkMjdhYjU2OGM2YzQ2YmUzM2U1NjI5NjE1
NTUwYTBmYWQzLi45YjBjOTVkOTMzNmFmNjAxNmJjMGRmN2JiNWFjZDk3MjE4MzhmMjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1
ZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNCArMzgsOSBAQCBT
dHJpbmcgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NVbmljb2RlUmFuZ2VWYWx1ZT4gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKaW5kZXggNGZlMWRiNzdj
YjMyNjY5MTUwY2RlNTA3OTdmNDFjMzUzZjliNjc2Yi4uZDUwZjViNjgxNWM3Yjc2ZGViYTA1MDFm
OTY4NDRjMmRjZjE2MGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNv
ZGVSYW5nZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZh
bHVlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NVbmljb2RlUmFuZ2VWYWx1
ZShVQ2hhcjMyIGZyb20sIFVDaGFyMzIgdG8pCiAgICAgICAgIDogQ1NTVmFsdWUoVW5pY29kZVJh
bmdlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCBjZGE0M2I5Y2Y2NDM1MjQ1NzNk
YmYzY2UzMTQ5N2NmMjc4MDUxNzE5Li45Y2JjMzBjNWRlMTM1N2IyODQzYmQyNTgzYmJhNzEyN2Qz
ODVlODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNlbmRp
ZgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRGZWF0dXJlVmFsdWUuaCIK
KyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFkb3dWYWx1
ZS5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHUGFpbnQuaCIKQEAgLTc3
LDYgKzc4LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9jc3NUZXh0OyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAg
TWVtb3J5Q2xhc3NJbmZvPFRleHRDbG9uZUNTU1ZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaW5mby5hZGRTdHJp
bmcobV9jc3NUZXh0KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgVGV4dENsb25lQ1NTVmFsdWUo
Q2xhc3NUeXBlIGNsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KSAKICAgICAgICAgOiBDU1NW
YWx1ZShjbGFzc1R5cGUsIC8qaXNDU1NPTVNhZmUqLyB0cnVlKQpAQCAtMTIxLDYgKzEyOCwxMjgg
QEAgdm9pZCBDU1NWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VS
TD4mIHVybHMsIGNvbnN0IFN0eWxlU2hlZXQKICAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NT
UmVmbGVjdFZhbHVlKj4odGhpcyktPmFkZFN1YnJlc291cmNlU3R5bGVVUkxzKHVybHMsIHN0eWxl
U2hlZXQpOwogfQogCit2b2lkIENTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIGlmIChtX2lzVGV4dENsb25l
KSB7CisgICAgICAgICBBU1NFUlQoaXNDU1NPTVNhZmUoKSk7CisgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IFRleHRDbG9uZUNTU1ZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFT
U0VSVCghaXNDU1NPTVNhZmUoKSB8fCBpc1N1YnR5cGVFeHBvc2VkVG9DU1NPTSgpKTsKKyAgICBz
d2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2FzZSBQcmltaXRpdmVDbGFzczoKKyAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUHJpbWl0aXZlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBJbWFnZUNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NJbWFnZVZhbHVl
Kj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3Vyc29ySW1hZ2VDbGFzczoKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIENhbnZhc0NsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NDYW52YXNWYWx1
ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyb3NzZmFkZUNsYXNzOgorICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IExpbmVhckdyYWRpZW50Q2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVh
ckdyYWRpZW50VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9y
eU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBSYWRpYWxHcmFkaWVudENs
YXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKj4o
dGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbkNsYXNzOgor
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFs
dWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8p
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBMaW5lYXJUaW1pbmdGdW5jdGlvbkNsYXNzOgor
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKj4o
dGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RlcHNUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUqPih0aGlzKS0+
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBBc3BlY3RSYXRpb0NsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxj
b25zdCBDU1NBc3BlY3RSYXRpb1ZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQm9yZGVy
SW1hZ2VTbGljZUNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NCb3JkZXJJbWFn
ZVNsaWNlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9i
amVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBGb250RmVhdHVyZUNsYXNzOgor
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBGb250RmVhdHVyZVZhbHVlKj4odGhpcyktPnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgRm9udENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBGb250VmFs
dWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8p
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBGb250RmFjZVNyY0NsYXNzOgorICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBDU1NGb250RmFjZVNyY1ZhbHVlKj4odGhpcyktPnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgRnVuY3Rpb25DbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTRnVuY3Rp
b25WYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEluaGVyaXRlZENsYXNzOgorICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBDU1NJbmhlcml0ZWRWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEluaXRpYWxDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW5pdGlh
bFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJ
bmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUmVmbGVjdENsYXNzOgorICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBDU1NSZWZsZWN0VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBTaGFkb3dDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgU2hhZG93VmFsdWUqPih0
aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBVbmljb2RlUmFuZ2VDbGFzczoKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8Y29uc3QgQ1NTVW5pY29kZVJhbmdlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBMaW5lQm94Q29udGFpbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5l
Qm94Q29udGFpblZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ2FsY3VsYXRpb25DbGFz
czoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ2FsY1ZhbHVlKj4odGhpcyktPnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJu
OworI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYgRU5BQkxFKENTU19TSEFERVJTKQorICAgIGNh
c2UgV2ViS2l0Q1NTU2hhZGVyQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFdlYktp
dENTU1NoYWRlclZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19W
QVJJQUJMRVMpCisgICAgY2FzZSBWYXJpYWJsZUNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxj
b25zdCBDU1NWYXJpYWJsZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisjaWYgRU5BQkxF
KFNWRykKKyAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0
IFNWR0NvbG9yKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmpl
Y3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU1ZHUGFpbnRDbGFzczoKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHUGFpbnQqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBX
ZWJLaXRDU1NTVkdEb2N1bWVudENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBXZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgY2FzZSBW
YWx1ZUxpc3RDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Kj4o
dGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAg
ICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQorICAgIGNhc2UgSW1hZ2VT
ZXRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW1hZ2VTZXRWYWx1ZSo+KHRo
aXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAg
ICAgIHJldHVybjsKKyNlbmRpZgorI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyAgICBjYXNlIFdl
YktpdENTU0ZpbHRlckNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBXZWJLaXRDU1NG
aWx0ZXJWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2Jq
ZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIGNhc2UgV2ViS2l0Q1NTVHJh
bnNmb3JtQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJ
bmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIFN0cmluZyBDU1NWYWx1ZTo6Y3Nz
VGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNUZXh0Q2xvbmUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
LmgKaW5kZXggOTNhNmQ0YTkxMjVmYWUwMTRhMjVjNTUxZGRkYzkzZDZiNTJkYWIzNS4uNzQwZTY4
YmFlYTQ0OGIwNDI3ZmE2MDA1MWJmN2Y0MWU1MWFmN2RkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgK
QEAgLTI5LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBNZW1vcnlP
YmplY3RJbmZvOwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogICAgIAogLy8gRklYTUU6IFRo
ZSBjdXJyZW50IENTU1ZhbHVlIGFuZCBzdWJjbGFzc2VzIHNob3VsZCBiZSB0dXJuZWQgaW50byBp
bnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZSkuCkBAIC0xMTcsNiArMTE4LDggQEAgcHVibGljOgog
CiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYsIGNv
bnN0IFN0eWxlU2hlZXRDb250ZW50cyopIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKIAogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgQ2xhc3NUeXBlQml0cyA9IDU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuY3BwCmluZGV4IDA2ZjA5M2UxZmUxYTI5YTlmZmRlOTMzM2ZiYzJlNDE2NjU4MTY1MzAuLjg3
MDYyNjMxNDgwNDc4ZTM2NDQ4ZTNiN2I1Y2MwYzU3ZjNlMzg4YTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUxpc3QuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0
LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAt
MTg3LDQgKzE4OCwxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVMaXN0Ojpj
bG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1ZhbHVlTGlz
dCgqdGhpcykpOwogfQogCit2b2lkIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPENTU1ZhbHVlTGlzdD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRW
ZWN0b3IobV92YWx1ZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmgKaW5kZXggOTQ2NDNkYWFkODc5YzUzZTM4ZTExMmYzODMzNTM2ZjVjNGI0
MDU5OC4uNzIwMDBjYjYyMDI2YzJhMTkyYjZkMmJjNzAyMmUyNGFlN2U4YjdmNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuaApAQCAtNjcsNiArNjcsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZv
aWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
KwogcHJvdGVjdGVkOgogICAgIENTU1ZhbHVlTGlzdChDbGFzc1R5cGUsIFZhbHVlTGlzdFNlcGFy
YXRvcik7CiAgICAgQ1NTVmFsdWVMaXN0KGNvbnN0IENTU1ZhbHVlTGlzdCYgY2xvbmVGcm9tKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCmluZGV4IDJjNWI2NmE2Yjk0M2M4OTlk
NzY1M2NjOTMxMzU5ODdiMmZlYzQ5ZGUuLmU2ZjA2ZDAwMmEyYWExNTk3NWU1M2E2ZThiMjU0ZmQz
MzhjZjU1ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ4LDEzIEBA
IHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKKyAgICB7CisgICAgICAgIE1lbW9yeUNsYXNz
SW5mbzxDU1NWYXJpYWJsZVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaW5mby5hZGRTdHJpbmcobV9uYW1lKTsK
KyAgICAgICAgaW5mby5hZGRTdHJpbmcobV92YWx1ZSk7CisgICAgfQorCiBwcml2YXRlOgogICAg
IENTU1ZhcmlhYmxlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgICAgICA6IENTU1ZhbHVlKFZhcmlhYmxlQ2xhc3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKaW5kZXggNjJjMzk2MDY4NTk4YWY5MTU4MGY1NWU1YTk0
YTg2OGFhNTFiZjMyYy4uZjdiYjdjODA2MDQxYWYzOTg4NzZlYjMzYjg2YTU4MTk2ZjY4YjJiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNCArNTAsMTAg
QEAgU3RyaW5nIEZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgRm9udEZlYXR1cmVWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPEZvbnRGZWF0dXJlVmFsdWU+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAg
IGluZm8uYWRkU3RyaW5nKG1fdGFnKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVy
ZVZhbHVlLmgKaW5kZXggN2Q1ZTAzNmMwOGE2MTgzOTU4NTU2NzI3NTBhNjFlNTQ3YWQ1YzVlYi4u
MjhkODlmNDIzNjliMDhiZWIxNDE2NWI5YWJlYTZhZmZjMzk4MGVkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBpbnQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBGb250RmVhdHVyZVZhbHVlKGNv
bnN0IFN0cmluZyYsIGludCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKaW5kZXggODg0MWE3
OTkzNWUyZTVhMzM0MWE5ZjM0NWEwNjY0MzVhMDJkNTE1NS4uNjU2YzdkODIzMGM0NGYyNTMyYjZl
M2NlNzNjYTZkYzE5NDIwZGVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKQEAgLTIyLDYg
KzIyLDcgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKQEAgLTY1LDQgKzY2LDE1IEBAIFN0cmluZyBGb250VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBj
b25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAordm9pZCBGb250VmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxGb250VmFsdWU+IGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHN0eWxlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcih2YXJpYW50KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcih3ZWlnaHQp
OworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHNpemUpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKGxpbmVIZWlnaHQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKGZhbWlseSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAppbmRleCA1ZjgzMzY5MjEw
NTVjMzk4YjE1MmM3Y2IwMzU3Y2JjN2U3N2VkOTNhLi4wM2E2MTI2OGE1ODc0NzBmY2I4YTIxMTJh
OWYwYmM5ZDBhYWU4NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCkBAIC0zOSw2ICszOSw4IEBA
IHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lk
IHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisK
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlOwogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFyaWFudDsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHdlaWdo
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcAppbmRleCBhMTE4NTViYzBhOWFiZjc3
YjAwNzcwZjY1MTE4MjA0ODUzNmMxYWU4Li5lYjk4MDUzOTA4Y2ZlODhjOTkzYTVhN2M5ZTY1NjBk
ZjUwYmJlNDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCkBAIC0xMTQsNiAr
MTE0LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5RXhwOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIE1lbW9yeUNsYXNzSW5mbzxNZWRp
YVF1ZXJ5RXhwPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q1NTKTsKICAgICBpbmZvLmFkZFN0cmluZyhtX21lZGlhRmVhdHVyZSk7CiAgICAgaW5m
by5hZGRTdHJpbmcobV9zZXJpYWxpemF0aW9uQ2FjaGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWVtYmVyKG1fdmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFk
b3dWYWx1ZS5jcHAKaW5kZXggMTRjN2NkYThjNTcwYmNiZDdmYjc1NmZiNWVmOWI5YmFmOTAxM2Ji
NC4uZGI2NDY2OTJlYWFlNjI0ZWRjZTRiZmNjMWVmODM4ODM5MmU5N2QxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2hhZG93VmFsdWUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiU2hhZG93VmFs
dWUuaCIKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNzcsNCArNzgsMTUgQEAgU3RyaW5nIFNoYWRvd1ZhbHVlOjpjdXN0
b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAordm9pZCBTaGFkb3dWYWx1
ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPFNoYWRvd1ZhbHVlPiBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAg
ICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcih4KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcih5KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihibHVyKTsKKyAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihzcHJlYWQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWVtYmVyKHN0eWxlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihjb2xvcik7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKaW5kZXggMjE1NDdhNTcxMWVlM2VlOGY1
NGI1Y2Q5ZjVmYThiNjU5NmY0MjkzZi4uZjJkOGU2ZjZmOThiZjZmZmY2MTRiYzM1MDQ1NjJkYTIz
MmQwMGNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVi
bGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geDsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IHk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGRkMmQ1Zjk3ODZmODhhMmYzNDRmYTBlMTI1OTcyM2Q5
MzQ0MzIyODMuLjA2YzIwMjk0OWVkOGQ3YWIwNGUyYzU5NWEwMGM1ZGUzZWNlMzI0ZWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTU2NDksOCArNTY0OSw5IEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZEhhc2hNYXAobV9tYXRjaGVkUHJvcGVydGll
c0NhY2hlKTsKICAgICBpbmZvLmFkZFZlY3RvcihtX21hdGNoZWRSdWxlcyk7CiAKLSAgICAvLyBG
SVhNRTogSW5zdHJ1bWVudCBTdGF0aWNDU1NSdWxlTGlzdCBhbmQgYWRkIG1fcnVsZUxpc3QgaGVy
ZS4KKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3J1bGVMaXN0KTsKICAgICBpbmZv
LmFkZEhhc2hNYXAobV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKTsKKyAgICBpbmZvLmFkZEluc3Ry
dW1lbnRlZE1lbWJlcihtX2xpbmVIZWlnaHRWYWx1ZSk7CiAgICAgaW5mby5hZGRWZWN0b3IobV92
aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzKTsKICAgICBpbmZvLmFkZEhhc2hNYXAo
bV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCk7CiAgICAgaW5mby5hZGRIYXNoU2V0KG1fc3R5
bGVTaGVldENTU09NV3JhcHBlclNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0Zp
bHRlclZhbHVlLmNwcAppbmRleCAyOTE2ZGMyZDE1M2JmM2UyNDRiY2Y2NDA5MTI1OWZlNDMyZTAy
MGVlLi43MWQ3YjlmOWZiYzM4MTEyODQ0YWNlNTUzNjg2YmI4NWM1Yzg5ODhlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0xMTAsNiArMTExLDEy
IEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IFdlYktpdENTU0ZpbHRlclZhbHVl
OjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENT
U0ZpbHRlclZhbHVlKCp0aGlzKSk7CiB9CiAKK3ZvaWQgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4g
aW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7
CisgICAgQ1NTVmFsdWVMaXN0OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2Jq
ZWN0SW5mbyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKaW5kZXggYTM0ZDU3NDVjNjVjOTY3
NzNlMTZjZTA3M2IyMThiOWRjOGQxNGI4Zi4uMDhiM2U5ZjlhNTAyOWE4MWQ1Nzg1ODNkOTY0ZDU4
MzE3YjJkZmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRl
clZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgK
QEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0
ZXJWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAg
IFdlYktpdENTU0ZpbHRlclZhbHVlKEZpbHRlck9wZXJhdGlvblR5cGUpOwogICAgIFdlYktpdENT
U0ZpbHRlclZhbHVlKGNvbnN0IFdlYktpdENTU0ZpbHRlclZhbHVlJiBjbG9uZUZyb20pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwCmluZGV4
IDQ5MDI1MDQ5NjZhYzMyY2JjYzcyZjAxMGU3ZDUyOTg5ZDE3YWQ3MDQuLjQ5MzVmYjAxNGUwMzYz
YTc3ZGExODZkMTUzNjk2YzhmM2Q0ZDBmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsNiArNjQsMTMgQEAgU3RyaW5nIFdlYktpdENTU1NW
R0RvY3VtZW50VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiBxdW90ZUNT
U1N0cmluZ0lmTmVlZGVkKG1fdXJsKTsKIH0KIAordm9pZCBXZWJLaXRDU1NTVkdEb2N1bWVudFZh
bHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88V2ViS2l0Q1NTU1ZHRG9j
dW1lbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRTdHJpbmcobV91cmwpOworICAgIC8vIEZJWE1FOiBh
ZGQgbV9kb2N1bWVudCB3aGVuIGNhY2hlZCByZXNvdXJjZXMgYXJlIGluc3RydW1lbnRlZC4KK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oCmluZGV4IGNiMDNm
NTZlZTVjM2VjNGEwNzhiNTMxODllNzc1NTc1MDVmOGQ3MzguLjk2YmNjOGMzMGM0OTYwMWI2NzJj
MTg3NWM2ZDIwMjI0MjMwZTU3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NWR0RvY3VtZW50VmFsdWUuaApAQCAtNDUsNiArNDUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQogICAgIGJvb2wgbG9hZFJlcXVl
c3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFJlcXVlc3RlZDsgfQogCisgICAgdm9pZCByZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2
YXRlOgogICAgIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUoY29uc3QgU3RyaW5nJiB1cmwpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcAppbmRleCA4NjUx
NzU4ZWQ2Yzk5MTdmMDIyNDkxNzE1ZTZiZDU1NmI2OWM1MjY3Li5iNmQxZGVhYzg1OWY0YzIyMWQ3
Yjk4NzRiZTk1ZmQ3ZmNhZTNiMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NT
aGFkZXJWYWx1ZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJj
ZUxvYWRlci5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNo
ZWRTaGFkZXIuaCIKICNpbmNsdWRlICJTdHlsZVBlbmRpbmdTaGFkZXIuaCIKIApAQCAtNzksNiAr
ODAsMTIgQEAgU3RyaW5nIFdlYktpdENTU1NoYWRlclZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29u
c3QKICAgICByZXR1cm4gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3VybCkgKyAiKSI7
CiB9CiAKK3ZvaWQgV2ViS2l0Q1NTU2hhZGVyVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1l
bW9yeUNsYXNzSW5mbzxXZWJLaXRDU1NTaGFkZXJWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRTdHJpbmco
bV91cmwpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NoYWRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUu
aAppbmRleCBmZDk1YmM2M2NmN2FjNTA5Y2UzNTlkMDliOGZiYzkwZTMxOWIxNGI0Li5jNDMyMDFj
YTJhNGExNjRhYjkzNjNkNzk0NjJlNDI3NTRjMmZjMmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBT
dHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdl
YktpdENTU1NoYWRlclZhbHVlKGNvbnN0IFN0cmluZyYgdXJsKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAKaW5kZXggODdkZWQ3ZGE2YjU2NjI3
ZDUwN2UxY2IwNWNiMzA2MGRhODAwMmE5Yi4uMWNiNzNmYzA5ZDQwOWJmNzcyY2Q3YjQ2ZjQwNmQ5
NzVkZjYzOTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIk1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBA
IC0xMDQsNCArMTA1LDEwIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uCiAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSgqdGhpcykpOwogfQogCit2b2lkIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm88V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCmluZGV4IDVmYzRmN2Q2YmZkNWQ0
ZDY3NmJhZDFkMDgyZDZiNDVkOTQ5Yjk3OTIuLmZkMTE3ZjIzMjk0YmRhNTIxODJiMjNhZTYwNTZi
M2I3M2Q5MThkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZS5oCkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRyPFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICB2b2lk
IHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoVHJhbnNmb3JtT3BlcmF0aW9u
VHlwZSk7CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoY29uc3QgV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUmIGNsb25lRnJvbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IDdlOWYzMGQ5Nzg0MWNkMTM3MjIzMTczOTczNmRiYjIzNjI3YmUw
YzYuLjkyMmQ0Yjk2M2MwN2Q2NzljMGMwNWVjOTM0OTE4NjM4MGZhZjkxM2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zOCw5ICszOCwxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkKIHsKLSAg
ICBpZiAoc3RyaW5nLmlzTnVsbCgpIHx8IHZpc2l0ZWQoc3RyaW5nLmltcGwoKSkpCisgICAgYWRk
U3RyaW5nKHN0cmluZy5pbXBsKCksIG9iamVjdFR5cGUpOworfQorCit2b2lkIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6YWRkU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZ0ltcGwsIE9iamVj
dFR5cGUgb2JqZWN0VHlwZSkKK3sKKyAgICBpZiAoIXN0cmluZ0ltcGwgfHwgdmlzaXRlZChzdHJp
bmdJbXBsKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBl
LCBzdHJpbmcuaW1wbCgpLT5zaXplSW5CeXRlcygpKTsKKyAgICBjb3VudE9iamVjdFNpemUob2Jq
ZWN0VHlwZSwgc3RyaW5nSW1wbC0+c2l6ZUluQnl0ZXMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRl
eCBkNDZlNWUxMDQ3NjU3OTNhNTNkMjczOTUyNWNhYWExNTIyMjIzNzdiLi5hOGRjZmU0NzI1MzE3
YjgwMTAzY2ZmODljNTdjMWIwZmQzZjYxNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9y
eUluc3RydW1lbnRhdGlvbi5oCkBAIC05Miw4ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIE93
bmluZ1RyYWl0czxUPjo6YWRkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2JqZWN0VHlwZSk7CiAgICAg
fQogICAgIHZvaWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZyYsIE9iamVjdFR5cGUpOworICAgIHZv
aWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqLCBPYmplY3RUeXBlKTsKICAgICB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4gdm9pZCBhZGRJbnN0cnVtZW50ZWRPYmplY3QoY29uc3QgVCYgdCwgT2Jq
ZWN0VHlwZSBvd25lck9iamVjdFR5cGUpIHsgT3duaW5nVHJhaXRzPFQ+OjphZGRJbnN0cnVtZW50
ZWRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RUeXBlKTsgfQotCiAgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmLCBP
YmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiwgT2Jq
ZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ29sbGVjdGlvblR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBD
b2xsZWN0aW9uVHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CkBA
IC0xODIsNiArMTgyLDcgQEAgcHVibGljOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hN
YXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIG1hcCkgeyBtX21lbW9y
eUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaE1hcChtYXAsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0K
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSGFzaFNldChjb25z
dCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoU2V0
KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNo
U2V0VHlwZT4gdm9pZCBhZGRIYXNoQ291bnRlZFNldChjb25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0
cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVt
ZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oc2V0LCBtX29iamVjdFR5cGUsIHRy
dWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRkSW5zdHJ1
bWVudGVkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbih2ZWN0b3IsIG1fb2JqZWN0VHlwZSwg
dHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRWZWN0b3JQdHIoY29uc3QgT3duUHRyPFZlY3RvclR5cGU+JiB2ZWN0b3IpIHsgbV9t
ZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oKnZlY3Rvciwg
bV9vYmplY3RUeXBlLCBmYWxzZSk7IH0KQEAgLTE5Myw2ICsxOTQsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFkZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgeyBtX21lbW9yeUluc3RydW1l
bnRhdGlvbi0+YWRkU3RyaW5nKHN0cmluZywgbV9vYmplY3RUeXBlKTsgfQogICAgIHZvaWQgYWRk
U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0
aW9uLT5hZGRTdHJpbmcoKGNvbnN0IFN0cmluZyYpc3RyaW5nLCBtX29iamVjdFR5cGUpOyB9Cisg
ICAgdm9pZCBhZGRTdHJpbmcoY29uc3QgU3RyaW5nSW1wbCogc3RyaW5nKSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5hZGRTdHJpbmcoc3RyaW5nLCBtX29iamVjdFR5cGUpOyB9CiAKIHByaXZh
dGU6CiAgICAgTWVtb3J5T2JqZWN0SW5mbyogbV9tZW1vcnlPYmplY3RJbmZvOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdDb2xvci5jcHAKaW5kZXggMjU3MmI3YmJmZTI5ZmMyMTZiOGFlOGE2OWMzY2I0ZDJlODdhMzFh
ZC4uMGVkZWQ2MTFjOGY4YWFiZWE0NDJmMDE0NjNiZDAyNDIwZWE0NzJmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29sb3IuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiU1ZHQ29sb3IuaCIKIAog
I2luY2x1ZGUgIkNTU1BhcnNlci5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlJHQkNvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCiAKQEAg
LTEwNCw2ICsxMDUsMTEgQEAgUGFzc1JlZlB0cjxTVkdDb2xvcj4gU1ZHQ29sb3I6OmNsb25lRm9y
Q1NTT00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHQ29sb3IoU1ZHQ29sb3JD
bGFzcywgKnRoaXMpKTsKIH0KIAordm9pZCBTVkdDb2xvcjo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPFNWR0NvbG9yPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1l
bW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNW
RykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NvbG9yLmgKaW5kZXggY2ZmYWM1Mzg1ZTIxNTE5YzYyODgxNWFjOTMyMTZh
NjMzMzUwODk3NC4uN2RkZGNkN2E5NDQ0YjExY2Q4NTY1NDlhMzI0OTViZmYxZTkwZGM1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbG9yLmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAgIAogICAgIFBh
c3NSZWZQdHI8U1ZHQ29sb3I+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJv
dGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb247CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGFpbnQuY3BwCmluZGV4IDhjZjNkN2U1NjgyMmVhY2UxYWMxM2IyZmVjMjg0
ZWQ4ZWY3M2E4ZTAuLmVmNGNiYTExN2U5OWFmNTFhODdlMWQzNzQ3ZjZmY2FhMzA0NjgwYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhaW50LmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2lmIEVOQUJMRShTVkcp
CiAjaW5jbHVkZSAiU1ZHUGFpbnQuaCIKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTExLDYgKzExMiwxMiBA
QCBQYXNzUmVmUHRyPFNWR1BhaW50PiBTVkdQYWludDo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdQYWludCgqdGhpcykpOwogfQogCit2b2lkIFNWR1Bh
aW50OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U1ZHUGFpbnQ+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAg
IGluZm8uYWRkU3RyaW5nKG1fdXJpKTsKK30KKwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5oIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhaW50LmgKaW5kZXggYjA1M2NiZDc3NzhjN2ExOTAyYWVmYTVkNmVlMDlkZTg3
ZjhiM2I5My4uYWM1Njc1YjU5ZWRlMGM5YjkwZjcxZGEzYzhlNjJjN2VlOTdlZGU3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhaW50LmgKQEAgLTk1LDYgKzk1LDggQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0
cjxTVkdQYWludD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb247CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156629</attachid>
            <date>2012-08-06 02:12:19 -0700</date>
            <delta_ts>2012-08-06 02:27:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93130-20120806131154.patch</filename>
            <type>text/plain</type>
            <size>78347</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI1ODQ2ZmJjODAwNGU2
ODAzODA3ZTI1MTlmNmZhMzA1NDA3NWZlNS4uMWE2NWM4ZGI3OGMxOTM5NmJjN2Q4NGNiYTljODI3
NTNjYTcyMjRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAxMi0wOC0wMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgbWVtb3J5IGluc3RydW1lbnRhdGlvbiBmb3IgQ1NTVmFsdWUgYW5kIGl0cyBkZXNj
ZW5kYW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBtZW1vcnkgZm9vdHByaW50IHJlcG9ydGluZyByb3V0aW5lIHRvIENTU1ZhbHVlIGFuZCBp
dHMgZGVzY2VuZGFudHMuCisKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NBc3BlY3RSYXRpb1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0FzcGVj
dFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJhdGlvVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5o
OgorICAgICAgICAoQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NhbGNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KENTU0NhbGNQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuaDoKKyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxj
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDYW52YXNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5oOgorICAgICAgICAo
Q1NTQ2FudmFzVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jvc3NmYWRlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmg6CisgICAgICAgIChDU1NGb250RmFjZVNyY1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKENTU0Z1bmN0aW9uVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0dyYWRpZW50Q29sb3JTdG9wOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01l
bW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxH
cmFkaWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNz
cy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NHcmFkaWVudENvbG9yU3RvcCk6Cisg
ICAgICAgIChDU1NHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKENTU0xpbmVhckdyYWRpZW50VmFs
dWUpOgorICAgICAgICAoQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaDoKKyAgICAgICAgKENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0lt
YWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuaDoKKyAgICAgICAgKEltYWdlV2l0aFNjYWxlKToKKyAg
ICAgICAgKENTU0ltYWdlU2V0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1
ZS5oOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0luaGVyaXRl
ZFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0luaGVyaXRlZFZhbHVlOjpyZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0NTU0luaGVyaXRlZFZhbHVlLmg6CisgICAgICAgIChDU1NJbmhlcml0ZWRWYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbml0
aWFsVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmg6CisgICAgICAgIChDU1NJbml0aWFs
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0xpbmVCb3hDb250YWluVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTTGluZUJveENv
bnRhaW5WYWx1ZS5oOgorICAgICAgICAoQ1NTTGluZUJveENvbnRhaW5WYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChDU1NQcmlt
aXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmg6Cisg
ICAgICAgIChDU1NSZWZsZWN0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBj
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoQ1NTTGluZWFyVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6CisgICAgICAgIChDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUp
OgorICAgICAgICAoQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVW5pY29kZVJh
bmdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKENTU1Vu
aWNvZGVSYW5nZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENsb25lQ1NTVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChUZXh0Q2xvbmVDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0NTU1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1ZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVl
TGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKENTU1ZhbHVlTGlzdCk6Cisg
ICAgICAgICogY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
cmlhYmxlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChDU1NW
YXJpYWJsZVZhbHVlKToKKyAgICAgICAgKiBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmVhdHVyZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUu
aDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgorICAgICAgICAqIGNzcy9Gb250VmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0ZvbnRWYWx1ZS5oOgor
ICAgICAgICAoRm9udFZhbHVlKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXhwOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogY3NzL1NoYWRvd1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1ZhbHVl
OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogY3NzL1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU0ZpbHRl
clZhbHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktp
dENTU1NWR0RvY3VtZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU1NWR0RvY3VtZW50VmFs
dWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1
ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU2hhZGVyVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAo
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUpOgorICAgICAgICAqIGRvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1l
bnRhdGlvbi5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5Q2xhc3NJbmZvOjphZGRTdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdDb2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5oOgor
ICAgICAgICAoU1ZHQ29sb3IpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYWludDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5oOgorICAgICAgICAoU1ZHUGFp
bnQpOgorCiAyMDEyLTA4LTA1ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5j
b20+CiAKICAgICAgICAgW0NNQUtFXSBNb3ZlIG1lZGlhIHNvdXJjZSBmaWxlcyBmcm9tICNpZmRl
ZiBFTkFCTEUoTUVESUFfU09VUkNFKSB0byBleGlzdGluZyBmaWxlIGxpc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcAppbmRleCAxOGIwZGVkNjczNmVlMTQ0OWY4
NzAxZWU5OWE5NzEwMmViM2NiNTM3Li5iMDdmN2JhNjY5Y2FmYTJmZDgzY2M3ZjRmNWJjZmZjMjVl
MTFjN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTQXNwZWN0
UmF0aW9WYWx1ZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC00Miw0ICs0Myw5IEBAIFN0cmluZyBDU1NBc3BlY3RSYXRpb1ZhbHVlOjpjdXN0b21Dc3NUZXh0
KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgQ1NTQXNw
ZWN0UmF0aW9WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0Fz
cGVjdFJhdGlvVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDU1MpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlv
VmFsdWUuaAppbmRleCAyZjZiNDI2ZDhjMGE4M2E5NmY5NWVjOTBiYjJiY2Y2YWFjYTNmYzI1Li41
Y2MzMzkyNDliYjUxMzFhYjY2NjVkMWUyODIwYjRkOGQ3ODJkNDFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogICAg
IGZsb2F0IG51bWVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9udW1lcmF0b3JWYWx1ZTsg
fQogICAgIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Rlbm9taW5h
dG9yVmFsdWU7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NBc3BlY3RSYXRpb1ZhbHVl
KGZsb2F0IG51bWVyYXRvclZhbHVlLCBmbG9hdCBkZW5vbWluYXRvclZhbHVlKQogICAgICAgICA6
IENTU1ZhbHVlKEFzcGVjdFJhdGlvQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NC
b3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDA0ZWYyZDM2NmM4MGMzMmU3NjdjNzY5NTBj
NjU2MTBkNmNiNjUyZDAuLmZmNzNhY2FmODQ5MTZlMmQ3MzE5MWI2ZWFmOWM4YWQ1Zjk3ZjJkYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTQm9y
ZGVySW1hZ2VTbGljZVZhbHVlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlY3QuaCIKIApAQCAt
NDksNCArNTAsMTAgQEAgU3RyaW5nIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Y3VzdG9tQ3Nz
VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKK3ZvaWQgQ1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQm9yZGVy
SW1hZ2VTbGljZVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3NsaWNl
cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRleCBkODIzMGY0NzRlYmY5ZjRhZDQ4OWU3N2Nl
YTIxNjRlZDQ4N2NlNjZmLi40ODhiNGE0MWQyMGRmYWYyYzQyMmM2MTQzODA1M2UxNDVlZjQ0NmY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCkBA
IC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIFF1YWQqIHNsaWNlcygpIHsgcmV0dXJuIG1f
c2xpY2VzID8gbV9zbGljZXMtPmdldFF1YWRWYWx1ZSgpIDogMDsgfQogCisgICAgdm9pZCByZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAgICAg
Ly8gVGhlc2UgZm91ciB2YWx1ZXMgYXJlIHVzZWQgdG8gbWFrZSAiY3V0cyIgaW4gdGhlIGJvcmRl
ciBpbWFnZS4gVGhleSBjYW4gYmUgbnVtYmVycwogICAgIC8vIG9yIHBlcmNlbnRhZ2VzLgogICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9zbGljZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNTQyNDdlMDM1OWZiNDc0ODFjY2FiMjc4NGZl
MDQ0MjhjY2Q3YzRmNC4uYmM4ZWRkOTNmMWEzMjAzMTY0MDg2MTBhOTZmNjNkMmJlNTFiMWQ1MCAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgi
CisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNv
bHZlci5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtODYsNiArODcsMTEgQEAgU3Ry
aW5nIENTU0NhbGNWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJlc3VsdC5h
cHBlbmQoJyknKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7IAogfQorCit2b2lkIENT
U0NhbGNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0NhbGNW
YWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNTUyk7Cit9CiAgICAgCiBkb3VibGUgQ1NTQ2FsY1ZhbHVlOjpjbGFtcFRvUGVybWl0dGVkUmFu
Z2UoZG91YmxlIHZhbHVlKSBjb25zdAogewpAQCAtMTc1LDYgKzE4MSwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7ICAgICAgICAKICAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NDYWxj
UHJpbWl0aXZlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDU1MpOworICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Zh
bHVlKTsKKyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENTU0NhbGNQcmltaXRp
dmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGJvb2wgaXNJbnRlZ2VyKQpAQCAtMjYw
LDYgKzI3MiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBldmFsdWF0ZShsZWZ0VmFsdWUs
IHJpZ2h0VmFsdWUpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdCBPVkVSUklERQorICAg
IHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0NhbGNCaW5hcnlPcGVyYXRpb24+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAg
ICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2xlZnRTaWRlKTsKKyAgICAgICAgaW5m
by5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9yaWdodFNpZGUpOworICAgIH0KKwogICAgIHZpcnR1
YWwgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHsKICAgICAgICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRp
b25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaAppbmRl
eCA1N2EyNDlmODk2OGM1MTY0ODI4NmVlNzQxMDQ1NzE3ZWRlZTY2NzZmLi5iMjVmN2IzMWE1MDIy
YzA4YjhmZjZkNWE2MjZkMGM0Mzc0NGY0OTE2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxj
dWxhdGlvblZhbHVlLmgKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91
YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIGNvbXB1dGVM
ZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
LCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNl
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3QgPSAwOwogICAgIAogICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnkoKSBj
b25zdCB7IHJldHVybiBtX2NhdGVnb3J5OyB9ICAgIAogICAgIGJvb2wgaXNJbnRlZ2VyKCkgY29u
c3QgeyByZXR1cm4gbV9pc0ludGVnZXI7IH0KQEAgLTk1LDYgKzk3LDggQEAgcHVibGljOgogICAg
IGRvdWJsZSBjb21wdXRlTGVuZ3RoUHgoUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLjAsIGJvb2wgY29tcHV0aW5n
Rm9udFNpemUgPSBmYWxzZSkgY29uc3Q7CiAgICAgICAgIAogICAgIFN0cmluZyBjdXN0b21Dc3NU
ZXh0KCkgY29uc3Q7CisKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgCiBwcml2YXRlOiAgICAKICAgICBDU1NDYWxjVmFs
dWUoUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGV4cHJlc3Npb24sIENhbGN1bGF0
aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCmluZGV4IDc4M2NlZWY4MmI1MGY4ODVlMzcwNTllNzVkZTE1NmRlZGYyN2QxNjEuLmNl
NjllZjU4OGRlY2Q0ODIxZDEyYjdiOGY0ZTdkYTI4OTA0Y2JmMzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NhbnZhc1ZhbHVlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0NhbnZh
c1ZhbHVlLmgiCiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC05Miw0ICs5MywxMSBAQCBQYXNzUmVmUHRyPEltYWdlPiBDU1NDYW52YXNW
YWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgLwogICAg
IHJldHVybiBlbHQtPmNvcGllZEltYWdlKCk7CiB9CiAKK3ZvaWQgQ1NTQ2FudmFzVmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NDYW52YXNWYWx1ZT4gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAg
aW5mby5hZGRTdHJpbmcobV9uYW1lKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlciht
X2VsZW1lbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YW52YXNWYWx1ZS5oCmluZGV4IDE1OWU2MTk1NjhiYTUwMzhjNTcxZGMxNDVkODllZmQ5NjVmZTRk
OTQuLjEzZmI1ODc0MWU1NzBkNWI0YTUzZGYzMjUyZTRlM2M4NjY2MTQ0YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYW52YXNWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBib29s
IGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBsb2FkU3ViaW1h
Z2VzKENhY2hlZFJlc291cmNlTG9hZGVyKikgeyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
Q1NTQ2FudmFzVmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICA6IENTU0ltYWdlR2Vu
ZXJhdG9yVmFsdWUoQ2FudmFzQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmNwcAppbmRleCBhOTVkMWU3M2I3NmM3ZjY4NTc4ZTg0YjRjNWVhZDE1YjlhODk1YTQ4Li43
OGM2NWQyM2Q1YTM3OWIyYWE2NmFhYjY3OTAwN2NiZmQ2ODJiZWU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNyb3NzZmFkZUdlbmVyYXRlZEltYWdl
LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hl
ZEltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIgpAQCAtMTM0LDYgKzEz
NSwxOCBAQCB2b2lkIENTU0Nyb3NzZmFkZVZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291
cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcgogICAgIG1fY3Jvc3NmYWRlU3ViaW1hZ2VP
YnNlcnZlci5zZXRSZWFkeSh0cnVlKTsKIH0KIAordm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0Nyb3NzZmFkZVZhbHVlPiBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAg
ICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2Zyb21WYWx1ZSk7CisgICAgaW5mby5hZGRJ
bnN0cnVtZW50ZWRNZW1iZXIobV90b1ZhbHVlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1l
bWJlcihtX3BlcmNlbnRhZ2VWYWx1ZSk7CisgICAgLy8gRklYTUU6IGFkZCBpbnN0cnVtZW50YXRp
b24gZm9yCisgICAgLy8gbV9jYWNoZWRGcm9tSW1hZ2UKKyAgICAvLyBtX2NhY2hlZFRvSW1hZ2UK
KyAgICAvLyBtX2dlbmVyYXRlZEltYWdlCit9CisKIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0Nyb3Nz
ZmFkZVZhbHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBz
aXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3Nz
ZmFkZVZhbHVlLmgKaW5kZXggODlhNzJjNGU5MjcyZGQwZDcwNGUxYjdlNGExNWNkOTVhZTljZWU3
Zi4uZjUyNjdlYmNkZTM1NzlhNjBmN2JjZTZmNDBlYTU4OGRiOWI1YjQzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgogCiAg
ICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAgICB2
b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7
CisKIHByaXZhdGU6CiAgICAgQ1NTQ3Jvc3NmYWRlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
ZnJvbVZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQogICAgICAgICA6IENTU0lt
YWdlR2VuZXJhdG9yVmFsdWUoQ3Jvc3NmYWRlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXggZjg1MDY4NDhmZjc0NTRjNDAyN2MwZjJjMTFkMTRh
ODRiYmU2MjhlYi4uY2E1NDRmNTJmZTkwMzY1MDYxZDBmN2YwNTJiZjVjYzAxMzQ1NzQzYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtMjMsNiArMjMs
NyBAQAogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKIAogI2luY2x1ZGUgIkNhY2hl
ZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNs
dWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTMyLDQgKzEzMywxMiBAQCB2b2lkIENTU0N1cnNv
ckltYWdlVmFsdWU6OnJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQp
CiB9CiAjZW5kaWYKIAordm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sK
KyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisjaWYgRU5BQkxFKFNW
RykKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZEhhc2hTZXQobV9yZWZlcmVuY2VkRWxlbWVudHMp
OworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCmluZGV4IGNiMjY5MTllNDY4M2Q2MjU1NjdlNzg3NDlhN2M4
MGZmYzljZTBlZTcuLmRjOGQxZmY0Y2E1ZjU4NjUyOGU5NzA2MmNkNWU5OGQ2NmY2YjEyZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaApAQCAtNDgsNiArNDgsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50Kik7
CiAjZW5kaWYKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAppbmRleCA2MDViMmZjZTcxYTk4OGEwZTA0
NmUzNWI2YzZiYjZmMTgxNDdkMDNmLi4wNzM0MDQ0MDM5ZjMxMTg5NmU1NDU2NzI4MDg0ZTFjYjky
M2FmMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBA
IC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5j
bHVkZSAiU1ZHRm9udEZhY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRz
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk1LDUgKzk3LDE2IEBAIENhY2hlZEZvbnQq
IENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0KCk7CiB9CiAKK3ZvaWQgQ1NTRm9udEZhY2VTcmNWYWx1
ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0ZvbnRGYWNlU3JjVmFs
dWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpD
U1MpOworICAgIGluZm8uYWRkU3RyaW5nKG1fcmVzb3VyY2UpOworICAgIGluZm8uYWRkU3RyaW5n
KG1fZm9ybWF0KTsKKyAgICAvLyBGSVhNRTogYWRkIG1fY2FjaGVkRm9udCB3aGVuIE1lbW9yeUNh
Y2hlIGlzIGluc3RydW1lbnRlZC4KKyNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQorICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKG1fc3ZnRm9udEZhY2VFbGVtZW50KTsKKyNlbmRpZgorfQorCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IDA2ZWY0YjMz
MDc5MDAxNWI1ZjE0MDJkYzk0NTA0OGZkYmUwYzlkNDMuLjQ0NDRjODYwNjkyYWI2OGUyNTdmZjhm
NjU1NmNlMDEyZjk4YWFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFs
dWUuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWRGb250KiBjYWNoZWRG
b250KERvY3VtZW50Kik7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTRm9udEZhY2VTcmNW
YWx1ZShjb25zdCBTdHJpbmcmIHJlc291cmNlLCBib29sIGxvY2FsKQogICAgICAgICA6IENTU1Zh
bHVlKEZvbnRGYWNlU3JjQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5j
cHAKaW5kZXggNTIyYWQ5ZmQxNjRhN2Q1ZDRhZGNjZmFlYWJmNzZjN2M4YjM2NjE1YS4uN2E0MmM0
NDJjYmFlOGRlY2I1MWI4ZjcyNzI1ZGVlOWMxZWIwOTYyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGdW5jdGlvblZhbHVlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFy
c2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtNDksNCArNTAsMTEgQEAgU3RyaW5nIENTU0Z1bmN0aW9uVmFsdWU6
OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQ1NT
RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0Z1
bmN0aW9uVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkU3RyaW5nKG1fbmFtZSk7CisgICAgaW5mby5hZGRJ
bnN0cnVtZW50ZWRNZW1iZXIobV9hcmdzKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5j
dGlvblZhbHVlLmgKaW5kZXggYTM1YTFiMTdiMzEwMjg5OWJlYmZkZDFlMThjYzEzYjRjN2Y2Yjdi
Zi4uNmI3ZmJjNjVlNGU0ZjFjMDdjYTUyZTEyM2ZjZmRhZWQ1NzE5MzZjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgQ1NTRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJGdW5jdGlvbiopOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggM2YxOTc5ZmVlNTAwNGQzZWJiZDhm
ZDdhNTFkYjcxNzNmYWQxZmUwMy4uMzA3NmQyYWY2MmE5YWYwOTU2OTdjOTJhNWI1MjBhYjdiYzBj
ZTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1
ZGUgIkludFNpemVIYXNoLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTQyLDYgKzQzLDEzIEBAIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBDU1NHcmFkaWVudENvbG9y
U3RvcDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTR3JhZGllbnRDb2xvclN0b3A+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwor
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcG9zaXRpb24pOworICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKG1fY29sb3IpOworfQorCiBQYXNzUmVmUHRyPEltYWdlPiBDU1NH
cmFkaWVudFZhbHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXpl
JiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTQ1Miw2ICs0NjAsMTcgQEAg
Ym9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKK3ZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm88Q1NTR3JhZGllbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgaW5m
by5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9maXJzdFgpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWVtYmVyKG1fZmlyc3RZKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Nl
Y29uZFgpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2Vjb25kWSk7CisgICAg
aW5mby5hZGRJbnN0cnVtZW50ZWRWZWN0b3IobV9zdG9wcyk7Cit9CisKIFN0cmluZyBDU1NMaW5l
YXJHcmFkaWVudFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVz
dWx0OwpAQCAtNTk0LDYgKzYxMywxMyBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJH
cmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgIHJl
dHVybiBncmFkaWVudC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgQ1NTTGluZWFyR3JhZGllbnRWYWx1
ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0xpbmVhckdyYWRpZW50
VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpDU1MpOworICAgIENTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fYW5n
bGUpOworfQorCiBTdHJpbmcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgp
IGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdDsKQEAgLTg5MSw0ICs5MTcsMTYgQEAgUGFzc1Jl
ZlB0cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVu
ZGVyT2JqZWN0KiByZW5kZXIKICAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFzZSgpOwogfQogCit2
b2lkIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNs
YXNzSW5mbzxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRo
aXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBDU1NHcmFkaWVudFZhbHVlOjpy
ZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZE1lbWJlcihtX2ZpcnN0UmFkaXVzKTsKKyAgICBpbmZvLmFkZEluc3RydW1l
bnRlZE1lbWJlcihtX3NlY29uZFJhZGl1cyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobV9zaGFwZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9zaXppbmdCZWhh
dmlvcik7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9lbmRIb3Jpem9udGFsU2l6
ZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9lbmRWZXJ0aWNhbFNpemUpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuaAppbmRleCAwYzdlZjc3NjRiMjEwYjMzNjZmYjBjMzkwZGE0NGIzNDYzNDllODk0Li44ODJj
YzYyOGZmZDY1NmZlYWExYTZkNDcxZmVjYjY3ZjNjZmJkYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IENTU0dyYWRpZW50Q29s
b3JTdG9wIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fY29sb3I7CiAgICAgQ29s
b3IgbV9yZXNvbHZlZENvbG9yOwogICAgIGJvb2wgbV9jb2xvcklzRGVyaXZlZEZyb21FbGVtZW50
OworICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owog
fTsKIAogY2xhc3MgQ1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZh
bHVlIHsKQEAgLTEwNSw2ICsxMDYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGlzQ2FjaGVh
YmxlKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogICAgIC8vIFBvaW50cy4gU29tZSBvZiB0aGVzZSBtYXkg
YmUgbnVsbCBmb3IgbGluZWFyIGdyYWRpZW50cy4KICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IG1fZmlyc3RYOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9maXJzdFk7CkBA
IC0xMzksNiArMTQyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENT
U0xpbmVhckdyYWRpZW50VmFsdWUoKnRoaXMpKTsKICAgICB9CiAKKyAgICB2b2lkIHJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIGJv
b2wgZGVwcmVjYXRlZFR5cGUgPSBmYWxzZSkKICAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKExp
bmVhckdyYWRpZW50Q2xhc3MsIHJlcGVhdCwgZGVwcmVjYXRlZFR5cGUpCkBAIC0xODAsNiArMTg1
LDggQEAgcHVibGljOgogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6
ZS4KICAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3Qq
LCBjb25zdCBJbnRTaXplJik7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTUmFkaWFsR3Jh
ZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIGJvb2wgZGVwcmVjYXRlZFR5cGUg
PSBmYWxzZSkKICAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKFJhZGlhbEdyYWRpZW50Q2xhc3Ms
IHJlcGVhdCwgZGVwcmVjYXRlZFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggOWJlNDQ2YmQwZmI4NWIwNjRkNjlmMTg2MzI2OTlhMDM5
YTBhYzFkNi4uYzJhZDUwMWYzY2YwZDU1YWIxNTRiNjMwMWM5NDExZDFjMDhkZGYyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkNTU0Nyb3NzZmFkZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTR3Jh
ZGllbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEwOCw2ICsxMDksMTQgQEAgdm9pZCBDU1NJbWFnZUdlbmVy
YXRvclZhbHVlOjpwdXRJbWFnZShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPEltYWdl
PiBpbWEKICAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgaW1hZ2UpOwogfQogCit2b2lkIENTU0ltYWdl
R2VuZXJhdG9yVmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSGFzaENvdW50ZWRTZXQobV9zaXplcyk7
CisgICAgaW5mby5hZGRIYXNoTWFwKG1fY2xpZW50cyk7CisgICAgaW5mby5hZGRIYXNoTWFwKG1f
aW1hZ2VzKTsgLy8gRklYTUU6IGluc3RydW1lbnQgSW1hZ2UKK30KKwogUGFzc1JlZlB0cjxJbWFn
ZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAppbmRleCBiM2Q4NGVhYjI4
M2YxMjRhNDIzMTQwY2I0NTJkNTQ2ODBhODEzOWJiLi5jZGY0MDVhMWNjMGIzOTA4MjY5NmM1N2Y4
ZjdhMjIwNjAwNzkxZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmgKQEAgLTczLDYgKzczLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHV0SW1hZ2Uo
Y29uc3QgSW50U2l6ZSYsIFBhc3NSZWZQdHI8SW1hZ2U+KTsKICAgICBjb25zdCBSZW5kZXJPYmpl
Y3RTaXplQ291bnRNYXAmIGNsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHM7IH0KIAor
ICAgIHZvaWQgcmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0OworCiAgICAgSGFzaENvdW50ZWRTZXQ8SW50U2l6ZT4gbV9zaXplczsgLy8gQSBjb3VudCBv
ZiBob3cgbWFueSB0aW1lcyBhIGdpdmVuIGltYWdlIHNpemUgaXMgaW4gdXNlLgogICAgIFJlbmRl
ck9iamVjdFNpemVDb3VudE1hcCBtX2NsaWVudHM7IC8vIEEgbWFwIGZyb20gUmVuZGVyT2JqZWN0
cyAod2l0aCBlbnRyeSBjb3VudCkgdG8gaW1hZ2Ugc2l6ZXMuCiAgICAgSGFzaE1hcDxJbnRTaXpl
LCBSZWZQdHI8SW1hZ2U+ID4gbV9pbWFnZXM7IC8vIEEgY2FjaGUgb2YgSW1hZ2Ugb2JqZWN0cyBi
eSBpbWFnZSBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4
IDg5YTY0NjIzMTc3ZWU0ZWI4OGYwZmUyZDgwM2JiYzdhYjk2ZWNjNTUuLjQwYTA5NzI4OTViMDk2
ZGRmNGViOGY2ZWM4YmNjN2U4MmQyOTQyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1
ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZVNldC5oIgogI2luY2x1ZGUgIlN0eWxlUGVu
ZGluZ0ltYWdlLmgiCkBAIC0xNjIsNiArMTYzLDE5IEBAIFBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRW
YWx1ZT4gQ1NTSW1hZ2VTZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDU1NJbWFnZVNldFZhbHVlKCp0aGlzKSk7CiB9CiAKK3ZvaWQgQ1NTSW1h
Z2VTZXRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0ltYWdl
U2V0VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpDU1MpOworICAgIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkVmVjdG9yKG1faW1h
Z2VzSW5TZXQpOworfQorCit2b2lkIENTU0ltYWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxlOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NJbWFnZVNldFZhbHVlOjpJbWFnZVdpdGhTY2Fs
ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNT
Uyk7CisgICAgaW5mby5hZGRTdHJpbmcoaW1hZ2VVUkwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VTZXRWYWx1ZS5oCmluZGV4IDk1MjcwYTY3ZGZiZDQ2YmJkMThhNTRiY2JhMzEyZDc0
NDAwOGI5YjcuLmE3OTFkMWVhMTc3ZmJmMWMzOGI2ZWViMTczNDk1OTViOGYxYzAzZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaApAQCAtNTgsMTIgKzU4LDE1IEBAIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgSW1hZ2VXaXRoU2NhbGUgewogICAgICAgICBTdHJpbmcgaW1hZ2VVUkw7
CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yOworICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKICAgICB9OwogCiAgICAgYm9vbCBoYXNGYWls
ZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPENTU0lt
YWdlU2V0VmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJvdGVjdGVk
OgogICAgIEltYWdlV2l0aFNjYWxlIGJlc3RJbWFnZUZvclNjYWxlRmFjdG9yKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAppbmRleCAwN2JkNGIzZTMyOGMwZmIyMmIyOTQ1ZWQ3
OGU1ZDk1M2M1ZjZiOWMzLi41YjE4YzBjMTM4ZjUwYmVhZWVkZjU4YTVhZDcxYWY1OTQ5N2E2NzBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0yNCwxMCArMjQsMTEgQEAK
ICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0j
aW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVBlbmRpbmdJbWFn
ZS5oIgogCkBAIC0xMjUsNCArMTI2LDExIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0ltYWdl
VmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiB1cmlWYWx1ZS5yZWxlYXNl
KCk7CiB9CiAKK3ZvaWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5
Q2xhc3NJbmZvPENTU0ltYWdlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkU3RyaW5nKG1fdXJsKTsKKyAg
ICAvLyBObyBuZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBv
ZiBSZW5kZXJBcmVuYS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmgKaW5kZXggNzUwNjNkMmZhOTViODQzNjRhY2RlNzg4NThhNjM5OGJhNWE5
ODEwZC4uOGM4MmYyYzY3ZGI0MzNhNzUxNzMzYzk2NzFkZTliOTE1MWU3YTk4YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogCisgICAgdm9pZCBy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBw
cm90ZWN0ZWQ6CiAgICAgQ1NTSW1hZ2VWYWx1ZShDbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdXJs
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAKaW5kZXggOGM0YmU2
ZDRiYzcwMGMyYjA2YjEwMzVmNzI1ODNjNzVhZDg5MTczMi4uMjY4MGYyZmQ2NDM3ZmQ2ZTQ3NzMx
OTVlMzQwZDRiNzc0MTYwMWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lu
aGVyaXRlZFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFs
dWUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q1NTSW5oZXJpdGVkVmFsdWUuaCIKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTMwLDQgKzMxLDkgQEAgU3RyaW5nIENTU0luaGVyaXRlZFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gImluaGVyaXQiOwogfQogCit2b2lkIENTU0luaGVyaXRlZFZhbHVl
OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTSW5oZXJpdGVkVmFsdWU+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1Mp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0
ZWRWYWx1ZS5oCmluZGV4IDVhYTkwNjM2NzcxNzMwNDY2OGIxMzQyYmI2ZDE3YmFkYjE2N2QwZTku
LjY4YzAwMWY1MzQyNjZhNGY3ZGFlYmIwZGVlNjI5ZDM1N2FlOWZkNDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCkBAIC0zNSw2ICszNSw4IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
Q1NTSW5oZXJpdGVkVmFsdWUoKQogICAgICAgICA6IENTU1ZhbHVlKEluaGVyaXRlZENsYXNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcAppbmRleCA4ZGUzZjMxODJjNWMxZWVk
ZTNhY2Q5MjAxMGQwN2U5YmU4MTliMjMyLi4zNmJkOTUwODBlYjVkNWI5ZDVjOWIwYjRkYjk2YmMx
ZjZmOWU0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcApAQCAtMjEs
NiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1
ZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzAsNCArMzEsOSBAQCBT
dHJpbmcgQ1NTSW5pdGlhbFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4g
ImluaXRpYWwiOwogfQogCit2b2lkIENTU0luaXRpYWxWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7Cisg
ICAgTWVtb3J5Q2xhc3NJbmZvPENTU0luaXRpYWxWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAppbmRleCBkZDg2ZDg0MjQx
YTY2ZmYyZjczN2FlOWEwMjFhNGJiYWM4MDhiNjAwLi5kNTIzMzQzZDNkMzQxNzM0MTMxM2E2YWU5
NWM2YTY2OTc0MzA4MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlh
bFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCkBAIC00
MSw2ICs0MSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNJbXBsaWNpdCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNJbXBsaWNpdDsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU0luaXRpYWxW
YWx1ZShib29sIGltcGxpY2l0KQogICAgICAgICA6IENTU1ZhbHVlKEluaXRpYWxDbGFzcykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcAppbmRleCA1MzEz
MmViMTkwZjVlYTI5Y2M3MzRkMGRkNWMyNzk0NWNiZmUxYmRjLi4yY2ZmZTUzNGM5NjkzZTQ3Y2Jh
MWQ4YmM1Y2Y3ZWIzZjExZmU1OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
TGluZUJveENvbnRhaW5WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVC
b3hDb250YWluVmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTTGluZUJv
eENvbnRhaW5WYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNs
dWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Miw0ICs3Myw5IEBAIFN0cmluZyBDU1NMaW5l
Qm94Q29udGFpblZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsK
IH0KIAordm9pZCBDU1NMaW5lQm94Q29udGFpblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBN
ZW1vcnlDbGFzc0luZm88Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCmluZGV4IGRkYzBjNjBmM2MyNDY1
YWZlMjM3MmRjM2Y0NDBkYzcxNDBlYzUyN2IuLmVlYjY0NzBjODM4NzdlYzZlZjJjOGRjMDQxODgw
MGY0ZDRjNWRkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29u
dGFpblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFs
dWUuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBMaW5lQm94Q29udGFpbiB2YWx1
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBM
aW5lQm94Q29udGFpbiBtX3ZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAppbmRleCBkNWJkZTgyYTFiNGRkOWI0MjU4OWMxYzVkMGY0YTY0ZDA5ZWZiYzkwLi40
NDBiN2MwOWVhYTMwYTNlNWJkYjNmZmFkOGQwMWQwZjE1ZGQ0OGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
b2xvci5oIgogI2luY2x1ZGUgIkNvdW50ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgog
I2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSR0JDb2xvci5oIgpAQCAtMTI1OCw0ICsxMjU5
LDQ4IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlOjpj
bG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIENTU1By
aW1pdGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTUHJp
bWl0aXZlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgeworICAgIGNh
c2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgorICAgIGNhc2UgQ1NTX1BB
UlNFUl9JREVOVElGSUVSOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKKyAgICBjYXNl
IENTU19TVFJJTkc6CisgICAgY2FzZSBDU1NfVVJJOgorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVT
KQorICAgIGNhc2UgQ1NTX1ZBUklBQkxFX05BTUU6CisjZW5kaWYKKyAgICAgICAgLy8gRklYTUU6
IGRldGVjdCBvdGhlciBjYXNlcyB3aGVuIG1fdmFsdWUgaXMgU3RyaW5nSW1wbCoKKyAgICAgICAg
aW5mby5hZGRTdHJpbmcobV92YWx1ZS5zdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU19DT1VOVEVSOgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLmNvdW50ZXIpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19SRUNUOgorICAgICAgICBpbmZvLmFkZE1lbWJl
cihtX3ZhbHVlLnJlY3QpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19RVUFEOgorICAg
ICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnF1YWQpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU19QQUlSOgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnBhaXIpOworICAg
ICAgICBicmVhazsKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURH
RVRfUkVHSU9OKQorICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CisgICAgICAgIGluZm8u
YWRkTWVtYmVyKG1fdmFsdWUucmVnaW9uKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBj
YXNlIENTU19TSEFQRToKKyAgICAgICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZS5zaGFwZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX0NBTEM6CisgICAgICAgIGluZm8uYWRkTWVtYmVy
KG1fdmFsdWUuY2FsYyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJy
ZWFrOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCA4NzA2OWMwNDMzMzk1NjMwNzc2ODZmODY3Mzk0MGVl
MWZjOWQ3MTM0Li5mZDA4MzJkMzQ3ODBiOTY5NDUwMDUxOTQyMGRhMTNlZWQxZjM3Yjc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMzA2LDYgKzMwNiw4IEBAIHB1
YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjbG9uZUZvckNTU09NKCkg
Y29uc3Q7CiAgICAgdm9pZCBzZXRDU1NPTVNhZmUoKSB7IG1faXNDU1NPTVNhZmUgPSB0cnVlOyB9
CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IGludCB2cy4gdW5zaWduZWQgb3Zl
cmxvYWRpbmcgaXMgdG9vIHN1YnRsZSB0byBkaXN0aW5ndWlzaCB0aGUgY29sb3IgYW5kIGlkZW50
aWZpZXIgY2FzZXMuCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUoaW50IGlkZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuY3BwCmluZGV4IGFiNzZjMzJiZGFhYzJjY2ZjOTIwMTIwNDdhZGI1YzM4
ZjdkMjQyNWIuLjAyMWFkZDI3MTg1MzM4MzhiN2FkMDQzMTRlMjg4NjhjOWJlZWUzYmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5LmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1
ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZC5oIgpAQCAtNjk0LDQgKzY5NSwxMCBAQCBib29sIENTU1Byb3BlcnR5Ojppc0luaGVyaXRl
ZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK3ZvaWQgQ1NTUHJvcGVydHk6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1Byb3Bl
cnR5PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3ZhbHVlKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCA3MTI0MTQ2
NjZiZmRlYTU0YmM5NmMxOTUzZjFkYjk2MDQwZTFkNmJjLi41N2EzMDEyNGY4MjhiMTZiYmQ2OTIy
ZDgwZDhkYmZkMGMyMmNmMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzAsNiAr
MzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87
CisKIGNsYXNzIENTU1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBDU1NQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50
ID0gZmFsc2UsIENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSUQgPSBDU1NQcm9wZXJ0eUludmFsaWQs
IGJvb2wgaW1wbGljaXQgPSBmYWxzZSkKQEAgLTU5LDYgKzYxLDggQEAgcHVibGljOgogICAgIHN0
YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQsIFRleHREaXJlY3Rpb24sIFdyaXRpbmdNb2RlKTsKICAgICBzdGF0aWMgYm9vbCBpc0lu
aGVyaXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogCisgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gTWFrZSBz
dXJlIHRoZSBmb2xsb3dpbmcgZml0cyBpbiA0IGJ5dGVzLiBSZWFsbHkuCiAgICAgdW5zaWduZWQg
bV9pZCA6IDE0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAppbmRleCBiMzZj
M2FkN2IyYzIxMmRhYjZjNzljYTg0YmM5NTAwMTY5ODNmZDljLi4wOTg0NzUyNzNmMzI2N2NjOGUw
NmNjZjU3NjU2NWUwZjRkNTAwMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVl
LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogCiAj
aW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwpAQCAtNjUsNCArNjYsMTEgQEAgdm9pZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBTdHkKICAgICAgICAg
bV9tYXNrLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKIH0KIAor
dm9pZCBDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5m
bzxDU1NSZWZsZWN0VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fb2Zm
c2V0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX21hc2spOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVm
bGVjdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKaW5kZXgg
NWNmYjIwZTI3Zjc1ODg0MDYxOTQxMjU4MGJjMDM0ZmVhNTdhNjllZi4uMWJkZmQ1ZmU3NmM3ZWYy
ODFmN2Y3Nzg5YjI5Y2VhYTQ0OGM3M2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1JlZmxlY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFs
dWUuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNl
U3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikg
Y29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTUmVmbGVjdFZhbHVlKENTU1JlZmxl
Y3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBv
ZmZzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG1hc2spCiAgICAgICAgIDogQ1NTVmFsdWUoUmVm
bGVjdENsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0
aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
Y3BwCmluZGV4IGRjZjdiYjI5YjU0NmM2ODRiZDk2YzdjZjZhYTE3NjhkZTRlYTEwMTAuLmZlODI3
OGFiYzE3MWQ4NTE4MDAyMzE3M2EwYzU4MGVmMDVlYWM1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw2ICszNiwxMSBAQCBTdHJpbmcgQ1NT
TGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuICJsaW5lYXIiOwogfQogCit2b2lkIENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJ
bmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NMaW5lYXJUaW1pbmdGdW5jdGlv
blZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Q1NTKTsKK30KKwogU3RyaW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6
Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRleHQoImN1YmljLWJlemllcigi
KTsKQEAgLTQ5LDYgKzU1LDExIEBAIFN0cmluZyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9u
VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCit2b2lk
IENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZT4gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisK
IFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25z
dAogewogICAgIFN0cmluZyB0ZXh0KCJzdGVwcygiKTsKQEAgLTU5LDQgKzcwLDkgQEAgU3RyaW5n
IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAg
cmV0dXJuIHRleHQ7CiB9CiAKK3ZvaWQgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpyZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZh
bHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Q1NTKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXggZTU0NGM1ZmYwMGMwZDZmYzMxOTdmNDY4NWE4
YTE1MjEzZGI0NThhMC4uM2ViNGIyMjk1YWI5NzYzOTJmZGRmMmU1MGMyOWZkYzI2YmU1MGQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC00MCw2
ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAK
KyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSgpCiAg
ICAgICAgIDogQ1NTVmFsdWUoTGluZWFyVGltaW5nRnVuY3Rpb25DbGFzcykKQEAgLTYxLDYgKzYz
LDggQEAgcHVibGljOgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KICAg
ICBkb3VibGUgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICB2b2lkIHJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6
CiAgICAgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKGRvdWJsZSB4MSwgZG91Ymxl
IHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKICAgICAgICAgOiBDU1NWYWx1ZShDdWJpY0Jlemll
clRpbWluZ0Z1bmN0aW9uQ2xhc3MpCkBAIC04OSw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NT
U3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAg
ICAgICAgOiBDU1NWYWx1ZShTdGVwc1RpbWluZ0Z1bmN0aW9uQ2xhc3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcAppbmRleCAyYzJjNDRkMjdhYjU2OGM2YzQ2
YmUzM2U1NjI5NjE1NTUwYTBmYWQzLi45YjBjOTVkOTMzNmFmNjAxNmJjMGRmN2JiNWFjZDk3MjE4
MzhmMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NVbmlj
b2RlUmFuZ2VWYWx1ZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcs
NCArMzgsOSBAQCBTdHJpbmcgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBj
b25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQ1NTVW5pY29kZVJhbmdlVmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NVbmljb2RlUmFuZ2VWYWx1
ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNT
Uyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFu
Z2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKaW5k
ZXggNGZlMWRiNzdjYjMyNjY5MTUwY2RlNTA3OTdmNDFjMzUzZjliNjc2Yi4uZDUwZjViNjgxNWM3
Yjc2ZGViYTA1MDFmOTY4NDRjMmRjZjE2MGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vu
aWNvZGVSYW5nZVZhbHVlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5n
IGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NVbmlj
b2RlUmFuZ2VWYWx1ZShVQ2hhcjMyIGZyb20sIFVDaGFyMzIgdG8pCiAgICAgICAgIDogQ1NTVmFs
dWUoVW5pY29kZVJhbmdlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA1ZmZiMTU2
N2U4ODU4OGRhNzU1NjZjZjg1Zjk0NTYyZDkwOWNlOTQ3Li4wYTg0YWNiZWM1YzQxOTkwN2QwZjdh
MDA0NWVlOGU1OWVhYjNmMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTUyLDYgKzUy
LDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRGZWF0
dXJlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJTaGFkb3dWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHUGFp
bnQuaCIKQEAgLTc3LDYgKzc4LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjc3NUZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9jc3NUZXh0OyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAg
IHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFRleHRDbG9uZUNTU1ZhbHVlPiBpbmZvKG1lbW9y
eU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAg
aW5mby5hZGRTdHJpbmcobV9jc3NUZXh0KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgVGV4dENs
b25lQ1NTVmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KSAKICAg
ICAgICAgOiBDU1NWYWx1ZShjbGFzc1R5cGUsIC8qaXNDU1NPTVNhZmUqLyB0cnVlKQpAQCAtMTQx
LDYgKzE0OCwxMjggQEAgYm9vbCBDU1NWYWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291
cmNlcygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIENTU1ZhbHVlOjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAor
eworICAgIGlmIChtX2lzVGV4dENsb25lKSB7CisgICAgICAgICBBU1NFUlQoaXNDU1NPTVNhZmUo
KSk7CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFRleHRDbG9uZUNTU1ZhbHVlKj4odGhpcykt
PnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSB8fCBpc1N1YnR5cGVF
eHBvc2VkVG9DU1NPTSgpKTsKKyAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2FzZSBQ
cmltaXRpdmVDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUHJpbWl0aXZlVmFs
dWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8p
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbWFnZUNsYXNzOgorICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBDU1NJbWFnZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3Vyc29y
SW1hZ2VDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Vyc29ySW1hZ2VWYWx1
ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENhbnZhc0NsYXNzOgorICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBDU1NDYW52YXNWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENyb3Nz
ZmFkZUNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NDcm9zc2ZhZGVWYWx1ZSo+
KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIExpbmVhckdyYWRpZW50Q2xhc3M6CisgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBD
U1NSYWRpYWxHcmFkaWVudFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3ViaWNCZXpp
ZXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NDdWJp
Y0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBMaW5l
YXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5l
YXJUaW1pbmdGdW5jdGlvblZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RlcHNUaW1p
bmdGdW5jdGlvbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NTdGVwc1RpbWlu
Z0Z1bmN0aW9uVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9y
eU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBc3BlY3RSYXRpb0NsYXNz
OgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NBc3BlY3RSYXRpb1ZhbHVlKj4odGhpcykt
PnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQm9yZGVySW1hZ2VTbGljZUNsYXNzOgorICAgICAgICBzdGF0aWNf
Y2FzdDxjb25zdCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBGb250RmVhdHVyZUNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBGb250RmVh
dHVyZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmpl
Y3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRm9udENsYXNzOgorICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBGb250VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBGb250
RmFjZVNyY0NsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NGb250RmFjZVNyY1Zh
bHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZv
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRnVuY3Rpb25DbGFzczoKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTRnVuY3Rpb25WYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNl
IEluaGVyaXRlZENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NJbmhlcml0ZWRW
YWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEluaXRpYWxDbGFzczoKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTSW5pdGlhbFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
UmVmbGVjdENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NSZWZsZWN0VmFsdWUq
Pih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaGFkb3dDbGFzczoKKyAgICAgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgU2hhZG93VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBVbmljb2RlUmFu
Z2VDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVW5pY29kZVJhbmdlVmFsdWUq
Pih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBMaW5lQm94Q29udGFpbkNsYXNzOgorICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBDU1NMaW5lQm94Q29udGFpblZhbHVlKj4odGhpcyktPnJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNhc2UgQ2FsY3VsYXRpb25DbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NT
Q2FsY1ZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmpl
Y3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYgRU5B
QkxFKENTU19TSEFERVJTKQorICAgIGNhc2UgV2ViS2l0Q1NTU2hhZGVyQ2xhc3M6CisgICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVlKj4odGhpcyktPnJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOwor
I2VuZGlmCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgY2FzZSBWYXJpYWJsZUNsYXNz
OgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYXJpYWJsZVZhbHVlKj4odGhpcyktPnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6Cisg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFNWR0NvbG9yKj4odGhpcyktPnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgU1ZHUGFpbnRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHUGFpbnQqPih0
aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBXZWJLaXRDU1NTVkdEb2N1bWVudENsYXNzOgorICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlKj4odGhpcyktPnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0
dXJuOworI2VuZGlmCisgICAgY2FzZSBWYWx1ZUxpc3RDbGFzczoKKyAgICAgICAgc3RhdGljX2Nh
c3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Kj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDU1NfSU1B
R0VfU0VUKQorICAgIGNhc2UgSW1hZ2VTZXRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgQ1NTSW1hZ2VTZXRWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
bWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorI2lmIEVOQUJMRShD
U1NfRklMVEVSUykKKyAgICBjYXNlIFdlYktpdENTU0ZpbHRlckNsYXNzOgorICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyNlbmRp
ZgorICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9
CisKIFN0cmluZyBDU1NWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNUZXh0
Q2xvbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggODNjMmU4ZTU1NjYzNjZjMmNiMThjNjA2
YTU0MDc3NTRlYTAwZGIwYi4uMDU3MmUyYzEyYjAzZmIyYjJlODQ4ZDM0NWEzNTBmYzM5ZmZkMGZi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogY2xhc3MgU3R5bGVTaGVldENvbnRl
bnRzOwogICAgIAogLy8gRklYTUU6IFRoZSBjdXJyZW50IENTU1ZhbHVlIGFuZCBzdWJjbGFzc2Vz
IHNob3VsZCBiZSB0dXJuZWQgaW50byBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZSkuCkBAIC0x
MTksNiArMTIwLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3Vi
cmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKKwogcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBDbGFzc1R5cGVCaXRzID0gNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXgg
YjhkMzZhNDE5YTU2YTc0MzlkNDNhNGE4M2QzZDA2MWIwZGRhZjI5OS4uMmVmM2Q1MTZkM2UyMDZj
MzU3ZGY1ZWMyM2FjNTg3ODdiYTBkN2Q4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5j
cHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKIAogI2luY2x1
ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xOTYsNCArMTk3LDEw
IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6OmNsb25lRm9yQ1NTT00o
KSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTVmFsdWVMaXN0KCp0aGlzKSk7CiB9
CiAKK3ZvaWQgQ1NTVmFsdWVMaXN0OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm88Q1NTVmFsdWVMaXN0PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZFZlY3RvcihtX3ZhbHVl
cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3Qu
aAppbmRleCA0MGJiNDM3OTVmYThkNDY1ZTAzMjZjZDBkYzAxYWU4ZTEyYjJmOTQyLi5lOTg4ZDZj
MmU0ZGQ3ZDJlYmU3YzM4ZDcxMWNmYzdmNjMyZDUxNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVl
TGlzdC5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRyPENT
U1ZhbHVlTGlzdD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0ZWQ6
CiAgICAgQ1NTVmFsdWVMaXN0KENsYXNzVHlwZSwgVmFsdWVMaXN0U2VwYXJhdG9yKTsKICAgICBD
U1NWYWx1ZUxpc3QoY29uc3QgQ1NTVmFsdWVMaXN0JiBjbG9uZUZyb20pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NWYXJpYWJsZVZhbHVlLmgKaW5kZXggMmM1YjY2YTZiOTQzYzg5OWQ3NjUzY2M5MzEzNTk4
N2IyZmVjNDlkZS4uZTZmMDZkMDAyYTJhYTE1OTc1ZTUzYTZlOGIyNTRmZDMzOGNmNTU4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgog
I2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDgsMTMgQEAgcHVibGljOgogICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogICAg
IGNvbnN0IFN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKKyAgICB2
b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1Zhcmlh
YmxlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpDU1MpOworICAgICAgICBpbmZvLmFkZFN0cmluZyhtX25hbWUpOworICAgICAgICBpbmZv
LmFkZFN0cmluZyhtX3ZhbHVlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgQ1NTVmFyaWFibGVW
YWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAg
ICAgIDogQ1NTVmFsdWUoVmFyaWFibGVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVy
ZVZhbHVlLmNwcAppbmRleCA2MmMzOTYwNjg1OThhZjkxNTgwZjU1ZTVhOTRhODY4YWE1MWJmMzJj
Li5mN2JiN2M4MDYwNDFhZjM5ODg3NmViMzNiODZhNTgxOTZmNjhiMmI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAi
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw0ICs1MCwxMCBAQCBTdHJpbmcgRm9u
dEZlYXR1cmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKIH0KIAordm9pZCBGb250RmVhdHVyZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sK
KyAgICBNZW1vcnlDbGFzc0luZm88Rm9udEZlYXR1cmVWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRTdHJp
bmcobV90YWcpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZl
YXR1cmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaAppbmRl
eCA3ZDVlMDM2YzA4YTYxODM5NTg1NTY3Mjc1MGE2MWU1NDdhZDVjNWViLi4yOGQ4OWY0MjM2OWIw
OGJlYjE0MTY1YjlhYmVhNmFmZmMzOTgwZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVy
ZVZhbHVlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgIGludCB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0Owog
CisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OworCiBwcml2YXRlOgogICAgIEZvbnRGZWF0dXJlVmFsdWUoY29uc3QgU3RyaW5nJiwg
aW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcAppbmRleCA4ODQxYTc5OTM1ZTJlNWEzMzQx
YTlmMzQ1YTA2NjQzNWEwMmQ1MTU1Li42NTZjN2Q4MjMwYzQ0ZjI1MzJiNmUzY2U3M2NhNmRjMTk0
MjBkZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcApAQCAtMjIsNiArMjIsNyBAQAogCiAj
aW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
KyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNjUsNCAr
NjYsMTUgQEAgU3RyaW5nIEZvbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0
dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCit2b2lkIEZvbnRWYWx1ZTo6cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0
Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPEZvbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIoc3R5bGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHZhcmlh
bnQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHdlaWdodCk7CisgICAgaW5mby5h
ZGRJbnN0cnVtZW50ZWRNZW1iZXIoc2l6ZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobGluZUhlaWdodCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoZmFtaWx5KTsK
K30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCmluZGV4IDVmODMzNjkyMTA1NWMzOThiMTUyYzdj
YjAzNTdjYmM3ZTc3ZWQ5M2EuLjAzYTYxMjY4YTU4NzQ3MGZjYjhhMjExMmE5ZjBiYzlkMGFhZTg0
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gc3R5bGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB2
YXJpYW50OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gd2VpZ2h0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFeHAuY3BwCmluZGV4IGExMTg1NWJjMGE5YWJmNzdiMDA3NzBmNjUxMTgy
MDQ4NTM2YzFhZTguLmViOTgwNTM5MDhjZmU4OGM5OTNhNWE3YzllNjU2MGRmNTBiYmU0NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKQEAgLTExNCw2ICsxMTQsNyBAQCB2b2lk
IE1lZGlhUXVlcnlFeHA6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0CiAgICAgTWVtb3J5Q2xhc3NJbmZvPE1lZGlhUXVlcnlFeHA+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwog
ICAgIGluZm8uYWRkU3RyaW5nKG1fbWVkaWFGZWF0dXJlKTsKICAgICBpbmZvLmFkZFN0cmluZyht
X3NlcmlhbGl6YXRpb25DYWNoZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV92
YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDhhMjQ4NTk0ZDYyMzFj
M2IwZDM1M2YyMzQxZWQxMDM3YWU0NDdiMDYuLjczYTQzMzJlOGE5ZDFmNDExMTM2MjFjNTZlNWEy
Mjg1YmMwNmEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xMzUsNyArMTM1LDggQEAgdm9pZCBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU8KIHsKICAgICBNZW1vcnlDbGFzc0luZm88UHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q1NTKTsKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Byb3BlcnR5U2V0
KTsKLSAgICAvLyBGSVhNRTogYWRkIGluZm8uYWRkSW5zdHJ1bWVudGVkSGFzTWFwKG1fY3Nzb21D
U1NWYWx1ZUNsb25lcykgd2hlbiBDU1NWYWx1ZSBpcyBpbnN0cnVtZW50ZWQuCisgICAgaWYgKG1f
Y3Nzb21DU1NWYWx1ZUNsb25lcykKKyAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNYXBFbnRy
aWVzKCptX2Nzc29tQ1NTVmFsdWVDbG9uZXMpOwogfQogCiB1bnNpZ25lZCBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb246Omxlbmd0aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2hhZG93VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVl
LmNwcAppbmRleCAxNGM3Y2RhOGM1NzBiY2JkN2ZiNzU2ZmI1ZWY5YjliYWY5MDEzYmI0Li5kYjY0
NjY5MmVhYWU2MjRlZGNlNGJmY2MxZWY4Mzg4MzkyZTk3ZDE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFk
b3dWYWx1ZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5oIgog
CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC03Nyw0ICs3OCwxNSBAQCBTdHJpbmcgU2hhZG93VmFsdWU6OmN1c3RvbUNzc1Rl
eHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCit2b2lkIFNoYWRvd1ZhbHVlOjpyZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U2hhZG93VmFsdWU+IGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKHgpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVy
KHkpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGJsdXIpOworICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKHNwcmVhZCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIoc3R5bGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbG9yKTsKK30KKwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAppbmRleCAyMTU0N2E1NzExZWUzZWU4ZjU0YjVjZDlm
NWZhOGI2NTk2ZjQyOTNmLi5mMmQ4ZTZmNmY5OGJmNmZmZjYxNGJjMzUwNDU2MmRhMjMyZDAwY2Q4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAgICAgUmVmUHRy
PENTU1ByaW1pdGl2ZVZhbHVlPiB4OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geTsK
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggMWU3OGFhYjY2ZTUzYjJjZTgzYTA3MmI1MDQxZjVmN2Nj
M2Y2MTRjYi4uMzdkMzk3MWI0MTMzODg1MGZiODQxY2ExZGJkYWU2YzAxOGI5OGVlZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMTA5Miw2ICsxMDkyLDkgQEAg
dm9pZCBTdHlsZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICAgICAgaW5mby5hZGRWZWN0b3JQdHIobV9tdXRh
YmxlUHJvcGVydHlWZWN0b3IpOwogICAgIGVsc2UKICAgICAgICAgaW5mby5hZGRSYXdCdWZmZXIo
bV9wcm9wZXJ0aWVzLCBtX2FycmF5U2l6ZSAqIHNpemVvZihDU1NQcm9wZXJ0eSkpOworICAgIHVu
c2lnbmVkIGNvdW50ID0gcHJvcGVydHlDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBjb3VudDsgKytpKQorICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihwcm9w
ZXJ0eUF0KGkpKTsKIH0KIAogLy8gU2VlIHRoZSBmdW5jdGlvbiBhYm92ZSBpZiB5b3UgbmVlZCB0
byB1cGRhdGUgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBkZDJk
NWY5Nzg2Zjg4YTJmMzQ0ZmEwZTEyNTk3MjNkOTM0NDMyMjgzLi42YmRkNmViODI0ODFiN2M2YzM3
MDQ3YTk1NTM3MDY4NDBhYTM5ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CkBAIC01NjM3LDYgKzU2MzcsMjQgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGluZ1Jl
c291cmNlcygpCiAjZW5kaWYKIH0KIAordm9pZCBTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVy
dGllczo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U3R5bGVSZXNvbHZlcjo6TWF0Y2hlZFBy
b3BlcnRpZXM+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHByb3BlcnRpZXMpOwor
fQorCit2b2lkIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtOjpyZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAor
eworICAgIE1lbW9yeUNsYXNzSW5mbzxTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVydGllc0Nh
Y2hlSXRlbT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRWZWN0b3IobWF0Y2hlZFByb3BlcnRp
ZXMpOworfQorCit2b2lkIE1lZGlhUXVlcnlSZXN1bHQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJ
bmZvPE1lZGlhUXVlcnlSZXN1bHQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1f
ZXhwcmVzc2lvbik7Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlD
bGFzc0luZm88U3R5bGVSZXNvbHZlcj4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNTUyk7CkBAIC01NjQ3LDE4ICs1NjY1LDIzIEBAIHZvaWQgU3R5
bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3VuY29tbW9u
QXR0cmlidXRlUnVsZVNldCk7CiAgICAgaW5mby5hZGRIYXNoTWFwKG1fa2V5ZnJhbWVzUnVsZU1h
cCk7CiAgICAgaW5mby5hZGRIYXNoTWFwKG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7CisgICAg
aW5mby5hZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMobV9tYXRjaGVkUHJvcGVydGllc0NhY2hlKTsK
ICAgICBpbmZvLmFkZFZlY3RvcihtX21hdGNoZWRSdWxlcyk7CiAKLSAgICAvLyBGSVhNRTogSW5z
dHJ1bWVudCBTdGF0aWNDU1NSdWxlTGlzdCBhbmQgYWRkIG1fcnVsZUxpc3QgaGVyZS4KKyAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3J1bGVMaXN0KTsKICAgICBpbmZvLmFkZEhhc2hN
YXAobV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKTsKLSAgICBpbmZvLmFkZFZlY3RvcihtX3ZpZXdw
b3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
TWFwVmFsdWVzKG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcyk7CisgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9saW5lSGVpZ2h0VmFsdWUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
VmVjdG9yKG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cyk7CiAgICAgaW5mby5h
ZGRIYXNoTWFwKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOwotICAgIGluZm8uYWRkSGFz
aFNldChtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWFwRW50cmllcyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwKTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZEhhc2hTZXQobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0KTsKICNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpICYmIEVOQUJMRShTVkcpCiAgICAgaW5mby5hZGRIYXNoTWFwKG1f
cGVuZGluZ1NWR0RvY3VtZW50cyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVEKQog
ICAgIGluZm8uYWRkSGFzaE1hcChtX3Njb3BlZEF1dGhvclN0eWxlcyk7CisgICAgaW5mby5hZGRJ
bnN0cnVtZW50ZWRNYXBFbnRyaWVzKG1fc2NvcGVkQXV0aG9yU3R5bGVzKTsKICAgICBpbmZvLmFk
ZFZlY3RvcihtX3Njb3BlU3RhY2spOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5oCmluZGV4IGUyYWViMmMwMDFlNzcyNWRlM2Y5Y2RhOTVmYzhhMjEwNWYxOWZiZjMuLmM5Zjhk
Y2MyZDgwYTcwOGI5YTJmMTIzZmRmMTRjNWQzMGU2ZTJhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuaApAQCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Jlc3Vs
dChyZXN1bHQpCiAgICAgewogICAgIH0KKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIE1lZGlhUXVlcnlFeHAgbV9leHByZXNzaW9uOwog
ICAgIGJvb2wgbV9yZXN1bHQ7CkBAIC0zMjAsNiArMzIxLDcgQEAgcHJpdmF0ZToKIAogICAgIHN0
cnVjdCBNYXRjaGVkUHJvcGVydGllcyB7CiAgICAgICAgIE1hdGNoZWRQcm9wZXJ0aWVzKCkgOiBw
b3NzaWJseVBhZGRlZE1lbWJlcigwKSB7IH0KKyAgICAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gcHJvcGVydGllczsKICAgICAgICAgdW5pb24gewpAQCAtNDQ3LDYgKzQ0
OSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZU1hdGNoZWRQcm9w
ZXJ0aWVzSGFzaChjb25zdCBNYXRjaGVkUHJvcGVydGllcyosIHVuc2lnbmVkIHNpemUpOwogICAg
IHN0cnVjdCBNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSB7CisgICAgICAgIHZvaWQgcmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogICAgICAgICBWZWN0b3I8TWF0
Y2hlZFByb3BlcnRpZXM+IG1hdGNoZWRQcm9wZXJ0aWVzOwogICAgICAgICBNYXRjaFJhbmdlcyBy
YW5nZXM7CiAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVuZGVyU3R5bGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAppbmRleCAyOTE2ZGMyZDE1M2Jm
M2UyNDRiY2Y2NDA5MTI1OWZlNDMyZTAyMGVlLi43MWQ3YjlmOWZiYzM4MTEyODQ0YWNlNTUzNjg2
YmI4NWM1Yzg5ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmls
dGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1
ZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNpbmNs
dWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCkBAIC0xMTAsNiArMTExLDEyIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFs
dWU+IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU0ZpbHRlclZhbHVlKCp0aGlzKSk7CiB9CiAKK3ZvaWQg
V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5m
bzxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NTVmFsdWVMaXN0OjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVl
LmgKaW5kZXggYTM0ZDU3NDVjNjVjOTY3NzNlMTZjZTA3M2IyMThiOWRjOGQxNGI4Zi4uMDhiM2U5
ZjlhNTAyOWE4MWQ1Nzg1ODNkOTY0ZDU4MzE3YjJkZmYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0ZpbHRlclZhbHVlLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogCiAgICAg
UGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0Owog
CisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU0ZpbHRlclZhbHVlKEZpbHRlck9wZXJh
dGlvblR5cGUpOwogICAgIFdlYktpdENTU0ZpbHRlclZhbHVlKGNvbnN0IFdlYktpdENTU0ZpbHRl
clZhbHVlJiBjbG9uZUZyb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktp
dENTU1NWR0RvY3VtZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NW
R0RvY3VtZW50VmFsdWUuY3BwCmluZGV4IDQ5MDI1MDQ5NjZhYzMyY2JjYzcyZjAxMGU3ZDUyOTg5
ZDE3YWQ3MDQuLjQ5MzVmYjAxNGUwMzYzYTc3ZGExODZkMTUzNjk2YzhmM2Q0ZDBmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsNiArNjQs
MTMgQEAgU3RyaW5nIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBj
b25zdAogICAgIHJldHVybiBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdXJsKTsKIH0KIAordm9p
ZCBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Uo
TWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlD
bGFzc0luZm88V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRTdHJpbmco
bV91cmwpOworICAgIC8vIEZJWE1FOiBhZGQgbV9kb2N1bWVudCB3aGVuIGNhY2hlZCByZXNvdXJj
ZXMgYXJlIGluc3RydW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NTVkdEb2N1bWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9j
dW1lbnRWYWx1ZS5oCmluZGV4IGNiMDNmNTZlZTVjM2VjNGEwNzhiNTMxODllNzc1NTc1MDVmOGQ3
MzguLjk2YmNjOGMzMGM0OTYwMWI2NzJjMTg3NWM2ZDIwMjI0MjMwZTU3Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaApAQCAtNDUsNiArNDUs
OCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3Vy
bDsgfQogICAgIGJvb2wgbG9hZFJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFJlcXVl
c3RlZDsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU1NWR0RvY3VtZW50VmFs
dWUoY29uc3QgU3RyaW5nJiB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
V2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1No
YWRlclZhbHVlLmNwcAppbmRleCA4NjUxNzU4ZWQ2Yzk5MTdmMDIyNDkxNzE1ZTZiZDU1NmI2OWM1
MjY3Li5iNmQxZGVhYzg1OWY0YzIyMWQ3Yjk4NzRiZTk1ZmQ3ZmNhZTNiMzk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5o
IgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJTdHlsZVBlbmRp
bmdTaGFkZXIuaCIKIApAQCAtNzksNiArODAsMTIgQEAgU3RyaW5nIFdlYktpdENTU1NoYWRlclZh
bHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gInVybCgiICsgcXVvdGVDU1NV
UkxJZk5lZWRlZChtX3VybCkgKyAiKSI7CiB9CiAKK3ZvaWQgV2ViS2l0Q1NTU2hhZGVyVmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxXZWJLaXRDU1NTaGFkZXJWYWx1
ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNT
Uyk7CisgICAgaW5mby5hZGRTdHJpbmcobV91cmwpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAppbmRleCBmZDk1YmM2M2NmN2FjNTA5Y2UzNTlkMDli
OGZiYzkwZTMxOWIxNGI0Li5jNDMyMDFjYTJhNGExNjRhYjkzNjNkNzk0NjJlNDI3NTRjMmZjMmNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtNTAsNiAr
NTAsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisg
ICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNv
bnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU1NoYWRlclZhbHVlKGNvbnN0IFN0cmluZyYg
dXJsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5j
cHAKaW5kZXggODdkZWQ3ZGE2YjU2NjI3ZDUwN2UxY2IwNWNiMzA2MGRhODAwMmE5Yi4uMWNiNzNm
YzA5ZDQwOWJmNzcyY2Q3YjQ2ZjQwNmQ5NzVkZjYzOTIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlz
dC5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xMDQsNCArMTA1LDEwIEBAIFBhc3NSZWZQdHI8V2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU+IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpjbG9uZUZvckNT
U09NKCkgY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZSgqdGhpcykpOwogfQogCit2b2lkIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAg
IENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdElu
Zm8pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5oCmluZGV4IDVmYzRmN2Q2YmZkNWQ0ZDY3NmJhZDFkMDgyZDZiNDVkOTQ5Yjk3OTIuLmZkMTE3
ZjIzMjk0YmRhNTIxODJiMjNhZTYwNTZiM2I3M2Q5MThkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCkBAIC03NCw2ICs3NCw4IEBAIHB1YmxpYzoK
ICAgICAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBjbG9uZUZvckNT
U09NKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSk7CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUoY29uc3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUmIGNsb25lRnJvbSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDdlOWYzMGQ5Nzg0MWNk
MTM3MjIzMTczOTczNmRiYjIzNjI3YmUwYzYuLjkyMmQ0Yjk2M2MwN2Q2NzljMGMwNWVjOTM0OTE4
NjM4MGZhZjkxM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVt
ZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRp
b24uY3BwCkBAIC0zOCw5ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjphZGRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9iamVj
dFR5cGUgb2JqZWN0VHlwZSkKIHsKLSAgICBpZiAoc3RyaW5nLmlzTnVsbCgpIHx8IHZpc2l0ZWQo
c3RyaW5nLmltcGwoKSkpCisgICAgYWRkU3RyaW5nKHN0cmluZy5pbXBsKCksIG9iamVjdFR5cGUp
OworfQorCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkU3RyaW5nKGNvbnN0IFN0cmlu
Z0ltcGwqIHN0cmluZ0ltcGwsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkKK3sKKyAgICBpZiAoIXN0
cmluZ0ltcGwgfHwgdmlzaXRlZChzdHJpbmdJbXBsKSkKICAgICAgICAgcmV0dXJuOwotICAgIGNv
dW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBzdHJpbmcuaW1wbCgpLT5zaXplSW5CeXRlcygpKTsK
KyAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlwZSwgc3RyaW5nSW1wbC0+c2l6ZUluQnl0ZXMo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1v
cnlJbnN0cnVtZW50YXRpb24uaAppbmRleCBhZTU3NDhkYzFhMDJhMzc5MTE3MDY2YTZiY2RmYzZm
ZjI3ODgzYjRkLi5kNDI3ZDdlNDA1ZWE2ZDYzMjdjZmE3MGFmMTVjMzM4NmI4YWUwYTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC05MiwxMSArOTIs
MTMgQEAgcHJpdmF0ZToKICAgICAgICAgT3duaW5nVHJhaXRzPFQ+OjphZGRPYmplY3QodGhpcywg
dCwgb3duZXJPYmplY3RUeXBlKTsKICAgICB9CiAgICAgdm9pZCBhZGRTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgT2JqZWN0VHlwZSk7CisgICAgdm9pZCBhZGRTdHJpbmcoY29uc3QgU3RyaW5nSW1wbCos
IE9iamVjdFR5cGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2b2lkIGFkZEluc3RydW1l
bnRlZE9iamVjdChjb25zdCBUJiB0LCBPYmplY3RUeXBlIG93bmVyT2JqZWN0VHlwZSkgeyBPd25p
bmdUcmFpdHM8VD46OmFkZEluc3RydW1lbnRlZE9iamVjdCh0aGlzLCB0LCBvd25lck9iamVjdFR5
cGUpOyB9Ci0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSGFz
aE1hcChjb25zdCBIYXNoTWFwVHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBm
YWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hT
ZXQoY29uc3QgSGFzaFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFs
c2UpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uVHlwZT4gdm9pZCBhZGRJbnN0
cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiwgT2JqZWN0VHlwZSwgYm9v
bCBjb250ZW50T25seSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4g
dm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmLCBPYmplY3RUeXBl
KTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRN
YXBWYWx1ZXMoY29uc3QgTWFwVHlwZSYsIE9iamVjdFR5cGUpOwogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhhc2hT
ZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRWZWN0b3IoY29uc3QgVmVjdG9yVHlw
ZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7CiAgICAgdm9pZCBhZGRS
YXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3QmIGJ1ZmZlciwgT2JqZWN0VHlwZSBvd25lck9iamVj
dFR5cGUsIHNpemVfdCBzaXplKQpAQCAtMTgwLDEwICsxODIsMTMgQEAgcHVibGljOgogCiAgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhhc2hNYXAoY29uc3QgSGFz
aE1hcFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSGFzaE1hcChtYXAs
IG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5
cGU+IHZvaWQgYWRkSGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5hZGRIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRIYXNoQ291bnRlZFNldChj
b25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNo
U2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBI
YXNoU2V0VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBl
JiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rp
b24oc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZl
Y3RvclR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkVmVjdG9yKGNvbnN0IFZlY3RvclR5cGUmIHZl
Y3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlv
bih2ZWN0b3IsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRWZWN0b3JQdHIoY29uc3QgT3duUHRyPFZl
Y3RvclR5cGU+JiB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1l
bnRlZENvbGxlY3Rpb24oKnZlY3RvciwgbV9vYmplY3RUeXBlLCBmYWxzZSk7IH0KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRWZWN0b3JQdHIo
Y29uc3QgVmVjdG9yVHlwZSogY29uc3QmIHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlv
bi0+YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbigqdmVjdG9yLCBtX29iamVjdFR5cGUsIGZhbHNl
KTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRl
ZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5hZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKG1hcCwgbV9vYmplY3RUeXBlKTsgfQorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhj
b25zdCBNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3RydW1l
bnRlZE1hcFZhbHVlcyhtYXAsIG1fb2JqZWN0VHlwZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFkZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0
VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRMaXN0SGFzaFNldChzZXQs
IG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlw
ZT4gdm9pZCBhZGRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9yKSB7IG1fbWVtb3J5SW5z
dHJ1bWVudGF0aW9uLT5hZGRWZWN0b3IodmVjdG9yLCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRkVmVjdG9yUHRyKGNvbnN0
IFZlY3RvclR5cGUqIGNvbnN0IHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRk
VmVjdG9yKCp2ZWN0b3IsIG1fb2JqZWN0VHlwZSwgZmFsc2UpOyB9CkBAIC0xOTEsNiArMTk2LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpIHsg
bV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZFN0cmluZyhzdHJpbmcsIG1fb2JqZWN0VHlwZSk7
IH0KICAgICB2b2lkIGFkZFN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZykgeyBtX21l
bW9yeUluc3RydW1lbnRhdGlvbi0+YWRkU3RyaW5nKChjb25zdCBTdHJpbmcmKXN0cmluZywgbV9v
YmplY3RUeXBlKTsgfQorICAgIHZvaWQgYWRkU3RyaW5nKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmlu
ZykgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkU3RyaW5nKHN0cmluZywgbV9vYmplY3RU
eXBlKTsgfQogCiBwcml2YXRlOgogICAgIE1lbW9yeU9iamVjdEluZm8qIG1fbWVtb3J5T2JqZWN0
SW5mbzsKQEAgLTMwMCw2ICszMDYsMjQgQEAgdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFk
ZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUmIGNvbGwKICAgICAg
ICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KCppLCBvd25lck9iamVjdFR5cGUpOwogfQogCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4KK3ZvaWQgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRJ
bnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0VHlwZSBvd25l
ck9iamVjdFR5cGUpCit7CisgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gbWFwLmVuZCgpOworICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3Ig
aSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAgIGFkZEluc3RydW1lbnRl
ZE9iamVjdChpLT5maXJzdCwgb3duZXJPYmplY3RUeXBlKTsKKyAgICAgICAgYWRkSW5zdHJ1bWVu
dGVkT2JqZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKKyAgICB9Cit9CisKK3RlbXBs
YXRlIDx0eXBlbmFtZSBNYXBUeXBlPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZElu
c3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBtYXAsIE9iamVjdFR5cGUgb3duZXJP
YmplY3RUeXBlKQoreworICAgIHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1hcC5lbmQoKTsKKyAgICBmb3IgKHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0X2l0ZXJhdG9yIGkg
PSBtYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKKyAgICAgICAgYWRkSW5zdHJ1bWVudGVkT2Jq
ZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUg
TGlzdEhhc2hTZXRUeXBlPgogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZExpc3RIYXNo
U2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgaGFzaFNldCwgT2JqZWN0VHlwZSBvd25lck9iamVj
dFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcAppbmRleCAy
NTcyYjdiYmZlMjlmYzIxNmI4YWU4YTY5YzNjYjRkMmU4N2EzMWFkLi4wZWRlZDYxMWM4ZjhhYWJl
YTQ0MmYwMTQ2M2JkMDI0MjBlYTQ3MmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5jcHAKQEAgLTI1
LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdDb2xvci5oIgogCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUkdCQ29s
b3IuaCIKICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKIApAQCAtMTA0LDYgKzEwNSwxMSBAQCBQ
YXNzUmVmUHRyPFNWR0NvbG9yPiBTVkdDb2xvcjo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdDb2xvcihTVkdDb2xvckNsYXNzLCAqdGhpcykpOwogfQog
Cit2b2lkIFNWR0NvbG9yOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U1ZH
Q29sb3I+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpDU1MpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3Iu
aAppbmRleCBjZmZhYzUzODVlMjE1MTljNjI4ODE1YWM5MzIxNmE2MzMzNTA4OTc0Li43ZGRkY2Q3
YTk0NDRiMTFjZDg1NjU0OWEzMjQ5NWJmZjFlOTBkYzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaApA
QCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGFzc1JlZlB0cjxTVkdDb2xvcj4g
Y2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5k
IGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5j
cHAKaW5kZXggOGNmM2Q3ZTU2ODIyZWFjZTFhYzEzYjJmZWMyODRlZDhlZjczYThlMC4uZWY0Y2Jh
MTE3ZTk5YWY1MWE4N2UxZDM3NDdmNmZjYWEzMDQ2ODBiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQu
Y3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdQYWlu
dC5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU1ZH
RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTEsNiArMTEyLDEyIEBAIFBhc3NSZWZQdHI8U1ZHUGFp
bnQ+IFNWR1BhaW50OjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNWR1BhaW50KCp0aGlzKSk7CiB9CiAKK3ZvaWQgU1ZHUGFpbnQ6OnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAor
eworICAgIE1lbW9yeUNsYXNzSW5mbzxTVkdQYWludD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRTdHJpbmcobV91
cmkpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaApp
bmRleCBiMDUzY2JkNzc3OGM3YTE5MDJhZWZhNWQ2ZWUwOWRlODdmOGIzYjkzLi5hYzU2NzViNTll
ZGUwYzliOTBmNzFkYTNjOGU2MmM3ZWU5N2VkZTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGFpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaApAQCAt
OTUsNiArOTUsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFNWR1BhaW50PiBjbG9uZUZv
ckNTU09NKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156631</attachid>
            <date>2012-08-06 02:27:25 -0700</date>
            <delta_ts>2012-08-06 03:05:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93130-20120806132700.patch</filename>
            <type>text/plain</type>
            <size>78352</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I5MjhmNTBmOTJhNTA4
Mjk0YjBjZDJiNWQzMjRjNjJmYzRiNWRiNC4uYjQzNzcxMjVlNTgyNmU0OGI3ODE0OTIxOTQ4Nzkw
MWRmNDk5MTUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5NCBAQAorMjAxMi0wOC0wMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgbWVtb3J5IGluc3RydW1lbnRhdGlvbiBmb3IgQ1NTVmFsdWUgYW5kIGl0cyBkZXNj
ZW5kYW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBtZW1vcnkgZm9vdHByaW50IHJlcG9ydGluZyByb3V0aW5lIHRvIENTU1ZhbHVlIGFuZCBp
dHMgZGVzY2VuZGFudHMuCisKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NBc3BlY3RSYXRpb1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0FzcGVj
dFJhdGlvVmFsdWUuaDoKKyAgICAgICAgKENTU0FzcGVjdFJhdGlvVmFsdWUpOgorICAgICAgICAq
IGNzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5o
OgorICAgICAgICAoQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
Q2FsY3VsYXRpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NhbGNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KENTU0NhbGNQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0NhbGN1bGF0aW9uVmFs
dWUuaDoKKyAgICAgICAgKENTU0NhbGNFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChDU1NDYWxj
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDYW52YXNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5oOgorICAgICAgICAo
Q1NTQ2FudmFzVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NDcm9zc2ZhZGVW
YWx1ZS5oOgorICAgICAgICAoQ1NTQ3Jvc3NmYWRlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1ND
dXJzb3JJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0N1cnNvckltYWdlVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKiBjc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oOgorICAgICAgICAoQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTRm9udEZhY2VTcmNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NGb250RmFjZVNyY1Zh
bHVlLmg6CisgICAgICAgIChDU1NGb250RmFjZVNyY1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaDoKKyAgICAgICAgKENTU0Z1bmN0aW9uVmFsdWUpOgor
ICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0dyYWRpZW50Q29sb3JTdG9wOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01l
bW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhckdyYWRpZW50VmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NSYWRpYWxH
cmFkaWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNz
cy9DU1NHcmFkaWVudFZhbHVlLmg6CisgICAgICAgIChDU1NHcmFkaWVudENvbG9yU3RvcCk6Cisg
ICAgICAgIChDU1NHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKENTU0xpbmVhckdyYWRpZW50VmFs
dWUpOgorICAgICAgICAoQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSk6CisgICAgICAgICogY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaDoKKyAgICAgICAgKENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVNldFZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlU2V0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0lt
YWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAg
ICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuaDoKKyAgICAgICAgKEltYWdlV2l0aFNjYWxlKToKKyAg
ICAgICAgKENTU0ltYWdlU2V0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1
ZS5oOgorICAgICAgICAoQ1NTSW1hZ2VWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0luaGVyaXRl
ZFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0luaGVyaXRlZFZhbHVlOjpyZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0NTU0luaGVyaXRlZFZhbHVlLmg6CisgICAgICAgIChDU1NJbmhlcml0ZWRWYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbml0
aWFsVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmg6CisgICAgICAgIChDU1NJbml0aWFs
VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0xpbmVCb3hDb250YWluVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTTGluZUJveENv
bnRhaW5WYWx1ZS5oOgorICAgICAgICAoQ1NTTGluZUJveENvbnRhaW5WYWx1ZSk6CisgICAgICAg
ICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1p
dGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIChDU1NQcmlt
aXRpdmVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmg6Cisg
ICAgICAgIChDU1NSZWZsZWN0VmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBj
c3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoQ1NTTGluZWFyVGltaW5nRnVu
Y3Rpb25WYWx1ZSk6CisgICAgICAgIChDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUp
OgorICAgICAgICAoQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVW5pY29kZVJh
bmdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKiBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaDoKKyAgICAgICAgKENTU1Vu
aWNvZGVSYW5nZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dENsb25lQ1NTVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChUZXh0Q2xvbmVDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3Nz
L0NTU1ZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENTU1ZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVl
TGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NWYWx1ZUxpc3QuaDoKKyAgICAgICAgKENTU1ZhbHVlTGlzdCk6Cisg
ICAgICAgICogY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Zh
cmlhYmxlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChDU1NW
YXJpYWJsZVZhbHVlKToKKyAgICAgICAgKiBjc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmVhdHVyZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0ZvbnRGZWF0dXJlVmFsdWUu
aDoKKyAgICAgICAgKEZvbnRGZWF0dXJlVmFsdWUpOgorICAgICAgICAqIGNzcy9Gb250VmFsdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0ZvbnRWYWx1ZS5oOgor
ICAgICAgICAoRm9udFZhbHVlKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXhwOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAg
ICAgICogY3NzL1NoYWRvd1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1ZhbHVl
OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogY3NzL1NoYWRvd1ZhbHVlLmg6CisgICAgICAgIChTaGFkb3dWYWx1ZSk6CisgICAgICAg
ICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0Q1NTRmlsdGVyVmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBjc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU0ZpbHRl
clZhbHVlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktp
dENTU1NWR0RvY3VtZW50VmFsdWUuaDoKKyAgICAgICAgKFdlYktpdENTU1NWR0RvY3VtZW50VmFs
dWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJLaXRDU1NTaGFkZXJWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTaGFkZXJWYWx1
ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU2hhZGVyVmFsdWUpOgorICAgICAgICAqIGNzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOgorICAgICAgICAo
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUpOgorICAgICAgICAqIGRvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRT
dHJpbmcpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1l
bnRhdGlvbi5oOgorICAgICAgICAoTWVtb3J5SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lbW9yeUNsYXNzSW5mbzo6YWRkSGFzaENvdW50ZWRTZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVtb3J5Q2xhc3NJbmZvOjphZGRNZW1iZXIpOgorICAgICAgICAqIHN2Zy9TVkdDb2xv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb2xvcjo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9TVkdDb2xvci5oOgor
ICAgICAgICAoU1ZHQ29sb3IpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQYWludDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9TVkdQYWludC5oOgorICAgICAgICAoU1ZHUGFp
bnQpOgorCiAyMDEyLTA4LTA2ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBuYXRpdmUgbWVtb3J5IGluc3RydW1lbnRhdGlv
bjogY292ZXIgTWVtb3J5Q2FjaGUgd2l0aCBNZW1vcnlJbnN0cnVtZW50YXRpb24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcAppbmRleCAxOGIwZGVkNjczNmVlMTQ0
OWY4NzAxZWU5OWE5NzEwMmViM2NiNTM3Li5iMDdmN2JhNjY5Y2FmYTJmZDgzY2M3ZjRmNWJjZmZj
MjVlMTFjN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9W
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTQXNw
ZWN0UmF0aW9WYWx1ZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00Miw0ICs0Myw5IEBAIFN0cmluZyBDU1NBc3BlY3RSYXRpb1ZhbHVlOjpjdXN0b21Dc3NU
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgQ1NT
QXNwZWN0UmF0aW9WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENT
U0FzcGVjdFJhdGlvVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDU1MpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJh
dGlvVmFsdWUuaAppbmRleCAyZjZiNDI2ZDhjMGE4M2E5NmY5NWVjOTBiYjJiY2Y2YWFjYTNmYzI1
Li41Y2MzMzkyNDliYjUxMzFhYjY2NjVkMWUyODIwYjRkOGQ3ODJkNDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgog
ICAgIGZsb2F0IG51bWVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9udW1lcmF0b3JWYWx1
ZTsgfQogICAgIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX2Rlbm9t
aW5hdG9yVmFsdWU7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NBc3BlY3RSYXRpb1Zh
bHVlKGZsb2F0IG51bWVyYXRvclZhbHVlLCBmbG9hdCBkZW5vbWluYXRvclZhbHVlKQogICAgICAg
ICA6IENTU1ZhbHVlKEFzcGVjdFJhdGlvQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwCmluZGV4IDA0ZWYyZDM2NmM4MGMzMmU3NjdjNzY5
NTBjNjU2MTBkNmNiNjUyZDAuLmZmNzNhY2FmODQ5MTZlMmQ3MzE5MWI2ZWFmOWM4YWQ1Zjk3ZjJk
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
Y3BwCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRp
b24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlY3QuaCIKIApA
QCAtNDksNCArNTAsMTAgQEAgU3RyaW5nIENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZTo6Y3VzdG9t
Q3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKK3ZvaWQgQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQm9y
ZGVySW1hZ2VTbGljZVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Ns
aWNlcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuaAppbmRleCBkODIzMGY0NzRlYmY5ZjRhZDQ4OWU3
N2NlYTIxNjRlZDQ4N2NlNjZmLi40ODhiNGE0MWQyMGRmYWYyYzQyMmM2MTQzODA1M2UxNDVlZjQ0
NmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZh
bHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5o
CkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKIAogICAgIFF1YWQqIHNsaWNlcygpIHsgcmV0dXJu
IG1fc2xpY2VzID8gbV9zbGljZXMtPmdldFF1YWRWYWx1ZSgpIDogMDsgfQogCisgICAgdm9pZCBy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAg
ICAgLy8gVGhlc2UgZm91ciB2YWx1ZXMgYXJlIHVzZWQgdG8gbWFrZSAiY3V0cyIgaW4gdGhlIGJv
cmRlciBpbWFnZS4gVGhleSBjYW4gYmUgbnVtYmVycwogICAgIC8vIG9yIHBlcmNlbnRhZ2VzLgog
ICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9zbGljZXM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKaW5kZXggNTQyNDdlMDM1OWZiNDc0ODFjY2FiMjc4
NGZlMDQ0MjhjY2Q3YzRmNC4uYmM4ZWRkOTNmMWEzMjAzMTY0MDg2MTBhOTZmNjNkMmJlNTFiMWQ1
MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiTGVuZ3Ro
LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVS
ZXNvbHZlci5oIgogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtODYsNiArODcsMTEgQEAg
U3RyaW5nIENTU0NhbGNWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJyknKTsKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7IAogfQorCit2b2lk
IENTU0NhbGNWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0Nh
bGNWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OkNTUyk7Cit9CiAgICAgCiBkb3VibGUgQ1NTQ2FsY1ZhbHVlOjpjbGFtcFRvUGVybWl0dGVk
UmFuZ2UoZG91YmxlIHZhbHVlKSBjb25zdAogewpAQCAtMTc1LDYgKzE4MSwxMiBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7ICAgICAgICAKICAgICB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIE1lbW9yeUNsYXNzSW5mbzxDU1ND
YWxjUHJpbWl0aXZlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5z
dHJ1bWVudGF0aW9uOjpDU1MpOworICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlciht
X3ZhbHVlKTsKKyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENTU0NhbGNQcmlt
aXRpdmVWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZSogdmFsdWUsIGJvb2wgaXNJbnRlZ2VyKQpAQCAt
MjYwLDYgKzI3MiwxMyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBldmFsdWF0ZShsZWZ0VmFs
dWUsIHJpZ2h0VmFsdWUpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdCBPVkVSUklERQor
ICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0NhbGNCaW5hcnlPcGVyYXRpb24+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwor
ICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2xlZnRTaWRlKTsKKyAgICAgICAg
aW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9yaWdodFNpZGUpOworICAgIH0KKwogICAgIHZp
cnR1YWwgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHsKICAgICAgICAgU3RyaW5n
QnVpbGRlciByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3Vs
YXRpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuaApp
bmRleCA1N2EyNDlmODk2OGM1MTY0ODI4NmVlNzQxMDQ1NzE3ZWRlZTY2NzZmLi5iMjVmN2IzMWE1
MDIyYzA4YjhmZjZkNWE2MjZkMGM0Mzc0NGY0OTE2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
YWxjdWxhdGlvblZhbHVlLmgKQEAgLTY0LDYgKzY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
ZG91YmxlIGRvdWJsZVZhbHVlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgZG91YmxlIGNvbXB1
dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZh
bHNlKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3QgPSAwOwogICAgIAogICAgIENhbGN1bGF0aW9uQ2F0ZWdvcnkgY2F0ZWdvcnko
KSBjb25zdCB7IHJldHVybiBtX2NhdGVnb3J5OyB9ICAgIAogICAgIGJvb2wgaXNJbnRlZ2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0ludGVnZXI7IH0KQEAgLTk1LDYgKzk3LDggQEAgcHVibGljOgog
ICAgIGRvdWJsZSBjb21wdXRlTGVuZ3RoUHgoUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIgPSAxLjAsIGJvb2wgY29tcHV0
aW5nRm9udFNpemUgPSBmYWxzZSkgY29uc3Q7CiAgICAgICAgIAogICAgIFN0cmluZyBjdXN0b21D
c3NUZXh0KCkgY29uc3Q7CisKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgCiBwcml2YXRlOiAgICAKICAgICBDU1NDYWxj
VmFsdWUoUGFzc1JlZlB0cjxDU1NDYWxjRXhwcmVzc2lvbk5vZGU+IGV4cHJlc3Npb24sIENhbGN1
bGF0aW9uUGVybWl0dGVkVmFsdWVSYW5nZSByYW5nZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFz
VmFsdWUuY3BwCmluZGV4IDc4M2NlZWY4MmI1MGY4ODVlMzcwNTllNzVkZTE1NmRlZGYyN2QxNjEu
LmIxYmRlZjgxZWFiMTgyZDA0MDA4NmQ0ZjQzNjIwMTAxNzIwMmMyMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbnZhc1ZhbHVlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0Nh
bnZhc1ZhbHVlLmgiCiAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUgIk1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC05Miw0ICs5MywxMSBAQCBQYXNzUmVmUHRyPEltYWdlPiBDU1NDYW52
YXNWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgLwog
ICAgIHJldHVybiBlbHQtPmNvcGllZEltYWdlKCk7CiB9CiAKK3ZvaWQgQ1NTQ2FudmFzVmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NDYW52YXNWYWx1ZT4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cisg
ICAgaW5mby5hZGRNZW1iZXIobV9uYW1lKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJl
cihtX2VsZW1lbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYW52YXNWYWx1ZS5oCmluZGV4IDE1OWU2MTk1NjhiYTUwMzhjNTcxZGMxNDVkODllZmQ5NjVm
ZTRkOTQuLjEzZmI1ODc0MWU1NzBkNWI0YTUzZGYzMjUyZTRlM2M4NjY2MTQ0YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzUGVuZGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdm9pZCBsb2FkU3Vi
aW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKikgeyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgQ1NTQ2FudmFzVmFsdWUoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICA6IENTU0ltYWdl
R2VuZXJhdG9yVmFsdWUoQ2FudmFzQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFk
ZVZhbHVlLmNwcAppbmRleCBhOTVkMWU3M2I3NmM3ZjY4NTc4ZTg0YjRjNWVhZDE1YjlhODk1YTQ4
Li43OGM2NWQyM2Q1YTM3OWIyYWE2NmFhYjY3OTAwN2NiZmQ2ODJiZWU4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNyb3NzZmFkZUdlbmVyYXRlZElt
YWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTdHlsZUNh
Y2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIgpAQCAtMTM0LDYg
KzEzNSwxOCBAQCB2b2lkIENTU0Nyb3NzZmFkZVZhbHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJl
c291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcgogICAgIG1fY3Jvc3NmYWRlU3ViaW1h
Z2VPYnNlcnZlci5zZXRSZWFkeSh0cnVlKTsKIH0KIAordm9pZCBDU1NDcm9zc2ZhZGVWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0Nyb3NzZmFkZVZhbHVlPiBp
bmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsK
KyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2Zyb21WYWx1ZSk7CisgICAgaW5mby5h
ZGRJbnN0cnVtZW50ZWRNZW1iZXIobV90b1ZhbHVlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX3BlcmNlbnRhZ2VWYWx1ZSk7CisgICAgLy8gRklYTUU6IGFkZCBpbnN0cnVtZW50
YXRpb24gZm9yCisgICAgLy8gbV9jYWNoZWRGcm9tSW1hZ2UKKyAgICAvLyBtX2NhY2hlZFRvSW1h
Z2UKKyAgICAvLyBtX2dlbmVyYXRlZEltYWdlCit9CisKIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0Ny
b3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXpl
JiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmgKaW5kZXggODlhNzJjNGU5MjcyZGQwZDcwNGUxYjdlNGExNWNkOTVhZTlj
ZWU3Zi4uZjUyNjdlYmNkZTM1NzlhNjBmN2JjZTZmNDBlYTU4OGRiOWI1YjQzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTYzLDYgKzYzLDggQEAgcHVibGljOgog
CiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTQ3Jvc3NmYWRlVmFsdWUoUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gZnJvbVZhbHVlLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB0b1ZhbHVlKQogICAgICAgICA6IENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUoQ3Jvc3NmYWRlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKaW5kZXggZjg1MDY4NDhmZjc0NTRjNDAyN2MwZjJjMTFk
MTRhODRiYmU2MjhlYi4uY2E1NDRmNTJmZTkwMzY1MDYxZDBmN2YwNTJiZjVjYzAxMzQ1NzQzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApAQCAtMjMsNiAr
MjMsNyBAQAogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKIAogI2luY2x1ZGUgIkNh
Y2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgpAQCAtMTMyLDQgKzEzMywxMiBAQCB2b2lkIENTU0N1
cnNvckltYWdlVmFsdWU6OnJlbW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1l
bnQpCiB9CiAjZW5kaWYKIAordm9pZCBDU1NDdXJzb3JJbWFnZVZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
K3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ3Vyc29ySW1hZ2VWYWx1ZT4gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisjaWYgRU5BQkxF
KFNWRykKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZEhhc2hTZXQobV9yZWZlcmVuY2VkRWxlbWVu
dHMpOworI2VuZGlmCit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5oCmluZGV4IGNiMjY5MTllNDY4M2Q2MjU1NjdlNzg3NDlh
N2M4MGZmYzljZTBlZTcuLmRjOGQxZmY0Y2E1ZjU4NjUyOGU5NzA2MmNkNWU5OGQ2NmY2YjEyZWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaApAQCAtNDgsNiArNDgs
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50
Kik7CiAjZW5kaWYKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NDdXJzb3JJbWFnZVZhbHVl
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAppbmRleCA2MDViMmZjZTcxYTk4OGEw
ZTA0NmUzNWI2YzZiYjZmMTgxNDdkMDNmLi45NzE2MTQwZDg3NjlkMTc4NjU2YzIxYzk2OTMwMjIy
NzUxZTI1MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3Bw
CkBAIC0yOSw3ICsyOSw5IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIK
KyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCisj
aW5jbHVkZSAiU1ZHRm9udEZhY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRl
bnRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTk1LDUgKzk3LDE2IEBAIENhY2hlZEZv
bnQqIENTU0ZvbnRGYWNlU3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIHJldHVybiBtX2NhY2hlZEZvbnQuZ2V0KCk7CiB9CiAKK3ZvaWQgQ1NTRm9udEZhY2VTcmNW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0ZvbnRGYWNlU3Jj
VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpDU1MpOworICAgIGluZm8uYWRkTWVtYmVyKG1fcmVzb3VyY2UpOworICAgIGluZm8uYWRkTWVt
YmVyKG1fZm9ybWF0KTsKKyAgICAvLyBGSVhNRTogYWRkIG1fY2FjaGVkRm9udCB3aGVuIE1lbW9y
eUNhY2hlIGlzIGluc3RydW1lbnRlZC4KKyNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQorICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc3ZnRm9udEZhY2VFbGVtZW50KTsKKyNlbmRpZgorfQor
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IDA2ZWY0
YjMzMDc5MDAxNWI1ZjE0MDJkYzk0NTA0OGZkYmUwYzlkNDMuLjQ0NDRjODYwNjkyYWI2OGUyNTdm
ZjhmNjU1NmNlMDEyZjk4YWFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWRGb250KiBjYWNo
ZWRGb250KERvY3VtZW50Kik7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTRm9udEZhY2VT
cmNWYWx1ZShjb25zdCBTdHJpbmcmIHJlc291cmNlLCBib29sIGxvY2FsKQogICAgICAgICA6IENT
U1ZhbHVlKEZvbnRGYWNlU3JjQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1
ZS5jcHAKaW5kZXggNTIyYWQ5ZmQxNjRhN2Q1ZDRhZGNjZmFlYWJmNzZjN2M4YjM2NjE1YS4uNTNk
YzQzZmIzODJkM2I2YWIzY2JjZDE1MmQyNDczZWQ2NjRjZWM1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NGdW5jdGlvblZhbHVlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1NT
UGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNCArNTAsMTEgQEAgU3RyaW5nIENTU0Z1bmN0aW9uVmFs
dWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQg
Q1NTRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENT
U0Z1bmN0aW9uVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkTWVtYmVyKG1fbmFtZSk7CisgICAgaW5mby5h
ZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9hcmdzKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
dW5jdGlvblZhbHVlLmgKaW5kZXggYTM1YTFiMTdiMzEwMjg5OWJlYmZkZDFlMThjYzEzYjRjN2Y2
YjdiZi4uNmI3ZmJjNjVlNGU0ZjFjMDdjYTUyZTEyM2ZjZmRhZWQ1NzE5MzZjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgQ1NTRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJGdW5jdGlvbiopOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggM2YxOTc5ZmVlNTAwNGQzZWJi
ZDhmZDdhNTFkYjcxNzNmYWQxZmUwMy4uMzA3NmQyYWY2MmE5YWYwOTU2OTdjOTJhNWI1MjBhYjdi
YzBjZTg5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIkludFNpemVIYXNoLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKQEAgLTQyLDYgKzQzLDEzIEBAIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBDU1NHcmFkaWVudENv
bG9yU3RvcDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTR3JhZGllbnRDb2xvclN0b3A+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1Mp
OworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcG9zaXRpb24pOworICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fY29sb3IpOworfQorCiBQYXNzUmVmUHRyPEltYWdlPiBD
U1NHcmFkaWVudFZhbHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRT
aXplJiBzaXplKQogewogICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTQ1Miw2ICs0NjAsMTcg
QEAgYm9vbCBDU1NHcmFkaWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBN
ZW1vcnlDbGFzc0luZm88Q1NTR3JhZGllbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAg
aW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9maXJzdFgpOworICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWVtYmVyKG1fZmlyc3RZKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlciht
X3NlY29uZFgpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2Vjb25kWSk7Cisg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRWZWN0b3IobV9zdG9wcyk7Cit9CisKIFN0cmluZyBDU1NM
aW5lYXJHcmFkaWVudFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcg
cmVzdWx0OwpAQCAtNTk0LDYgKzYxMywxMyBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5l
YXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAg
IHJldHVybiBncmFkaWVudC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgQ1NTTGluZWFyR3JhZGllbnRW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0xpbmVhckdyYWRp
ZW50VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpDU1MpOworICAgIENTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1f
YW5nbGUpOworfQorCiBTdHJpbmcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4
dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHJlc3VsdDsKQEAgLTg5MSw0ICs5MTcsMTYgQEAgUGFz
c1JlZlB0cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQo
UmVuZGVyT2JqZWN0KiByZW5kZXIKICAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFzZSgpOwogfQog
Cit2b2lkIENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9y
eUNsYXNzSW5mbzxDU1NSYWRpYWxHcmFkaWVudFZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBDU1NHcmFkaWVudFZhbHVl
OjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZv
LmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2ZpcnN0UmFkaXVzKTsKKyAgICBpbmZvLmFkZEluc3Ry
dW1lbnRlZE1lbWJlcihtX3NlY29uZFJhZGl1cyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIobV9zaGFwZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9zaXppbmdC
ZWhhdmlvcik7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9lbmRIb3Jpem9udGFs
U2l6ZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9lbmRWZXJ0aWNhbFNpemUp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuaAppbmRleCAwYzdlZjc3NjRiMjEwYjMzNjZmYjBjMzkwZGE0NGIzNDYzNDllODk0Li44
ODJjYzYyOGZmZDY1NmZlYWExYTZkNDcxZmVjYjY3ZjNjZmJkYTVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IENTU0dyYWRpZW50
Q29sb3JTdG9wIHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fY29sb3I7CiAgICAg
Q29sb3IgbV9yZXNvbHZlZENvbG9yOwogICAgIGJvb2wgbV9jb2xvcklzRGVyaXZlZEZyb21FbGVt
ZW50OworICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0
OwogfTsKIAogY2xhc3MgQ1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlIHsKQEAgLTEwNSw2ICsxMDYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGlzQ2Fj
aGVhYmxlKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAgIC8vIFBvaW50cy4gU29tZSBvZiB0aGVzZSBt
YXkgYmUgbnVsbCBmb3IgbGluZWFyIGdyYWRpZW50cy4KICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IG1fZmlyc3RYOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9maXJzdFk7
CkBAIC0xMzksNiArMTQyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IENTU0xpbmVhckdyYWRpZW50VmFsdWUoKnRoaXMpKTsKICAgICB9CiAKKyAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQs
IGJvb2wgZGVwcmVjYXRlZFR5cGUgPSBmYWxzZSkKICAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVl
KExpbmVhckdyYWRpZW50Q2xhc3MsIHJlcGVhdCwgZGVwcmVjYXRlZFR5cGUpCkBAIC0xODAsNiAr
MTg1LDggQEAgcHVibGljOgogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4g
c2l6ZS4KICAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJPYmpl
Y3QqLCBjb25zdCBJbnRTaXplJik7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTUmFkaWFs
R3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIGJvb2wgZGVwcmVjYXRlZFR5
cGUgPSBmYWxzZSkKICAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKFJhZGlhbEdyYWRpZW50Q2xh
c3MsIHJlcGVhdCwgZGVwcmVjYXRlZFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggOWJlNDQ2YmQwZmI4NWIwNjRkNjlmMTg2MzI2OTlh
MDM5YTBhYzFkNi4uYzJhZDUwMWYzY2YwZDU1YWIxNTRiNjMwMWM5NDExZDFjMDhkZGYyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkNTU0Nyb3NzZmFkZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NT
R3JhZGllbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEwOCw2ICsxMDksMTQgQEAgdm9pZCBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjpwdXRJbWFnZShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPElt
YWdlPiBpbWEKICAgICBtX2ltYWdlcy5hZGQoc2l6ZSwgaW1hZ2UpOwogfQogCit2b2lkIENTU0lt
YWdlR2VuZXJhdG9yVmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSGFzaENvdW50ZWRTZXQobV9zaXpl
cyk7CisgICAgaW5mby5hZGRIYXNoTWFwKG1fY2xpZW50cyk7CisgICAgaW5mby5hZGRIYXNoTWFw
KG1faW1hZ2VzKTsgLy8gRklYTUU6IGluc3RydW1lbnQgSW1hZ2UKK30KKwogUGFzc1JlZlB0cjxJ
bWFnZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAppbmRleCBiM2Q4NGVh
YjI4M2YxMjRhNDIzMTQwY2I0NTJkNTQ2ODBhODEzOWJiLi5jZGY0MDVhMWNjMGIzOTA4MjY5NmM1
N2Y4ZjdhMjIwNjAwNzkxZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmgKQEAgLTczLDYgKzczLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHV0SW1h
Z2UoY29uc3QgSW50U2l6ZSYsIFBhc3NSZWZQdHI8SW1hZ2U+KTsKICAgICBjb25zdCBSZW5kZXJP
YmplY3RTaXplQ291bnRNYXAmIGNsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHM7IH0K
IAorICAgIHZvaWQgcmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OworCiAgICAgSGFzaENvdW50ZWRTZXQ8SW50U2l6ZT4gbV9zaXplczsgLy8gQSBjb3Vu
dCBvZiBob3cgbWFueSB0aW1lcyBhIGdpdmVuIGltYWdlIHNpemUgaXMgaW4gdXNlLgogICAgIFJl
bmRlck9iamVjdFNpemVDb3VudE1hcCBtX2NsaWVudHM7IC8vIEEgbWFwIGZyb20gUmVuZGVyT2Jq
ZWN0cyAod2l0aCBlbnRyeSBjb3VudCkgdG8gaW1hZ2Ugc2l6ZXMuCiAgICAgSGFzaE1hcDxJbnRT
aXplLCBSZWZQdHI8SW1hZ2U+ID4gbV9pbWFnZXM7IC8vIEEgY2FjaGUgb2YgSW1hZ2Ugb2JqZWN0
cyBieSBpbWFnZSBzaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdl
U2V0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmlu
ZGV4IDg5YTY0NjIzMTc3ZWU0ZWI4OGYwZmUyZDgwM2JiYzdhYjk2ZWNjNTUuLjM0M2Q5ZDcxOTE3
OWU2MjQzNWQ2Y2VkN2FkYmY4MzUyODY0ZWRmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VTZXRWYWx1ZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZVNldC5oIgogI2luY2x1ZGUgIlN0eWxl
UGVuZGluZ0ltYWdlLmgiCkBAIC0xNjIsNiArMTYzLDE5IEBAIFBhc3NSZWZQdHI8Q1NTSW1hZ2VT
ZXRWYWx1ZT4gQ1NTSW1hZ2VTZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBDU1NJbWFnZVNldFZhbHVlKCp0aGlzKSk7CiB9CiAKK3ZvaWQgQ1NT
SW1hZ2VTZXRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0lt
YWdlU2V0VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkVmVjdG9yKG1f
aW1hZ2VzSW5TZXQpOworfQorCit2b2lkIENTU0ltYWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxl
OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NJbWFnZVNldFZhbHVlOjpJbWFnZVdpdGhT
Y2FsZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNTUyk7CisgICAgaW5mby5hZGRNZW1iZXIoaW1hZ2VVUkwpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oCmluZGV4IDk1MjcwYTY3ZGZiZDQ2YmJkMThhNTRiY2JhMzEy
ZDc0NDAwOGI5YjcuLmE3OTFkMWVhMTc3ZmJmMWMzOGI2ZWViMTczNDk1OTViOGYxYzAzZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuaApAQCAtNTgsMTIgKzU4LDE1IEBAIHB1
YmxpYzoKICAgICBzdHJ1Y3QgSW1hZ2VXaXRoU2NhbGUgewogICAgICAgICBTdHJpbmcgaW1hZ2VV
Ukw7CiAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yOworICAgICAgICB2b2lkIHJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKICAgICB9OwogCiAgICAgYm9vbCBoYXNG
YWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPENT
U0ltYWdlU2V0VmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJvdGVj
dGVkOgogICAgIEltYWdlV2l0aFNjYWxlIGJlc3RJbWFnZUZvclNjYWxlRmFjdG9yKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAppbmRleCAwN2JkNGIzZTMyOGMwZmIyMmIyOTQ1
ZWQ3OGU1ZDk1M2M1ZjZiOWMzLi5mNmY1NDg1MzZlYzI3MDhhNDkzOWNjMTkzNWZiNTM0OGI2MzI1
Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0yNCwxMCArMjQsMTEg
QEAKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2Vy
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUgIkRvY3VtZW50Lmgi
Ci0jaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVBlbmRpbmdJ
bWFnZS5oIgogCkBAIC0xMjUsNCArMTI2LDExIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0lt
YWdlVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiB1cmlWYWx1ZS5yZWxl
YXNlKCk7CiB9CiAKK3ZvaWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVt
b3J5Q2xhc3NJbmZvPENTU0ltYWdlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdXJsKTsK
KyAgICAvLyBObyBuZWVkIHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFy
dCBvZiBSZW5kZXJBcmVuYS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NJbWFnZVZhbHVlLmgKaW5kZXggNzUwNjNkMmZhOTViODQzNjRhY2RlNzg4NThhNjM5OGJh
NWE5ODEwZC4uOGM4MmYyYzY3ZGI0MzNhNzUxNzMzYzk2NzFkZTliOTE1MWU3YTk4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgaGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogCisgICAgdm9p
ZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owor
CiBwcm90ZWN0ZWQ6CiAgICAgQ1NTSW1hZ2VWYWx1ZShDbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYg
dXJsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAKaW5kZXggOGM0
YmU2ZDRiYzcwMGMyYjA2YjEwMzVmNzI1ODNjNzVhZDg5MTczMi4uMjY4MGYyZmQ2NDM3ZmQ2ZTQ3
NzMxOTVlMzQwZDRiNzc0MTYwMWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0luaGVyaXRlZFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVk
VmFsdWUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQ1NTSW5oZXJpdGVkVmFsdWUuaCIKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTMwLDQgKzMxLDkgQEAgU3RyaW5nIENTU0luaGVyaXRlZFZhbHVlOjpjdXN0b21Dc3NUZXh0
KCkgY29uc3QKICAgICByZXR1cm4gImluaGVyaXQiOwogfQogCit2b2lkIENTU0luaGVyaXRlZFZh
bHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTSW5oZXJpdGVkVmFs
dWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpD
U1MpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhl
cml0ZWRWYWx1ZS5oCmluZGV4IDVhYTkwNjM2NzcxNzMwNDY2OGIxMzQyYmI2ZDE3YmFkYjE2N2Qw
ZTkuLjY4YzAwMWY1MzQyNjZhNGY3ZGFlYmIwZGVlNjI5ZDM1N2FlOWZkNDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCkBAIC0zNSw2ICszNSw4IEBAIHB1YmxpYzoKIAog
ICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgQ1NTSW5oZXJpdGVkVmFsdWUoKQogICAgICAgICA6IENTU1ZhbHVlKEluaGVyaXRlZENsYXNz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcAppbmRleCA4ZGUzZjMxODJjNWMx
ZWVkZTNhY2Q5MjAxMGQwN2U5YmU4MTliMjMyLi4zNmJkOTUwODBlYjVkNWI5ZDVjOWIwYjRkYjk2
YmMxZjZmOWU0YmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcApAQCAt
MjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0luaXRpYWxW
YWx1ZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzAsNCArMzEsOSBA
QCBTdHJpbmcgQ1NTSW5pdGlhbFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1
cm4gImluaXRpYWwiOwogfQogCit2b2lkIENTU0luaXRpYWxWYWx1ZTo6cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0luaXRpYWxWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFs
dWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAppbmRleCBkZDg2ZDg0
MjQxYTY2ZmYyZjczN2FlOWEwMjFhNGJiYWM4MDhiNjAwLi5kNTIzMzQzZDNkMzQxNzM0MTMxM2E2
YWU5NWM2YTY2OTc0MzA4MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5p
dGlhbFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCkBA
IC00MSw2ICs0MSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNJbXBsaWNpdCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNJbXBsaWNpdDsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU0luaXRp
YWxWYWx1ZShib29sIGltcGxpY2l0KQogICAgICAgICA6IENTU1ZhbHVlKEluaXRpYWxDbGFzcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcAppbmRleCA1
MzEzMmViMTkwZjVlYTI5Y2M3MzRkMGRkNWMyNzk0NWNiZmUxYmRjLi4yY2ZmZTUzNGM5NjkzZTQ3
Y2JhMWQ4YmM1Y2Y3ZWIzZjExZmU1OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xp
bmVCb3hDb250YWluVmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTTGlu
ZUJveENvbnRhaW5WYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Miw0ICs3Myw5IEBAIFN0cmluZyBDU1NM
aW5lQm94Q29udGFpblZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4
dDsKIH0KIAordm9pZCBDU1NMaW5lQm94Q29udGFpblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAg
ICBNZW1vcnlDbGFzc0luZm88Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCmluZGV4IGRkYzBjNjBmM2My
NDY1YWZlMjM3MmRjM2Y0NDBkYzcxNDBlYzUyN2IuLmVlYjY0NzBjODM4NzdlYzZlZjJjOGRjMDQx
ODgwMGY0ZDRjNWRkMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94
Q29udGFpblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWlu
VmFsdWUuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBMaW5lQm94Q29udGFpbiB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBMaW5lQm94Q29udGFpbiBtX3ZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlLmNwcAppbmRleCBkNWJkZTgyYTFiNGRkOWI0MjU4OWMxYzVkMGY0YTY0ZDA5ZWZiYzkw
Li4yNTlhNTA1MzI4ODc4Y2RhNjBmODY2MjY1MTc1ZTg1NTVhOGM1NWM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIkNvdW50ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5o
IgogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSR0JDb2xvci5oIgpAQCAtMTI1OCw0ICsx
MjU5LDQ4IEBAIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVl
OjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIENT
U1ByaW1pdGl2ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NT
UHJpbWl0aXZlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDU1MpOworICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgeworICAg
IGNhc2UgQ1NTX0FUVFI6CisgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgorICAgIGNhc2UgQ1NT
X1BBUlNFUl9JREVOVElGSUVSOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKKyAgICBj
YXNlIENTU19TVFJJTkc6CisgICAgY2FzZSBDU1NfVVJJOgorI2lmIEVOQUJMRShDU1NfVkFSSUFC
TEVTKQorICAgIGNhc2UgQ1NTX1ZBUklBQkxFX05BTUU6CisjZW5kaWYKKyAgICAgICAgLy8gRklY
TUU6IGRldGVjdCBvdGhlciBjYXNlcyB3aGVuIG1fdmFsdWUgaXMgU3RyaW5nSW1wbCoKKyAgICAg
ICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZS5zdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENTU19DT1VOVEVSOgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLmNvdW50ZXIp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19SRUNUOgorICAgICAgICBpbmZvLmFkZE1l
bWJlcihtX3ZhbHVlLnJlY3QpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19RVUFEOgor
ICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnF1YWQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU19QQUlSOgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnBhaXIpOwor
ICAgICAgICBicmVhazsKKyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShX
SURHRVRfUkVHSU9OKQorICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CisgICAgICAgIGlu
Zm8uYWRkTWVtYmVyKG1fdmFsdWUucmVnaW9uKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAg
ICBjYXNlIENTU19TSEFQRToKKyAgICAgICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZS5zaGFwZSk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX0NBTEM6CisgICAgICAgIGluZm8uYWRkTWVt
YmVyKG1fdmFsdWUuY2FsYyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IGJyZWFrOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCA4NzA2OWMwNDMzMzk1NjMwNzc2ODZmODY3Mzk0
MGVlMWZjOWQ3MTM0Li5mZDA4MzJkMzQ3ODBiOTY5NDUwMDUxOTQyMGRhMTNlZWQxZjM3Yjc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMzA2LDYgKzMwNiw4IEBA
IHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjbG9uZUZvckNTU09N
KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDU1NPTVNhZmUoKSB7IG1faXNDU1NPTVNhZmUgPSB0cnVl
OyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IGludCB2cy4gdW5zaWduZWQg
b3ZlcmxvYWRpbmcgaXMgdG9vIHN1YnRsZSB0byBkaXN0aW5ndWlzaCB0aGUgY29sb3IgYW5kIGlk
ZW50aWZpZXIgY2FzZXMuCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUoaW50IGlkZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHkuY3BwCmluZGV4IGFiNzZjMzJiZGFhYzJjY2ZjOTIwMTIwNDdhZGI1
YzM4ZjdkMjQyNWIuLjAyMWFkZDI3MTg1MzM4MzhiN2FkMDQzMTRlMjg4NjhjOWJlZWUzYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5LmgiCiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJN
ZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZC5oIgpAQCAtNjk0LDQgKzY5NSwxMCBAQCBib29sIENTU1Byb3BlcnR5Ojppc0luaGVy
aXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK3ZvaWQgQ1NTUHJvcGVydHk6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1By
b3BlcnR5PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3ZhbHVlKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCA3MTI0
MTQ2NjZiZmRlYTU0YmM5NmMxOTUzZjFkYjk2MDQwZTFkNmJjLi41N2EzMDEyNGY4MjhiMTZiYmQ2
OTIyZDgwZDhkYmZkMGMyMmNmMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzAs
NiArMzAsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lbW9yeU9iamVjdElu
Zm87CisKIGNsYXNzIENTU1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBDU1NQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEIHByb3BJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0
YW50ID0gZmFsc2UsIENTU1Byb3BlcnR5SUQgc2hvcnRoYW5kSUQgPSBDU1NQcm9wZXJ0eUludmFs
aWQsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSkKQEAgLTU5LDYgKzYxLDggQEAgcHVibGljOgogICAg
IHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1By
b3BlcnR5SUQsIFRleHREaXJlY3Rpb24sIFdyaXRpbmdNb2RlKTsKICAgICBzdGF0aWMgYm9vbCBp
c0luaGVyaXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogCisgICAgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSBmb2xsb3dpbmcgZml0cyBpbiA0IGJ5dGVzLiBSZWFsbHkuCiAgICAgdW5zaWdu
ZWQgbV9pZCA6IDE0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RW
YWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAppbmRleCBi
MzZjM2FkN2IyYzIxMmRhYjZjNzljYTg0YmM5NTAwMTY5ODNmZDljLi4wOTg0NzUyNzNmMzI2N2Nj
OGUwNmNjZjU3NjU2NWUwZjRkNTAwMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUmVmbGVjdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZh
bHVlLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgog
CiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwpAQCAtNjUsNCArNjYsMTEgQEAgdm9pZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJl
c291cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBTdHkKICAgICAg
ICAgbV9tYXNrLT5hZGRTdWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKIH0K
IAordm9pZCBDU1NSZWZsZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNz
SW5mbzxDU1NSZWZsZWN0VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1f
b2Zmc2V0KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX21hc2spOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UmVmbGVjdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKaW5k
ZXggNWNmYjIwZTI3Zjc1ODg0MDYxOTQxMjU4MGJjMDM0ZmVhNTdhNjllZi4uMWJkZmQ1ZmU3NmM3
ZWYyODFmN2Y3Nzg5YjI5Y2VhYTQ0OGM3M2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1JlZmxlY3RWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0
VmFsdWUuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFN1YnJlc291
cmNlU3R5bGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRz
KikgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTUmVmbGVjdFZhbHVlKENTU1Jl
ZmxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBvZmZzZXQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG1hc2spCiAgICAgICAgIDogQ1NTVmFsdWUo
UmVmbGVjdENsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuY3BwCmluZGV4IGRjZjdiYjI5YjU0NmM2ODRiZDk2YzdjZjZhYTE3NjhkZTRlYTEwMTAuLmZl
ODI3OGFiYzE3MWQ4NTE4MDAyMzE3M2EwYzU4MGVmMDVlYWM1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAK
KyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw2ICszNiwxMSBAQCBTdHJpbmcg
Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAg
cmV0dXJuICJsaW5lYXIiOwogfQogCit2b2lkIENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NMaW5lYXJUaW1pbmdGdW5j
dGlvblZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q1NTKTsKK30KKwogU3RyaW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1
ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRleHQoImN1YmljLWJlemll
cigiKTsKQEAgLTQ5LDYgKzU1LDExIEBAIFN0cmluZyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCit2
b2lkIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7Cisg
ICAgTWVtb3J5Q2xhc3NJbmZvPENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZT4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9
CisKIFN0cmluZyBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBj
b25zdAogewogICAgIFN0cmluZyB0ZXh0KCJzdGVwcygiKTsKQEAgLTU5LDQgKzcwLDkgQEAgU3Ry
aW5nIENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHRleHQ7CiB9CiAKK3ZvaWQgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTU3RlcHNUaW1pbmdGdW5jdGlv
blZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Q1NTKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKaW5kZXggZTU0NGM1ZmYwMGMwZDZmYzMxOTdmNDY4
NWE4YTE1MjEzZGI0NThhMC4uM2ViNGIyMjk1YWI5NzYzOTJmZGRmMmU1MGMyOWZkYzI2YmU1MGQ0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC00
MCw2ICs0MCw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSgp
CiAgICAgICAgIDogQ1NTVmFsdWUoTGluZWFyVGltaW5nRnVuY3Rpb25DbGFzcykKQEAgLTYxLDYg
KzYzLDggQEAgcHVibGljOgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0K
ICAgICBkb3VibGUgeTIoKSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZh
dGU6CiAgICAgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKGRvdWJsZSB4MSwgZG91
YmxlIHkxLCBkb3VibGUgeDIsIGRvdWJsZSB5MikKICAgICAgICAgOiBDU1NWYWx1ZShDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uQ2xhc3MpCkBAIC04OSw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAg
IFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkK
ICAgICAgICAgOiBDU1NWYWx1ZShTdGVwc1RpbWluZ0Z1bmN0aW9uQ2xhc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcAppbmRleCAyYzJjNDRkMjdhYjU2OGM2
YzQ2YmUzM2U1NjI5NjE1NTUwYTBmYWQzLi45YjBjOTVkOTMzNmFmNjAxNmJjMGRmN2JiNWFjZDk3
MjE4MzhmMjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5j
cHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NV
bmljb2RlUmFuZ2VWYWx1ZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MzcsNCArMzgsOSBAQCBTdHJpbmcgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQ1NTVW5pY29kZVJhbmdlVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NVbmljb2RlUmFuZ2VW
YWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNTUyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2Rl
UmFuZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgK
aW5kZXggNGZlMWRiNzdjYjMyNjY5MTUwY2RlNTA3OTdmNDFjMzUzZjliNjc2Yi4uZDUwZjViNjgx
NWM3Yjc2ZGViYTA1MDFmOTY4NDRjMmRjZjE2MGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1VuaWNvZGVSYW5nZVZhbHVlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAgU3Ry
aW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NV
bmljb2RlUmFuZ2VWYWx1ZShVQ2hhcjMyIGZyb20sIFVDaGFyMzIgdG8pCiAgICAgICAgIDogQ1NT
VmFsdWUoVW5pY29kZVJhbmdlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA1ZmZi
MTU2N2U4ODU4OGRhNzU1NjZjZjg1Zjk0NTYyZDkwOWNlOTQ3Li41MjRlOTUwMzhjNzFmNDU4N2Q2
YjI1OTk0ODU2NmM3N2U1ZmRhYWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTUyLDYg
KzUyLDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRG
ZWF0dXJlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlICJTaGFkb3dWYWx1ZS5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZH
UGFpbnQuaCIKQEAgLTc3LDYgKzc4LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjc3NUZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9jc3NUZXh0OyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAor
ICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPFRleHRDbG9uZUNTU1ZhbHVlPiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAg
ICAgaW5mby5hZGRNZW1iZXIobV9jc3NUZXh0KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgVGV4
dENsb25lQ1NTVmFsdWUoQ2xhc3NUeXBlIGNsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KSAK
ICAgICAgICAgOiBDU1NWYWx1ZShjbGFzc1R5cGUsIC8qaXNDU1NPTVNhZmUqLyB0cnVlKQpAQCAt
MTQxLDYgKzE0OCwxMjggQEAgYm9vbCBDU1NWYWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJl
c291cmNlcygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIENTU1ZhbHVlOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAoreworICAgIGlmIChtX2lzVGV4dENsb25lKSB7CisgICAgICAgICBBU1NFUlQoaXNDU1NPTVNh
ZmUoKSk7CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFRleHRDbG9uZUNTU1ZhbHVlKj4odGhp
cyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVCghaXNDU1NPTVNhZmUoKSB8fCBpc1N1YnR5
cGVFeHBvc2VkVG9DU1NPTSgpKTsKKyAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CisgICAgY2Fz
ZSBQcmltaXRpdmVDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUHJpbWl0aXZl
VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdElu
Zm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbWFnZUNsYXNzOgorICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBDU1NJbWFnZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3Vy
c29ySW1hZ2VDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5m
byk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENhbnZhc0NsYXNzOgorICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBDU1NDYW52YXNWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENy
b3NzZmFkZUNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NDcm9zc2ZhZGVWYWx1
ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExpbmVhckdyYWRpZW50Q2xhc3M6CisgICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhckdyYWRpZW50VmFsdWUqPih0aGlzKS0+cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBSYWRpYWxHcmFkaWVudENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3ViaWNC
ZXppZXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1ND
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBM
aW5lYXJUaW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NM
aW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgU3RlcHNU
aW1pbmdGdW5jdGlvbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NTdGVwc1Rp
bWluZ0Z1bmN0aW9uVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBBc3BlY3RSYXRpb0Ns
YXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NBc3BlY3RSYXRpb1ZhbHVlKj4odGhp
cyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIGNhc2UgQm9yZGVySW1hZ2VTbGljZUNsYXNzOgorICAgICAgICBzdGF0
aWNfY2FzdDxjb25zdCBDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBGb250RmVhdHVyZUNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBGb250
RmVhdHVyZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlP
YmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRm9udENsYXNzOgorICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBGb250VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBG
b250RmFjZVNyY0NsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NGb250RmFjZVNy
Y1ZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJ
bmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRnVuY3Rpb25DbGFzczoKKyAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgQ1NTRnVuY3Rpb25WYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEluaGVyaXRlZENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NJbmhlcml0
ZWRWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEluaXRpYWxDbGFzczoKKyAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW5pdGlhbFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgUmVmbGVjdENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NSZWZsZWN0VmFs
dWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8p
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTaGFkb3dDbGFzczoKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8Y29uc3QgU2hhZG93VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBVbmljb2Rl
UmFuZ2VDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTVW5pY29kZVJhbmdlVmFs
dWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8p
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBMaW5lQm94Q29udGFpbkNsYXNzOgorICAgICAg
ICBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5lQm94Q29udGFpblZhbHVlKj4odGhpcyktPnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgQ2FsY3VsYXRpb25DbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3Qg
Q1NTQ2FsY1ZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlP
YmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDU1NfRklMVEVSUykgJiYg
RU5BQkxFKENTU19TSEFERVJTKQorICAgIGNhc2UgV2ViS2l0Q1NTU2hhZGVyQ2xhc3M6CisgICAg
ICAgIHN0YXRpY19jYXN0PGNvbnN0IFdlYktpdENTU1NoYWRlclZhbHVlKj4odGhpcyktPnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJu
OworI2VuZGlmCisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgY2FzZSBWYXJpYWJsZUNs
YXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NWYXJpYWJsZVZhbHVlKj4odGhpcykt
PnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisjaWYgRU5BQkxFKFNWRykKKyAgICBjYXNlIFNWR0NvbG9yQ2xhc3M6
CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFNWR0NvbG9yKj4odGhpcyktPnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgU1ZHUGFpbnRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgU1ZHUGFpbnQq
Pih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOwor
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBXZWJLaXRDU1NTVkdEb2N1bWVudENsYXNzOgorICAg
ICAgICBzdGF0aWNfY2FzdDxjb25zdCBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlKj4odGhpcykt
PnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAg
cmV0dXJuOworI2VuZGlmCisgICAgY2FzZSBWYWx1ZUxpc3RDbGFzczoKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8Y29uc3QgQ1NTVmFsdWVMaXN0Kj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2lmIEVOQUJMRShDU1Nf
SU1BR0VfU0VUKQorICAgIGNhc2UgSW1hZ2VTZXRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgQ1NTSW1hZ2VTZXRWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKKyAgICBjYXNlIFdlYktpdENTU0ZpbHRlckNsYXNzOgorICAgICAgICBz
dGF0aWNfY2FzdDxjb25zdCBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyNl
bmRpZgorICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtQ2xhc3M6CisgICAgICAgIHN0YXRpY19j
YXN0PGNvbnN0IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKIFN0cmluZyBDU1NWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNU
ZXh0Q2xvbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggODNjMmU4ZTU1NjYzNjZjMmNiMThj
NjA2YTU0MDc3NTRlYTAwZGIwYi4uMDU3MmUyYzEyYjAzZmIyYjJlODQ4ZDM0NWEzNTBmYzM5ZmZk
MGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogY2xhc3MgU3R5bGVTaGVldENv
bnRlbnRzOwogICAgIAogLy8gRklYTUU6IFRoZSBjdXJyZW50IENTU1ZhbHVlIGFuZCBzdWJjbGFz
c2VzIHNob3VsZCBiZSB0dXJuZWQgaW50byBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZSkuCkBA
IC0xMTksNiArMTIwLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVk
U3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBDbGFzc1R5cGVCaXRzID0gNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5k
ZXggYjhkMzZhNDE5YTU2YTc0MzlkNDNhNGE4M2QzZDA2MWIwZGRhZjI5OS4uMmVmM2Q1MTZkM2Uy
MDZjMzU3ZGY1ZWMyM2FjNTg3ODdiYTBkN2Q4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlz
dC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKIAogI2lu
Y2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xOTYsNCArMTk3
LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6OmNsb25lRm9yQ1NT
T00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTVmFsdWVMaXN0KCp0aGlzKSk7
CiB9CiAKK3ZvaWQgQ1NTVmFsdWVMaXN0OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFz
c0luZm88Q1NTVmFsdWVMaXN0PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZFZlY3RvcihtX3Zh
bHVlcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuaAppbmRleCA0MGJiNDM3OTVmYThkNDY1ZTAzMjZjZDBkYzAxYWU4ZTEyYjJmOTQyLi5lOTg4
ZDZjMmU0ZGQ3ZDJlYmU3YzM4ZDcxMWNmYzdmNjMyZDUxNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlTGlzdC5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0
ZWQ6CiAgICAgQ1NTVmFsdWVMaXN0KENsYXNzVHlwZSwgVmFsdWVMaXN0U2VwYXJhdG9yKTsKICAg
ICBDU1NWYWx1ZUxpc3QoY29uc3QgQ1NTVmFsdWVMaXN0JiBjbG9uZUZyb20pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmgKaW5kZXggMmM1YjY2YTZiOTQzYzg5OWQ3NjUzY2M5MzEz
NTk4N2IyZmVjNDlkZS4uOTNlMGFhNmI2ZjAwZTBjODVjZTZlOWY5ZDdjYzllMzM0ZDk4MDdiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDgsMTMgQEAgcHVibGljOgog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKKyAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1Zh
cmlhYmxlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgICAgICBpbmZvLmFkZE1lbWJlcihtX25hbWUpOworICAgICAgICBp
bmZvLmFkZE1lbWJlcihtX3ZhbHVlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgQ1NTVmFyaWFi
bGVWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgICAgIDogQ1NTVmFsdWUoVmFyaWFibGVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVh
dHVyZVZhbHVlLmNwcAppbmRleCA2MmMzOTYwNjg1OThhZjkxNTgwZjU1ZTVhOTRhODY4YWE1MWJm
MzJjLi42OWY1NDJmMTQ4ZTVkMTg1YzkxNWUzYWZhMDVmOTk1YTg2YzlmMmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVk
ZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw0ICs1MCwxMCBAQCBTdHJpbmcg
Rm9udEZlYXR1cmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKIH0KIAordm9pZCBGb250RmVhdHVyZVZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
K3sKKyAgICBNZW1vcnlDbGFzc0luZm88Rm9udEZlYXR1cmVWYWx1ZT4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV90YWcpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZlYXR1cmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaApp
bmRleCA3ZDVlMDM2YzA4YTYxODM5NTg1NTY3Mjc1MGE2MWU1NDdhZDVjNWViLi4yOGQ4OWY0MjM2
OWIwOGJlYjE0MTY1YjlhYmVhNmFmZmMzOTgwZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVh
dHVyZVZhbHVlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgIGludCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0
OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OworCiBwcml2YXRlOgogICAgIEZvbnRGZWF0dXJlVmFsdWUoY29uc3QgU3RyaW5n
JiwgaW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcAppbmRleCA4ODQxYTc5OTM1ZTJlNWEz
MzQxYTlmMzQ1YTA2NjQzNWEwMmQ1MTU1Li42NTZjN2Q4MjMwYzQ0ZjI1MzJiNmUzY2U3M2NhNmRj
MTk0MjBkZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcApAQCAtMjIsNiArMjIsNyBAQAog
CiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUu
aCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNjUs
NCArNjYsMTUgQEAgU3RyaW5nIEZvbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCit2b2lkIEZvbnRWYWx1ZTo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPEZvbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRNZW1iZXIoc3R5bGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHZh
cmlhbnQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHdlaWdodCk7CisgICAgaW5m
by5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoc2l6ZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIobGluZUhlaWdodCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoZmFtaWx5
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCmluZGV4IDVmODMzNjkyMTA1NWMzOThiMTUy
YzdjYjAzNTdjYmM3ZTc3ZWQ5M2EuLjAzYTYxMjY4YTU4NzQ3MGZjYjhhMjExMmE5ZjBiYzlkMGFh
ZTg0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YXJpYW50OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gd2VpZ2h0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCmluZGV4IDAzOTA0MjA0YzIzMTE2NjRjYzNkNmI5OWNk
M2QyNjJmNTBjYzAwZWIuLmMyNjljM2IxNjRhMGIxOGRmMmU3M2M4MjdiODI4NzY1NGJiOTNiNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKQEAgLTExNCw2ICsxMTQsNyBAQCB2
b2lkIE1lZGlhUXVlcnlFeHA6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgTWVtb3J5Q2xhc3NJbmZvPE1lZGlhUXVlcnlFeHA+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1Mp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFGZWF0dXJlKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX3NlcmlhbGl6YXRpb25DYWNoZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
bV92YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDhhMjQ4NTk0ZDYy
MzFjM2IwZDM1M2YyMzQxZWQxMDM3YWU0NDdiMDYuLjczYTQzMzJlOGE5ZDFmNDExMTM2MjFjNTZl
NWEyMjg1YmMwNmEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xMzUsNyArMTM1LDggQEAgdm9pZCBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU8KIHsKICAgICBNZW1vcnlDbGFzc0luZm88UHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6Q1NTKTsKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Byb3BlcnR5
U2V0KTsKLSAgICAvLyBGSVhNRTogYWRkIGluZm8uYWRkSW5zdHJ1bWVudGVkSGFzTWFwKG1fY3Nz
b21DU1NWYWx1ZUNsb25lcykgd2hlbiBDU1NWYWx1ZSBpcyBpbnN0cnVtZW50ZWQuCisgICAgaWYg
KG1fY3Nzb21DU1NWYWx1ZUNsb25lcykKKyAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNYXBF
bnRyaWVzKCptX2Nzc29tQ1NTVmFsdWVDbG9uZXMpOwogfQogCiB1bnNpZ25lZCBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246Omxlbmd0aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1Zh
bHVlLmNwcAppbmRleCAxNGM3Y2RhOGM1NzBiY2JkN2ZiNzU2ZmI1ZWY5YjliYWY5MDEzYmI0Li5k
YjY0NjY5MmVhYWU2MjRlZGNlNGJmY2MxZWY4Mzg4MzkyZTk3ZDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
aGFkb3dWYWx1ZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5o
IgogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC03Nyw0ICs3OCwxNSBAQCBTdHJpbmcgU2hhZG93VmFsdWU6OmN1c3RvbUNz
c1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCit2b2lkIFNoYWRvd1ZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U2hhZG93VmFsdWU+IGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHgpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKHkpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGJsdXIpOworICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKHNwcmVhZCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIoc3R5bGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbG9yKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAppbmRleCAyMTU0N2E1NzExZWUzZWU4ZjU0YjVj
ZDlmNWZhOGI2NTk2ZjQyOTNmLi5mMmQ4ZTZmNmY5OGJmNmZmZjYxNGJjMzUwNDU2MmRhMjMyZDAw
Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
eTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggMWU3OGFhYjY2ZTUzYjJjZTgzYTA3MmI1MDQxZjVm
N2NjM2Y2MTRjYi4uMzdkMzk3MWI0MTMzODg1MGZiODQxY2ExZGJkYWU2YzAxOGI5OGVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMTA5Miw2ICsxMDkyLDkg
QEAgdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICAgICAgaW5mby5hZGRWZWN0b3JQdHIobV9t
dXRhYmxlUHJvcGVydHlWZWN0b3IpOwogICAgIGVsc2UKICAgICAgICAgaW5mby5hZGRSYXdCdWZm
ZXIobV9wcm9wZXJ0aWVzLCBtX2FycmF5U2l6ZSAqIHNpemVvZihDU1NQcm9wZXJ0eSkpOworICAg
IHVuc2lnbmVkIGNvdW50ID0gcHJvcGVydHlDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihw
cm9wZXJ0eUF0KGkpKTsKIH0KIAogLy8gU2VlIHRoZSBmdW5jdGlvbiBhYm92ZSBpZiB5b3UgbmVl
ZCB0byB1cGRhdGUgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBk
ZDJkNWY5Nzg2Zjg4YTJmMzQ0ZmEwZTEyNTk3MjNkOTM0NDMyMjgzLi42YmRkNmViODI0ODFiN2M2
YzM3MDQ3YTk1NTM3MDY4NDBhYTM5ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCkBAIC01NjM3LDYgKzU2MzcsMjQgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGlu
Z1Jlc291cmNlcygpCiAjZW5kaWYKIH0KIAordm9pZCBTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJv
cGVydGllczo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U3R5bGVSZXNvbHZlcjo6TWF0Y2hl
ZFByb3BlcnRpZXM+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHByb3BlcnRpZXMp
OworfQorCit2b2lkIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVydGll
c0NhY2hlSXRlbT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRWZWN0b3IobWF0Y2hlZFByb3Bl
cnRpZXMpOworfQorCit2b2lkIE1lZGlhUXVlcnlSZXN1bHQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvPE1lZGlhUXVlcnlSZXN1bHQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVy
KG1fZXhwcmVzc2lvbik7Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1v
cnlDbGFzc0luZm88U3R5bGVSZXNvbHZlcj4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CkBAIC01NjQ3LDE4ICs1NjY1LDIzIEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3VuY29t
bW9uQXR0cmlidXRlUnVsZVNldCk7CiAgICAgaW5mby5hZGRIYXNoTWFwKG1fa2V5ZnJhbWVzUnVs
ZU1hcCk7CiAgICAgaW5mby5hZGRIYXNoTWFwKG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7Cisg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMobV9tYXRjaGVkUHJvcGVydGllc0NhY2hl
KTsKICAgICBpbmZvLmFkZFZlY3RvcihtX21hdGNoZWRSdWxlcyk7CiAKLSAgICAvLyBGSVhNRTog
SW5zdHJ1bWVudCBTdGF0aWNDU1NSdWxlTGlzdCBhbmQgYWRkIG1fcnVsZUxpc3QgaGVyZS4KKyAg
ICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3J1bGVMaXN0KTsKICAgICBpbmZvLmFkZEhh
c2hNYXAobV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKTsKLSAgICBpbmZvLmFkZFZlY3RvcihtX3Zp
ZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWFwVmFsdWVzKG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcyk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRNZW1iZXIobV9saW5lSGVpZ2h0VmFsdWUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkVmVjdG9yKG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cyk7CiAgICAgaW5m
by5hZGRIYXNoTWFwKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOwotICAgIGluZm8uYWRk
SGFzaFNldChtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQpOworICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWFwRW50cmllcyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwKTsKKyAgICBpbmZv
LmFkZEluc3RydW1lbnRlZEhhc2hTZXQobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0KTsKICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpICYmIEVOQUJMRShTVkcpCiAgICAgaW5mby5hZGRIYXNoTWFw
KG1fcGVuZGluZ1NWR0RvY3VtZW50cyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVE
KQogICAgIGluZm8uYWRkSGFzaE1hcChtX3Njb3BlZEF1dGhvclN0eWxlcyk7CisgICAgaW5mby5h
ZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKG1fc2NvcGVkQXV0aG9yU3R5bGVzKTsKICAgICBpbmZv
LmFkZFZlY3RvcihtX3Njb3BlU3RhY2spOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCmluZGV4IGUyYWViMmMwMDFlNzcyNWRlM2Y5Y2RhOTVmYzhhMjEwNWYxOWZiZjMuLmM5
ZjhkY2MyZDgwYTcwOGI5YTJmMTIzZmRmMTRjNWQzMGU2ZTJhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaApAQCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Jl
c3VsdChyZXN1bHQpCiAgICAgewogICAgIH0KKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIE1lZGlhUXVlcnlFeHAgbV9leHByZXNzaW9u
OwogICAgIGJvb2wgbV9yZXN1bHQ7CkBAIC0zMjAsNiArMzIxLDcgQEAgcHJpdmF0ZToKIAogICAg
IHN0cnVjdCBNYXRjaGVkUHJvcGVydGllcyB7CiAgICAgICAgIE1hdGNoZWRQcm9wZXJ0aWVzKCkg
OiBwb3NzaWJseVBhZGRlZE1lbWJlcigwKSB7IH0KKyAgICAgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8
U3R5bGVQcm9wZXJ0eVNldD4gcHJvcGVydGllczsKICAgICAgICAgdW5pb24gewpAQCAtNDQ3LDYg
KzQ0OSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZU1hdGNoZWRQ
cm9wZXJ0aWVzSGFzaChjb25zdCBNYXRjaGVkUHJvcGVydGllcyosIHVuc2lnbmVkIHNpemUpOwog
ICAgIHN0cnVjdCBNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSB7CisgICAgICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogICAgICAgICBWZWN0b3I8
TWF0Y2hlZFByb3BlcnRpZXM+IG1hdGNoZWRQcm9wZXJ0aWVzOwogICAgICAgICBNYXRjaFJhbmdl
cyByYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVuZGVyU3R5bGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAppbmRleCAyOTE2ZGMyZDE1
M2JmM2UyNDRiY2Y2NDA5MTI1OWZlNDMyZTAyMGVlLi43MWQ3YjlmOWZiYzM4MTEyODQ0YWNlNTUz
Njg2YmI4NWM1Yzg5ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJW
YWx1ZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC0xMTAsNiArMTExLDEyIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVy
VmFsdWU+IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU0ZpbHRlclZhbHVlKCp0aGlzKSk7CiB9CiAKK3Zv
aWQgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNz
SW5mbzxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NTVmFsdWVMaXN0OjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZh
bHVlLmgKaW5kZXggYTM0ZDU3NDVjNjVjOTY3NzNlMTZjZTA3M2IyMThiOWRjOGQxNGI4Zi4uMDhi
M2U5ZjlhNTAyOWE4MWQ1Nzg1ODNkOTY0ZDU4MzE3YjJkZmYyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogCiAg
ICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0
OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU0ZpbHRlclZhbHVlKEZpbHRlck9w
ZXJhdGlvblR5cGUpOwogICAgIFdlYktpdENTU0ZpbHRlclZhbHVlKGNvbnN0IFdlYktpdENTU0Zp
bHRlclZhbHVlJiBjbG9uZUZyb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NWR0RvY3VtZW50VmFsdWUuY3BwCmluZGV4IDQ5MDI1MDQ5NjZhYzMyY2JjYzcyZjAxMGU3ZDUy
OTg5ZDE3YWQ3MDQuLmRmNDFiOGQ0MGI1NDZhOTkzOWMwNThlNzQ4YTgxNzAyOTQzOGI3YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsNiAr
NjQsMTMgQEAgU3RyaW5nIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdXJsKTsKIH0KIAor
dm9pZCBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm88V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRNZW1i
ZXIobV91cmwpOworICAgIC8vIEZJWE1FOiBhZGQgbV9kb2N1bWVudCB3aGVuIGNhY2hlZCByZXNv
dXJjZXMgYXJlIGluc3RydW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZH
RG9jdW1lbnRWYWx1ZS5oCmluZGV4IGNiMDNmNTZlZTVjM2VjNGEwNzhiNTMxODllNzc1NTc1MDVm
OGQ3MzguLjk2YmNjOGMzMGM0OTYwMWI2NzJjMTg3NWM2ZDIwMjI0MjMwZTU3Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaApAQCAtNDUsNiAr
NDUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgIGJvb2wgbG9hZFJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFJl
cXVlc3RlZDsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU1NWR0RvY3VtZW50
VmFsdWUoY29uc3QgU3RyaW5nJiB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NoYWRlclZhbHVlLmNwcAppbmRleCA4NjUxNzU4ZWQ2Yzk5MTdmMDIyNDkxNzE1ZTZiZDU1NmI2
OWM1MjY3Li41Y2E3NzMzYjZhNmQ4YmUyNjVlNGE4YTQyNzRjZWRmZTgyMGEwOWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNTU1BhcnNl
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJTdHlsZVBl
bmRpbmdTaGFkZXIuaCIKIApAQCAtNzksNiArODAsMTIgQEAgU3RyaW5nIFdlYktpdENTU1NoYWRl
clZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gInVybCgiICsgcXVvdGVD
U1NVUkxJZk5lZWRlZChtX3VybCkgKyAiKSI7CiB9CiAKK3ZvaWQgV2ViS2l0Q1NTU2hhZGVyVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxXZWJLaXRDU1NTaGFkZXJW
YWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNTUyk7CisgICAgaW5mby5hZGRNZW1iZXIobV91cmwpOworfQorICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAppbmRleCBmZDk1YmM2M2NmN2FjNTA5Y2UzNTlk
MDliOGZiYzkwZTMxOWIxNGI0Li5jNDMyMDFjYTJhNGExNjRhYjkzNjNkNzk0NjJlNDI3NTRjMmZj
MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtNTAs
NiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0Owog
CisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU1NoYWRlclZhbHVlKGNvbnN0IFN0cmlu
ZyYgdXJsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5jcHAKaW5kZXggODdkZWQ3ZGE2YjU2NjI3ZDUwN2UxY2IwNWNiMzA2MGRhODAwMmE5Yi4uMWNi
NzNmYzA5ZDQwOWJmNzcyY2Q3YjQ2ZjQwNmQ5NzVkZjYzOTIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVl
TGlzdC5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xMDQsNCArMTA1LDEwIEBAIFBhc3NSZWZQdHI8
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpjbG9uZUZv
ckNTU09NKCkgY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZSgqdGhpcykpOwogfQogCit2b2lkIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpyZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwor
ICAgIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZS5oCmluZGV4IDVmYzRmN2Q2YmZkNWQ0ZDY3NmJhZDFkMDgyZDZiNDVkOTQ5Yjk3OTIuLmZk
MTE3ZjIzMjk0YmRhNTIxODJiMjNhZTYwNTZiM2I3M2Q5MThkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCkBAIC03NCw2ICs3NCw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBjbG9uZUZv
ckNTU09NKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSk7CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUoY29uc3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUmIGNsb25lRnJvbSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDdkY2E1YmVkOWRk
OTg1ODE1NTUwMzI1ZTExMWE3OGMxMTQwZWRmMDguLjI5OWU2MTRmYWVkNjE0ODRhMGIxMjVhMmY3
N2EyMmZmMzJlNDdjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0
cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwCkBAIC0zOCw5ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9i
amVjdFR5cGUgb2JqZWN0VHlwZSkKIHsKLSAgICBpZiAoc3RyaW5nLmlzTnVsbCgpIHx8IHZpc2l0
ZWQoc3RyaW5nLmltcGwoKSkpCisgICAgYWRkT2JqZWN0KHN0cmluZy5pbXBsKCksIG9iamVjdFR5
cGUpOworfQorCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0KGNvbnN0IFN0
cmluZ0ltcGwqIHN0cmluZ0ltcGwsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkKK3sKKyAgICBpZiAo
IXN0cmluZ0ltcGwgfHwgdmlzaXRlZChzdHJpbmdJbXBsKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBzdHJpbmcuaW1wbCgpLT5zaXplSW5CeXRlcygp
KTsKKyAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlwZSwgc3RyaW5nSW1wbC0+c2l6ZUluQnl0
ZXMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCA4ODM0ZDM3Njg5MjI5YzlhZDBiZWZhMzY0Mjdl
ZTA4NTk1ZjE5ZmUzLi42YThlYzQ1YTgwZDQ3MDk3ZTBkODkyZTc4NDRhYmJmZmI1NWU1MDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC0xMDIsMTEg
KzEwMiwxMyBAQCBwcml2YXRlOgogICAgICAgICBPd25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0
aGlzLCB0LCBvd25lck9iamVjdFR5cGUpOwogICAgIH0KICAgICB2b2lkIGFkZE9iamVjdChjb25z
dCBTdHJpbmcmLCBPYmplY3RUeXBlKTsKKyAgICB2b2lkIGFkZE9iamVjdChjb25zdCBTdHJpbmdJ
bXBsKiwgT2JqZWN0VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7
IE93bmluZ1RyYWl0czxUPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2Jq
ZWN0VHlwZSk7IH0KLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBh
ZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRk
SGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkg
PSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPiB2b2lkIGFk
ZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUmLCBPYmplY3RUeXBl
LCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBU
eXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYsIE9iamVj
dFR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1l
bnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiwgT2JqZWN0VHlwZSk7CiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0
SGFzaFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZFZlY3Rvcihjb25zdCBWZWN0
b3JUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKICAgICB2b2lk
IGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBjb25zdCYgYnVmZmVyLCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCkBAIC0xOTAsMTAgKzE5MiwxMyBAQCBwdWJsaWM6CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25z
dCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoTWFw
KG1hcCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNo
U2V0VHlwZT4gdm9pZCBhZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1v
cnlJbnN0cnVtZW50YXRpb24tPmFkZEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hDb3VudGVk
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFk
ZEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZEhhc2hTZXQoY29uc3QgSGFzaFNl
dFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29s
bGVjdGlvbihzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRWZWN0b3IoY29uc3QgVmVjdG9yVHlw
ZSYgdmVjdG9yKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xs
ZWN0aW9uKHZlY3RvciwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZFZlY3RvclB0cihjb25zdCBPd25Q
dHI8VmVjdG9yVHlwZT4mIHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5z
dHJ1bWVudGVkQ29sbGVjdGlvbigqdmVjdG9yLCBtX29iamVjdFR5cGUsIGZhbHNlKTsgfQogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZFZlY3Rv
clB0cihjb25zdCBWZWN0b3JUeXBlKiBjb25zdCYgdmVjdG9yKSB7IG1fbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKCp2ZWN0b3IsIG1fb2JqZWN0VHlwZSwg
ZmFsc2UpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1
bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMobWFwLCBtX29iamVjdFR5cGUpOyB9Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwVmFs
dWVzKGNvbnN0IE1hcFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5z
dHJ1bWVudGVkTWFwVmFsdWVzKG1hcCwgbV9vYmplY3RUeXBlKTsgfQogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhh
c2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZExpc3RIYXNoU2V0
KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0
b3JUeXBlPiB2b2lkIGFkZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgbV9tZW1v
cnlJbnN0cnVtZW50YXRpb24tPmFkZFZlY3Rvcih2ZWN0b3IsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7
IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRWZWN0b3JQdHIo
Y29uc3QgVmVjdG9yVHlwZSogY29uc3QgdmVjdG9yKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5hZGRWZWN0b3IoKnZlY3RvciwgbV9vYmplY3RUeXBlLCBmYWxzZSk7IH0KQEAgLTIwMSw2ICsy
MDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE1lbWJlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0KHN0cmluZywgbV9vYmplY3RU
eXBlKTsgfQogICAgIHZvaWQgYWRkTWVtYmVyKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKSB7
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3QoKGNvbnN0IFN0cmluZyYpc3RyaW5n
LCBtX29iamVjdFR5cGUpOyB9CisgICAgdm9pZCBhZGRNZW1iZXIoY29uc3QgU3RyaW5nSW1wbCog
c3RyaW5nKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3Qoc3RyaW5nLCBtX29i
amVjdFR5cGUpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVtb3J5T2JqZWN0SW5mbyogbV9tZW1vcnlP
YmplY3RJbmZvOwpAQCAtMzA2LDYgKzMxMiwyNCBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbAog
ICAgICAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3QoKmksIG93bmVyT2JqZWN0VHlwZSk7CiB9CiAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYgbWFwLCBPYmplY3RUeXBl
IG93bmVyT2JqZWN0VHlwZSkKK3sKKyAgICB0eXBlbmFtZSBNYXBUeXBlOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtYXAuZW5kKCk7CisgICAgZm9yICh0eXBlbmFtZSBNYXBUeXBlOjpjb25zdF9pdGVy
YXRvciBpID0gbWFwLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgYWRkSW5zdHJ1
bWVudGVkT2JqZWN0KGktPmZpcnN0LCBvd25lck9iamVjdFR5cGUpOworICAgICAgICBhZGRJbnN0
cnVtZW50ZWRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOworICAgIH0KK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0VHlwZSBv
d25lck9iamVjdFR5cGUpCit7CisgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKQorICAgICAgICBhZGRJbnN0cnVtZW50
ZWRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOworfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBMaXN0SGFzaFNldFR5cGU+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkTGlz
dEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCmlu
ZGV4IDI1NzJiN2JiZmUyOWZjMjE2YjhhZThhNjljM2NiNGQyZTg3YTMxYWQuLjBlZGVkNjExYzhm
OGFhYmVhNDQyZjAxNDYzYmQwMjQyMGVhNDcyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcApA
QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAKICNpbmNsdWRlICJDU1NQ
YXJzZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJS
R0JDb2xvci5oIgogI2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgogCkBAIC0xMDQsNiArMTA1LDEx
IEBAIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IFNWR0NvbG9yOjpjbG9uZUZvckNTU09NKCkgY29uc3QK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0NvbG9yKFNWR0NvbG9yQ2xhc3MsICp0aGlzKSk7
CiB9CiAKK3ZvaWQgU1ZHQ29sb3I6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5m
bzxTVkdDb2xvcj4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkNTUyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
b2xvci5oCmluZGV4IGNmZmFjNTM4NWUyMTUxOWM2Mjg4MTVhYzkzMjE2YTYzMzM1MDg5NzQuLjdk
ZGRjZDdhOTQ0NGIxMWNkODU2NTQ5YTMyNDk1YmZmMWU5MGRjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xv
ci5oCkBAIC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRyPFNWR0Nv
bG9yPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBm
cmllbmQgY2xhc3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
aW50LmNwcAppbmRleCA4Y2YzZDdlNTY4MjJlYWNlMWFjMTNiMmZlYzI4NGVkOGVmNzNhOGUwLi45
YzY1NWIzY2VmNmYwNTQ4MDUzMjM0MGYzY2MwMDJjYWRjZmNlMThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YWludC5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNW
R1BhaW50LmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJTVkdFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTExMSw2ICsxMTIsMTIgQEAgUGFzc1JlZlB0cjxT
VkdQYWludD4gU1ZHUGFpbnQ6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHUGFpbnQoKnRoaXMpKTsKIH0KIAordm9pZCBTVkdQYWludDo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPFNWR1BhaW50PiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX3VyaSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWlu
dC5oCmluZGV4IGIwNTNjYmQ3Nzc4YzdhMTkwMmFlZmE1ZDZlZTA5ZGU4N2Y4YjNiOTMuLmFjNTY3
NWI1OWVkZTBjOWI5MGY3MWRhM2M4ZTYyYzdlZTk3ZWRlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYWludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5o
CkBAIC05NSw2ICs5NSw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGNs
b25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156643</attachid>
            <date>2012-08-06 03:05:33 -0700</date>
            <delta_ts>2012-08-06 04:51:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93130-20120806140508.patch</filename>
            <type>text/plain</type>
            <size>79264</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I5MjhmNTBmOTJhNTA4
Mjk0YjBjZDJiNWQzMjRjNjJmYzRiNWRiNC4uYzNhZWVhZTI3YTJmMjQyZDFjMGE4ZDFhNWZkYzhi
YjRhZGI0YWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNSBAQAorMjAxMi0wOC0wMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgbWVtb3J5IGluc3RydW1lbnRhdGlvbiBmb3IgQ1NTVmFsdWUgYW5kIGl0cyBkZXNj
ZW5kYW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBtZW1vcnkgZm9vdHByaW50IHJlcG9ydGluZyByb3V0aW5lIHRvIENTU1ZhbHVlIGFuZCBp
dHMgZGVzY2VuZGFudHMuCisKKyAgICAgICAgTWVtb3J5IHJlcG9yaW5nIGZvciBDU1NWYWx1ZSBp
cyBvcmdhbml6ZWQgaW4gYSBmb2xsb3dpbmcgd2F5OgorICAgICAgICAtIENTU1ZhbHVlIGltcGxl
bWVudHMgcmVwb3J0TWVtb3J5VXNhZ2UgbWV0aG9kIHRoYXQgc3dpdGNoZXMgYnkgdGhlIHZhbHVl
CisgICAgICAgICAgdHlwZSBhbmQgY2FsbHMgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlIG9u
IHRoZSBjb25jcmV0ZSB0eXBlCisgICAgICAgIC0gVGhlcmUgbWF5IGJlIHNvbWUgaW50ZXJtZWRp
YXRlIGNsYXNzZXMgaW4gdGhlIGluaGVyaXRhbmNlIGNoYWluIGJldHdlZW4KKyAgICAgICAgICBD
U1NWYWx1ZSBhbmQgdGhlIGxlYWYgY2xhc3MgaW1wbGVtZW50aW5nIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZS4gVGhvc2UKKyAgICAgICAgICBpbnRlcm1lZGlhdGUgY2xhc3NlcyBpbXBsZW1l
bnQgcmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UgbWV0aG9kIHRoYXQgY2FuCisgICAgICAgICAg
YmUgY2FsbGVkIGZyb20gYSBkZXNjZW5kYW50IHRvIGNvbGxlY3QgbWVtb3J5IGluZm9ybWF0aW9u
IGZvciB0aGUgYmFzZSBjbGFzcworICAgICAgICAgIG1lbWJlcnMuIEhhdmluZyByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2Ugb25seSBvbiB0aGUgbGVhZiBjbGFzc2VzIHByZXZlbnRzCisgICAg
ICAgICAgdXMgZnJvbSBhY2NpZGVudGFsbHkgYWRkaW5nIHRoZSBpbnRlcm1lZGlhdGUgY2xhc3Nl
cyB0byB0aGUgc3dpdGNoIGJsb2NrCisgICAgICAgICAgaW4gdGhlIENTU1ZhbHVlOjpyZXBvcnRN
ZW1vcnlVc2FnZS4KKworICAgICAgICAqIGNzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0FzcGVjdFJhdGlvVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0
aW9WYWx1ZS5oOgorICAgICAgICAoQ1NTQXNwZWN0UmF0aW9WYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmg6Cisg
ICAgICAgIChDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDYWxj
dWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FsY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
OgorICAgICAgICAoQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKENTU0NhbGNWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbnZhc1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgIChDU1ND
YW52YXNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVl
Lmg6CisgICAgICAgIChDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0N1cnNv
ckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJzb3JJbWFnZVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Up
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUu
aDoKKyAgICAgICAgKENTU0ZvbnRGYWNlU3JjVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGdW5j
dGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Z1bmN0aW9uVmFsdWU6OnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBj
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoQ1NTRnVuY3Rpb25WYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3Jh
ZGllbnRDb2xvclN0b3A6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5
VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL0NT
U0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKENTU0dyYWRpZW50Q29sb3JTdG9wKToKKyAgICAg
ICAgKENTU0dyYWRpZW50VmFsdWUpOgorICAgICAgICAoQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSk6
CisgICAgICAgIChDU1NSYWRpYWxHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgorICAgICAgICAoQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VT
ZXRWYWx1ZTo6SW1hZ2VXaXRoU2NhbGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBj
c3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAgICAgICAoSW1hZ2VXaXRoU2NhbGUpOgorICAgICAg
ICAoQ1NTSW1hZ2VTZXRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6
CisgICAgICAgIChDU1NJbWFnZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW5oZXJpdGVkVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW5oZXJpdGVkVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NT
SW5oZXJpdGVkVmFsdWUuaDoKKyAgICAgICAgKENTU0luaGVyaXRlZFZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0luaXRpYWxW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuaDoKKyAgICAgICAgKENTU0luaXRpYWxWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTTGluZUJveENvbnRhaW5WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFp
blZhbHVlLmg6CisgICAgICAgIChDU1NMaW5lQm94Q29udGFpblZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1JlZmxlY3RWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NSZWZsZWN0VmFsdWUuaDoKKyAgICAg
ICAgKENTU1JlZmxlY3RWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5j
dGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NMaW5lYXJUaW1pbmdGdW5jdGlv
blZhbHVlKToKKyAgICAgICAgKENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSk6Cisg
ICAgICAgIChDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NV
bmljb2RlUmFuZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NVbmljb2RlUmFuZ2VW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oOgorICAgICAgICAoQ1NTVW5pY29k
ZVJhbmdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2xvbmVDU1NWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKFRleHRDbG9uZUNTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NWYWx1ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0
OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogY3NzL0NTU1ZhbHVlTGlzdC5oOgorICAgICAgICAoQ1NTVmFsdWVMaXN0KToKKyAgICAg
ICAgKiBjc3MvQ1NTVmFyaWFibGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFi
bGVWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKENTU1Zhcmlh
YmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9Gb250RmVhdHVyZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGZWF0dXJlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvRm9udEZlYXR1cmVWYWx1ZS5oOgor
ICAgICAgICAoRm9udEZlYXR1cmVWYWx1ZSk6CisgICAgICAgICogY3NzL0ZvbnRWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvRm9udFZhbHVlLmg6CisgICAg
ICAgIChGb250VmFsdWUpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHA6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KiBjc3MvU2hhZG93VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBjc3MvU2hhZG93VmFsdWUuaDoKKyAgICAgICAgKFNoYWRvd1ZhbHVlKToKKyAgICAgICAgKiBj
c3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpj
b2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NGaWx0
ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTRmlsdGVyVmFs
dWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRWYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSk6
CisgICAgICAgICogY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdENTU1NoYWRlclZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmg6
CisgICAgICAgIChXZWJLaXRDU1NTaGFkZXJWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZSk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmg6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2xhc3NJbmZvOjphZGRIYXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDbGFzc0luZm86OmFkZE1lbWJlcik6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmg6CisgICAg
ICAgIChTVkdDb2xvcik6CisgICAgICAgICogc3ZnL1NWR1BhaW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhaW50OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAgICAgIChTVkdQYWludCk6
CisKIDIwMTItMDgtMDYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uOiBj
b3ZlciBNZW1vcnlDYWNoZSB3aXRoIE1lbW9yeUluc3RydW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCmluZGV4IDE4YjBkZWQ2NzM2ZWUxNDQ5Zjg3
MDFlZTk5YTk3MTAyZWIzY2I1MzcuLmIwN2Y3YmE2NjljYWZhMmZkODNjYzdmNGY1YmNmZmMyNWUx
MWM3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NBc3BlY3RS
YXRpb1ZhbHVlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQyLDQgKzQzLDkgQEAgU3RyaW5nIENTU0FzcGVjdFJhdGlvVmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAordm9pZCBDU1NBc3Bl
Y3RSYXRpb1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQXNw
ZWN0UmF0aW9WYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNTUyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBc3BlY3RSYXRpb1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9W
YWx1ZS5oCmluZGV4IDJmNmI0MjZkOGMwYTgzYTk2Zjk1ZWM5MGJiMmJjZjZhYWNhM2ZjMjUuLjVj
YzMzOTI0OWJiNTEzMWFiNjY2NWQxZTI4MjBiNGQ4ZDc4MmQ0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgbnVtZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvclZhbHVlOyB9
CiAgICAgZmxvYXQgZGVub21pbmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0
b3JWYWx1ZTsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU0FzcGVjdFJhdGlvVmFsdWUo
ZmxvYXQgbnVtZXJhdG9yVmFsdWUsIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUpCiAgICAgICAgIDog
Q1NTVmFsdWUoQXNwZWN0UmF0aW9DbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZS5jcHAKaW5kZXggMDRlZjJkMzY2YzgwYzMyZTc2N2M3Njk1MGM2
NTYxMGQ2Y2I2NTJkMC4uZmY3M2FjYWY4NDkxNmUyZDczMTkxYjZlYWY5YzhhZDVmOTdmMmRjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWUuaCIKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogCkBAIC00
OSw0ICs1MCwxMCBAQCBTdHJpbmcgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjdXN0b21Dc3NU
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAordm9pZCBDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2xpY2Vz
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCmluZGV4IGQ4MjMwZjQ3NGViZjlmNGFkNDg5ZTc3Y2Vh
MjE2NGVkNDg3Y2U2NmYuLjQ4OGI0YTQxZDIwZGZhZjJjNDIyYzYxNDM4MDUzZTE0NWVmNDQ2ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKQEAg
LTQ1LDYgKzQ1LDggQEAgcHVibGljOgogCiAgICAgUXVhZCogc2xpY2VzKCkgeyByZXR1cm4gbV9z
bGljZXMgPyBtX3NsaWNlcy0+Z2V0UXVhZFZhbHVlKCkgOiAwOyB9CiAKKyAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKICAgICAv
LyBUaGVzZSBmb3VyIHZhbHVlcyBhcmUgdXNlZCB0byBtYWtlICJjdXRzIiBpbiB0aGUgYm9yZGVy
IGltYWdlLiBUaGV5IGNhbiBiZSBudW1iZXJzCiAgICAgLy8gb3IgcGVyY2VudGFnZXMuCiAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3NsaWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA1NDI0N2UwMzU5ZmI0NzQ4MWNjYWIyNzg0ZmUw
NDQyOGNjZDdjNGY0Li5iYzhlZGQ5M2YxYTMyMDMxNjQwODYxMGE5NmY2M2QyYmU1MWIxZDUwIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJMZW5ndGguaCIK
KyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTdHlsZVJlc29s
dmVyLmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC04Niw2ICs4NywxMSBAQCBTdHJp
bmcgQ1NTQ2FsY1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnKScpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsgCiB9CisKK3ZvaWQgQ1NT
Q2FsY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ2FsY1Zh
bHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Q1NTKTsKK30KICAgICAKIGRvdWJsZSBDU1NDYWxjVmFsdWU6OmNsYW1wVG9QZXJtaXR0ZWRSYW5n
ZShkb3VibGUgdmFsdWUpIGNvbnN0CiB7CkBAIC0xNzUsNiArMTgxLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gMDsgICAgICAgIAogICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0NhbGNQ
cmltaXRpdmVWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNTUyk7CisgICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fdmFs
dWUpOworICAgIH0KICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCkBAIC0yNjAs
NiArMjcyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGV2YWx1YXRlKGxlZnRWYWx1ZSwg
cmlnaHRWYWx1ZSk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0IE9WRVJSSURFCisgICAg
eworICAgICAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAg
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fbGVmdFNpZGUpOworICAgICAgICBpbmZv
LmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3JpZ2h0U2lkZSk7CisgICAgfQorCiAgICAgdmlydHVh
bCBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4
IDU3YTI0OWY4OTY4YzUxNjQ4Mjg2ZWU3NDEwNDU3MTdlZGVlNjY3NmYuLmIyNWY3YjMxYTUwMjJj
MDhiOGZmNmQ1YTYyNmQwYzQzNzQ0ZjQ5MTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuaApAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3Vi
bGUgZG91YmxlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgY29tcHV0ZUxl
bmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUs
IGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2Up
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdCA9IDA7CiAgICAgCiAgICAgQ2FsY3VsYXRpb25DYXRlZ29yeSBjYXRlZ29yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2F0ZWdvcnk7IH0gICAgCiAgICAgYm9vbCBpc0ludGVnZXIoKSBjb25z
dCB7IHJldHVybiBtX2lzSW50ZWdlcjsgfQpAQCAtOTUsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAg
ZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdG
b250U2l6ZSA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgCiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKKworICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKICAgICAKIHByaXZhdGU6ICAgIAogICAgIENTU0NhbGNWYWx1
ZShQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbiwgQ2FsY3VsYXRp
b25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1
ZS5jcHAKaW5kZXggNzgzY2VlZjgyYjUwZjg4NWUzNzA1OWU3NWRlMTU2ZGVkZjI3ZDE2MS4uYzBh
ZGU0MmUwMzQwZDk3Y2JjNWEyMmU2YTcwYTdhZDI4ZThlZjdhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FudmFzVmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTQ2FudmFz
VmFsdWUuaCIKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTkyLDQgKzkzLDEyIEBAIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0NhbnZhc1Zh
bHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiAvCiAgICAg
cmV0dXJuIGVsdC0+Y29waWVkSW1hZ2UoKTsKIH0KIAordm9pZCBDU1NDYW52YXNWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0NhbnZhc1ZhbHVlPiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZShtZW1vcnlP
YmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX25hbWUpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fZWxlbWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggMTU5ZTYxOTU2OGJhNTAzOGM1NzFk
YzE0NWQ4OWVmZDk2NWZlNGQ5NC4uMTNmYjU4NzQxZTU3MGQ1YjRhNTNkZjMyNTJlNGUzYzg2NjYx
NDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDggQEAg
cHVibGljOgogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KIAorICAgIHZv
aWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBDU1NDYW52YXNWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShDYW52YXNDbGFzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGE5NWQxZTczYjc2YzdmNjg1NzhlODRiNGM1
ZWFkMTViOWE4OTVhNDguLjY2YjNkM2VkZjdlZGFlYzIxMWU1NDQ1MzQxYWE0YTNhYjBkMDQ0OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2lu
Y2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZUdlbmVyYXRlZEltYWdl
LmgiCkBAIC0xMzQsNiArMTM1LDE5IEBAIHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJp
bWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgbV9j
cm9zc2ZhZGVTdWJpbWFnZU9ic2VydmVyLnNldFJlYWR5KHRydWUpOwogfQogCit2b2lkIENTU0Ny
b3NzZmFkZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ3Jv
c3NmYWRlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnJlcG9ydEJhc2VDbGFz
c01lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
TWVtYmVyKG1fZnJvbVZhbHVlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Rv
VmFsdWUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcGVyY2VudGFnZVZhbHVl
KTsKKyAgICAvLyBGSVhNRTogYWRkIGluc3RydW1lbnRhdGlvbiBmb3IKKyAgICAvLyBtX2NhY2hl
ZEZyb21JbWFnZQorICAgIC8vIG1fY2FjaGVkVG9JbWFnZQorICAgIC8vIG1fZ2VuZXJhdGVkSW1h
Z2UKK30KKwogUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUu
aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAppbmRleCA4OWE3
MmM0ZTkyNzJkZDBkNzA0ZTFiN2U0YTE1Y2Q5NWFlOWNlZTdmLi5mNTI2N2ViY2RlMzU3OWE2MGY3
YmNlNmY0MGVhNTg4ZGI5YjViNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFs
dWUuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2Fu
Y2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1ND
cm9zc2ZhZGVWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBmcm9tVmFsdWUsIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHRvVmFsdWUpCiAgICAgICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShDcm9z
c2ZhZGVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFn
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApp
bmRleCBmODUwNjg0OGZmNzQ1NGM0MDI3YzBmMmMxMWQxNGE4NGJiZTYyOGViLi5jYTU0NGY1MmZl
OTAzNjUwNjFkMGY3ZjA1MmJmNWNjMDEzNDU3NDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0N1cnNvckltYWdlVmFsdWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CkBAIC0xMzIsNCArMTMzLDEyIEBAIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6cmVtb3ZlUmVm
ZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIH0KICNlbmRpZgogCit2b2lkIENT
U0N1cnNvckltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxD
U1NDdXJzb3JJbWFnZVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKKyNpZiBFTkFCTEUoU1ZHKQorICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkSGFzaFNldChtX3JlZmVyZW5jZWRFbGVtZW50cyk7CisjZW5kaWYKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0N1cnNv
ckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgK
aW5kZXggY2IyNjkxOWU0NjgzZDYyNTU2N2U3ODc0OWE3YzgwZmZjOWNlMGVlNy4uZGM4ZDFmZjRj
YTVmNTg2NTI4ZTk3MDYyY2Q1ZTk4ZDY2ZjZiMTJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJl
bW92ZVJlZmVyZW5jZWRFbGVtZW50KFNWR0VsZW1lbnQqKTsKICNlbmRpZgogCisgICAgdm9pZCBy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBw
cml2YXRlOgogICAgIENTU0N1cnNvckltYWdlVmFsdWUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IEludFBvaW50JiBob3RTcG90KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ZvbnRGYWNlU3JjVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3Jj
VmFsdWUuY3BwCmluZGV4IDYwNWIyZmNlNzFhOTg4YTBlMDQ2ZTM1YjZjNmJiNmYxODE0N2QwM2Yu
Ljk3MTYxNDBkODc2OWQxNzg2NTZjMjFjOTY5MzAyMjI3NTFlMjUwNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKQEAgLTI5LDcgKzI5LDkgQEAKICNpbmNs
dWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJTVkdGb250RmFjZUVsZW1l
bnQuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtOTUsNSArOTcsMTYgQEAgQ2FjaGVkRm9udCogQ1NTRm9udEZhY2VTcmNWYWx1ZTo6
Y2FjaGVkRm9udChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgcmV0dXJuIG1fY2FjaGVkRm9udC5n
ZXQoKTsKIH0KIAordm9pZCBDU1NGb250RmFjZVNyY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAg
ICBNZW1vcnlDbGFzc0luZm88Q1NTRm9udEZhY2VTcmNWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRNZW1i
ZXIobV9yZXNvdXJjZSk7CisgICAgaW5mby5hZGRNZW1iZXIobV9mb3JtYXQpOworICAgIC8vIEZJ
WE1FOiBhZGQgbV9jYWNoZWRGb250IHdoZW4gTWVtb3J5Q2FjaGUgaXMgaW5zdHJ1bWVudGVkLgor
I2lmIEVOQUJMRShTVkdfRk9OVFMpCisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9z
dmdGb250RmFjZUVsZW1lbnQpOworI2VuZGlmCit9CisKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250RmFjZVNyY1ZhbHVlLmgKaW5kZXggMDZlZjRiMzMwNzkwMDE1YjVmMTQwMmRjOTQ1MDQ4
ZmRiZTBjOWQ0My4uNDQ0NGM4NjA2OTJhYjY4ZTI1N2ZmOGY2NTU2Y2UwMTJmOThhYWZjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCkBAIC03MSw2ICs3MSw4IEBA
IHB1YmxpYzoKIAogICAgIENhY2hlZEZvbnQqIGNhY2hlZEZvbnQoRG9jdW1lbnQqKTsKIAorICAg
IHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25z
dDsKKwogcHJpdmF0ZToKICAgICBDU1NGb250RmFjZVNyY1ZhbHVlKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2UsIGJvb2wgbG9jYWwpCiAgICAgICAgIDogQ1NTVmFsdWUoRm9udEZhY2VTcmNDbGFzcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmNwcAppbmRleCA1MjJhZDlmZDE2NGE3
ZDVkNGFkY2NmYWVhYmY3NmM3YzhiMzY2MTVhLi41M2RjNDNmYjM4MmQzYjZhYjNjYmNkMTUyZDI0
NzNlZDY2NGNlYzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25W
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuY3BwCkBA
IC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKICNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw0
ICs1MCwxMSBAQCBTdHJpbmcgQ1NTRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBDU1NGdW5jdGlvblZhbHVlOjpyZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTRnVuY3Rpb25WYWx1ZT4gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5m
by5hZGRNZW1iZXIobV9uYW1lKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX2Fy
Z3MpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25W
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAppbmRleCBhMzVh
MWIxN2IzMTAyODk5YmViZmRkMWUxOGNjMTNiNGM3ZjZiN2JmLi42YjdmYmM2NWU0ZTRmMWMwN2Nh
NTJlMTIzZmNmZGFlZDU3MTkzNmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVl
LmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQo
KSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBDU1NGdW5jdGlvblZh
bHVlKENTU1BhcnNlckZ1bmN0aW9uKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmNwcAppbmRleCAzZjE5NzlmZWU1MDA0ZDNlYmJkOGZkN2E1MWRiNzE3M2ZhZDFmZTAzLi4z
MDc2ZDJhZjYyYTlhZjA5NTY5N2M5MmE1YjUyMGFiN2JjMGNlODkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSW1h
Z2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiSW50U2l6ZUhhc2guaCIKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVj
dC5oIgpAQCAtNDIsNiArNDMsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCit2b2lkIENTU0dyYWRpZW50Q29sb3JTdG9wOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9y
eUNsYXNzSW5mbzxDU1NHcmFkaWVudENvbG9yU3RvcD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0
aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50
ZWRNZW1iZXIobV9wb3NpdGlvbik7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9j
b2xvcik7Cit9CisKIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNp
emUuaXNFbXB0eSgpKQpAQCAtNDUyLDYgKzQ2MCwxNyBAQCBib29sIENTU0dyYWRpZW50VmFsdWU6
OmlzQ2FjaGVhYmxlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDU1NHcmFk
aWVudFZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NHcmFkaWVu
dFZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Q1NTKTsKKyAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1v
cnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJl
cihtX2ZpcnN0WCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9maXJzdFkpOwor
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2Vjb25kWCk7CisgICAgaW5mby5hZGRJ
bnN0cnVtZW50ZWRNZW1iZXIobV9zZWNvbmRZKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZFZl
Y3RvcihtX3N0b3BzKTsKK30KKwogU3RyaW5nIENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmN1c3Rv
bUNzc1RleHQoKSBjb25zdAogewogICAgIFN0cmluZyByZXN1bHQ7CkBAIC01OTQsNiArNjEzLDEz
IEBAIFBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdy
YWRpZW50KFJlbmRlck9iamVjdCogcmVuZGVyCiAgICAgcmV0dXJuIGdyYWRpZW50LnJlbGVhc2Uo
KTsKIH0KIAordm9pZCBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAg
ICBNZW1vcnlDbGFzc0luZm88Q1NTTGluZWFyR3JhZGllbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NTR3JhZGll
bnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cisg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9hbmdsZSk7Cit9CisKIFN0cmluZyBDU1NS
YWRpYWxHcmFkaWVudFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcg
cmVzdWx0OwpAQCAtODkxLDQgKzkxNywxNiBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NSYWRp
YWxHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAg
IHJldHVybiBncmFkaWVudC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgQ1NTUmFkaWFsR3JhZGllbnRW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9y
eU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1JhZGlhbEdyYWRp
ZW50VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpDU1MpOworICAgIENTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVz
YWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1f
Zmlyc3RSYWRpdXMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2Vjb25kUmFk
aXVzKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3NoYXBlKTsKKyAgICBpbmZv
LmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3NpemluZ0JlaGF2aW9yKTsKKyAgICBpbmZvLmFkZElu
c3RydW1lbnRlZE1lbWJlcihtX2VuZEhvcml6b250YWxTaXplKTsKKyAgICBpbmZvLmFkZEluc3Ry
dW1lbnRlZE1lbWJlcihtX2VuZFZlcnRpY2FsU2l6ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5oCmluZGV4IDBjN2VmNzc2NGIy
MTBiMzM2NmZiMGMzOTBkYTQ0YjM0NjM0OWU4OTQuLjg4MmNjNjI4ZmZkNjU2ZmVhYTFhNmQ0NzFm
ZWNiNjdmM2NmYmRhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVu
dFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAt
NDUsNiArNDUsNyBAQCBzdHJ1Y3QgQ1NTR3JhZGllbnRDb2xvclN0b3AgewogICAgIFJlZlB0cjxD
U1NQcmltaXRpdmVWYWx1ZT4gbV9jb2xvcjsKICAgICBDb2xvciBtX3Jlc29sdmVkQ29sb3I7CiAg
ICAgYm9vbCBtX2NvbG9ySXNEZXJpdmVkRnJvbUVsZW1lbnQ7CisgICAgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiB9OwogCiBjbGFzcyBDU1NHcmFkaWVu
dFZhbHVlIDogcHVibGljIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUgewpAQCAtMTA1LDYgKzEwNiw4
IEBAIHByb3RlY3RlZDoKIAogICAgIGJvb2wgaXNDYWNoZWFibGUoKSBjb25zdDsKIAorICAgIHZv
aWQgcmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0Owor
CiAgICAgLy8gUG9pbnRzLiBTb21lIG9mIHRoZXNlIG1heSBiZSBudWxsIGZvciBsaW5lYXIgZ3Jh
ZGllbnRzLgogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9maXJzdFg7CiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX2ZpcnN0WTsKQEAgLTEzOSw2ICsxNDIsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSgq
dGhpcykpOwogICAgIH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NMaW5lYXJHcmFkaWVu
dFZhbHVlKENTU0dyYWRpZW50UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZh
bHNlKQogICAgICAgICA6IENTU0dyYWRpZW50VmFsdWUoTGluZWFyR3JhZGllbnRDbGFzcywgcmVw
ZWF0LCBkZXByZWNhdGVkVHlwZSkKQEAgLTE4MCw2ICsxODUsOCBAQCBwdWJsaWM6CiAgICAgLy8g
Q3JlYXRlIHRoZSBncmFkaWVudCBmb3IgYSBnaXZlbiBzaXplLgogICAgIFBhc3NSZWZQdHI8R3Jh
ZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKTsKIAor
ICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NSYWRpYWxHcmFkaWVudFZhbHVlKENTU0dyYWRpZW50
UmVwZWF0IHJlcGVhdCwgYm9vbCBkZXByZWNhdGVkVHlwZSA9IGZhbHNlKQogICAgICAgICA6IENT
U0dyYWRpZW50VmFsdWUoUmFkaWFsR3JhZGllbnRDbGFzcywgcmVwZWF0LCBkZXByZWNhdGVkVHlw
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcAppbmRl
eCA5YmU0NDZiZDBmYjg1YjA2NGQ2OWYxODYzMjY5OWEwMzlhMGFjMWQ2Li5jMmFkNTAxZjNjZjBk
NTVhYjE1NGI2MzAxYzk0MTFkMWMwOGRkZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ1NT
Q3Jvc3NmYWRlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NHcmFkaWVudFZhbHVlLmgiCiAjaW5jbHVk
ZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
MTA4LDYgKzEwOSwxNCBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnB1dEltYWdlKGNv
bnN0IEludFNpemUmIHNpemUsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYQogICAgIG1faW1hZ2VzLmFk
ZChzaXplLCBpbWFnZSk7CiB9CiAKK3ZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVwb3J0
QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cisg
ICAgaW5mby5hZGRIYXNoQ291bnRlZFNldChtX3NpemVzKTsKKyAgICBpbmZvLmFkZEhhc2hNYXAo
bV9jbGllbnRzKTsKKyAgICBpbmZvLmFkZEhhc2hNYXAobV9pbWFnZXMpOyAvLyBGSVhNRTogaW5z
dHJ1bWVudCBJbWFnZQorfQorCiBQYXNzUmVmUHRyPEltYWdlPiBDU1NJbWFnZUdlbmVyYXRvclZh
bHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQog
ewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5oCmluZGV4IGIzZDg0ZWFiMjgzZjEyNGE0MjMxNDBjYjQ1MmQ1NDY4
MGE4MTM5YmIuLmNkZjQwNWExY2MwYjM5MDgyNjk2YzU3ZjhmN2EyMjA2MDA3OTFkOWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaApAQCAtNzMsNiArNzMs
OCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwdXRJbWFnZShjb25zdCBJbnRTaXplJiwgUGFzc1Jl
ZlB0cjxJbWFnZT4pOwogICAgIGNvbnN0IFJlbmRlck9iamVjdFNpemVDb3VudE1hcCYgY2xpZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50czsgfQogCisgICAgdm9pZCByZXBvcnRCYXNlQ2xh
c3NNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKICAgICBIYXNoQ291bnRl
ZFNldDxJbnRTaXplPiBtX3NpemVzOyAvLyBBIGNvdW50IG9mIGhvdyBtYW55IHRpbWVzIGEgZ2l2
ZW4gaW1hZ2Ugc2l6ZSBpcyBpbiB1c2UuCiAgICAgUmVuZGVyT2JqZWN0U2l6ZUNvdW50TWFwIG1f
Y2xpZW50czsgLy8gQSBtYXAgZnJvbSBSZW5kZXJPYmplY3RzICh3aXRoIGVudHJ5IGNvdW50KSB0
byBpbWFnZSBzaXplcy4KICAgICBIYXNoTWFwPEludFNpemUsIFJlZlB0cjxJbWFnZT4gPiBtX2lt
YWdlczsgLy8gQSBjYWNoZSBvZiBJbWFnZSBvYmplY3RzIGJ5IGltYWdlIHNpemUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAKaW5kZXggODlhNjQ2MjMxNzdlZTRlYjg4ZjBm
ZTJkODAzYmJjN2FiOTZlY2M1NS4uMzQzZDlkNzE5MTc5ZTYyNDM1ZDZjZWQ3YWRiZjgzNTI4NjRl
ZGYzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmNwcApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1lbW9y
eUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTdHlsZUNh
Y2hlZEltYWdlU2V0LmgiCiAjaW5jbHVkZSAiU3R5bGVQZW5kaW5nSW1hZ2UuaCIKQEAgLTE2Miw2
ICsxNjMsMTkgQEAgUGFzc1JlZlB0cjxDU1NJbWFnZVNldFZhbHVlPiBDU1NJbWFnZVNldFZhbHVl
OjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0ltYWdl
U2V0VmFsdWUoKnRoaXMpKTsKIH0KIAordm9pZCBDU1NJbWFnZVNldFZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTSW1hZ2VTZXRWYWx1ZT4gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NTVmFs
dWVMaXN0OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cisg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRWZWN0b3IobV9pbWFnZXNJblNldCk7Cit9CisKK3ZvaWQg
Q1NTSW1hZ2VTZXRWYWx1ZTo6SW1hZ2VXaXRoU2NhbGU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJ
bmZvPENTU0ltYWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxlPiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihpbWFnZVVSTCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShDU1NfSU1BR0VfU0VUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlU2V0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKaW5k
ZXggOTUyNzBhNjdkZmJkNDZiYmQxOGE1NGJjYmEzMTJkNzQ0MDA4YjliNy4uYTc5MWQxZWExNzdm
YmYxYzM4YjZlZWIxNzM0OTU5NWI4ZjFjMDNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlU2V0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VT
ZXRWYWx1ZS5oCkBAIC01OCwxMiArNTgsMTUgQEAgcHVibGljOgogICAgIHN0cnVjdCBJbWFnZVdp
dGhTY2FsZSB7CiAgICAgICAgIFN0cmluZyBpbWFnZVVSTDsKICAgICAgICAgZmxvYXQgc2NhbGVG
YWN0b3I7CisgICAgICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OwogICAgIH07CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2FuY2VsZWRTdWJyZXNvdXJj
ZXMoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4gY2xvbmVGb3JD
U1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2VXaXRoU2NhbGUg
YmVzdEltYWdlRm9yU2NhbGVGYWN0b3IoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUu
Y3BwCmluZGV4IDA3YmQ0YjNlMzI4YzBmYjIyYjI5NDVlZDc4ZTVkOTUzYzVmNmI5YzMuLmY2ZjU0
ODUzNmVjMjcwOGE0OTM5Y2MxOTM1ZmI1MzQ4YjYzMjVjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5jcHAKQEAgLTI0LDEwICsyNCwxMSBAQAogI2luY2x1ZGUgIkNTU0N1cnNvcklt
YWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtl
eXdvcmRzLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJNZW1vcnlDYWNoZS5o
IgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCisj
aW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJ
bWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlUGVuZGluZ0ltYWdlLmgiCiAKQEAgLTEyNSw0ICsxMjYs
MTEgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgp
IGNvbnN0CiAgICAgcmV0dXJuIHVyaVZhbHVlLnJlbGVhc2UoKTsKIH0KIAordm9pZCBDU1NJbWFn
ZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTSW1hZ2VWYWx1
ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNT
Uyk7CisgICAgaW5mby5hZGRNZW1iZXIobV91cmwpOworICAgIC8vIE5vIG5lZWQgdG8gcmVwb3J0
IG1faW1hZ2UgYXMgaXQgaXMgY291bnRlZCBhcyBwYXJ0IG9mIFJlbmRlckFyZW5hLgorfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
SW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA3
NTA2M2QyZmE5NWI4NDM2NGFjZGU3ODg1OGE2Mzk4YmE1YTk4MTBkLi44YzgyZjJjNjdkYjQzM2E3
NTE3MzNjOTY3MWRlOWI5MTUxZTdhOThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgK
QEAgLTQ4LDYgKzQ4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVk
U3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBDU1NJbWFn
ZVZhbHVlKENsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0luaGVyaXRlZFZhbHVlLmNwcAppbmRleCA4YzRiZTZkNGJjNzAwYzJiMDZiMTAzNWY3MjU4
M2M3NWFkODkxNzMyLi4yNjgwZjJmZDY0MzdmZDZlNDc3MzE5NWUzNDBkNGI3NzQxNjAxZWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAKQEAgLTIxLDYgKzIxLDcg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgog
CisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzAsNCArMzEsOSBAQCBTdHJpbmcg
Q1NTSW5oZXJpdGVkVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiAiaW5o
ZXJpdCI7CiB9CiAKK3ZvaWQgQ1NTSW5oZXJpdGVkVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbzxDU1NJbmhlcml0ZWRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmgKaW5kZXggNWFhOTA2
MzY3NzE3MzA0NjY4YjEzNDJiYjZkMTdiYWRiMTY3ZDBlOS4uNjhjMDAxZjUzNDI2NmE0ZjdkYWVi
YjBkZWU2MjlkMzU3YWU5ZmQ0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lu
aGVyaXRlZFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVl
LmgKQEAgLTM1LDYgKzM1LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQo
KSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NJbmhlcml0ZWRWYWx1ZSgpCiAg
ICAgICAgIDogQ1NTVmFsdWUoSW5oZXJpdGVkQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0
aWFsVmFsdWUuY3BwCmluZGV4IDhkZTNmMzE4MmM1YzFlZWRlM2FjZDkyMDEwZDA3ZTliZTgxOWIy
MzIuLjM2YmQ5NTA4MGViNWQ1YjlkNWM5YjBiNGRiOTZiYzFmNmY5ZTRiYTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTSW5pdGlhbFZhbHVlLmgiCiAKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zMCw0ICszMSw5IEBAIFN0cmluZyBDU1NJbml0aWFsVmFsdWU6
OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiAiaW5pdGlhbCI7CiB9CiAKK3ZvaWQg
Q1NTSW5pdGlhbFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NT
SW5pdGlhbFZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6Q1NTKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0luaXRpYWxWYWx1ZS5oCmluZGV4IGRkODZkODQyNDFhNjZmZjJmNzM3YWU5YTAyMWE0YmJh
YzgwOGI2MDAuLmQ1MjMzNDNkM2QzNDE3MzQxMzEzYTZhZTk1YzZhNjY5NzQzMDgxYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKQEAgLTQxLDYgKzQxLDggQEAgcHVibGljOgog
CiAgICAgYm9vbCBpc0ltcGxpY2l0KCkgY29uc3QgeyByZXR1cm4gbV9pc0ltcGxpY2l0OyB9CiAK
KyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikg
Y29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTSW5pdGlhbFZhbHVlKGJvb2wgaW1wbGljaXQpCiAg
ICAgICAgIDogQ1NTVmFsdWUoSW5pdGlhbENsYXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0xpbmVCb3hDb250YWluVmFsdWUuY3BwCmluZGV4IDUzMTMyZWIxOTBmNWVhMjljYzczNGQwZGQ1
YzI3OTQ1Y2JmZTFiZGMuLjJjZmZlNTM0Yzk2OTNlNDdjYmExZDhiYzVjZjdlYjNmMTFmZTU5YjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDU1NMaW5lQm94Q29udGFpblZhbHVlLmgiCiAKICNp
bmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTcyLDQgKzczLDkgQEAgU3RyaW5nIENTU0xpbmVCb3hDb250YWluVmFsdWU6OmN1c3Rv
bUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCit2b2lkIENTU0xpbmVCb3hD
b250YWluVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZv
KiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NMaW5l
Qm94Q29udGFpblZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbjo6Q1NTKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0xpbmVCb3hDb250YWluVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94
Q29udGFpblZhbHVlLmgKaW5kZXggZGRjMGM2MGYzYzI0NjVhZmUyMzcyZGMzZjQ0MGRjNzE0MGVj
NTI3Yi4uZWViNjQ3MGM4Mzg3N2VjNmVmMmM4ZGMwNDE4ODAwZjRkNGM1ZGQxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCkBAIC01MCw2ICs1MCw4IEBA
IHB1YmxpYzoKIAogICAgIExpbmVCb3hDb250YWluIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIExpbmVCb3hDb250YWluIG1fdmFsdWU7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCmluZGV4IGQ1YmRlODJh
MWI0ZGQ5YjQyNTg5YzFjNWQwZjRhNjRkMDllZmJjOTAuLjI1OWE1MDUzMjg4NzhjZGE2MGY4NjYy
NjUxNzVlODU1NWE4YzU1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiQ291
bnRlci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2lu
Y2x1ZGUgIlJHQkNvbG9yLmgiCkBAIC0xMjU4LDQgKzEyNTksNDggQEAgUGFzc1JlZlB0cjxDU1NQ
cmltaXRpdmVWYWx1ZT4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNsb25lRm9yQ1NTT00oKSBjb25zdAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQ1NTUHJpbWl0aXZlVmFsdWU6OnJlcG9ydERl
c2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBj
b25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NQcmltaXRpdmVWYWx1ZT4gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgc3dp
dGNoIChtX3ByaW1pdGl2ZVVuaXRUeXBlKSB7CisgICAgY2FzZSBDU1NfQVRUUjoKKyAgICBjYXNl
IENTU19DT1VOVEVSX05BTUU6CisgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5USUZJRVI6CisgICAg
Y2FzZSBDU1NfUEFSU0VSX0hFWENPTE9SOgorICAgIGNhc2UgQ1NTX1NUUklORzoKKyAgICBjYXNl
IENTU19VUkk6CisjaWYgRU5BQkxFKENTU19WQVJJQUJMRVMpCisgICAgY2FzZSBDU1NfVkFSSUFC
TEVfTkFNRToKKyNlbmRpZgorICAgICAgICAvLyBGSVhNRTogZGV0ZWN0IG90aGVyIGNhc2VzIHdo
ZW4gbV92YWx1ZSBpcyBTdHJpbmdJbXBsKgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVl
LnN0cmluZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX0NPVU5URVI6CisgICAgICAg
IGluZm8uYWRkTWVtYmVyKG1fdmFsdWUuY291bnRlcik7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ1NTX1JFQ1Q6CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fdmFsdWUucmVjdCk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1FVQUQ6CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1f
dmFsdWUucXVhZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ1NTX1BBSVI6CisgICAgICAg
IGluZm8uYWRkTWVtYmVyKG1fdmFsdWUucGFpcik7CisgICAgICAgIGJyZWFrOworI2lmIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkgfHwgRU5BQkxFKFdJREdFVF9SRUdJT04pCisgICAgY2FzZSBD
U1NfREFTSEJPQVJEX1JFR0lPTjoKKyAgICAgICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZS5yZWdp
b24pOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGNhc2UgQ1NTX1NIQVBFOgorICAgICAg
ICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnNoYXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBDU1NfQ0FMQzoKKyAgICAgICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZS5jYWxjKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCmlu
ZGV4IDg3MDY5YzA0MzMzOTU2MzA3NzY4NmY4NjczOTQwZWUxZmM5ZDcxMzQuLmZkMDgzMmQzNDc4
MGI5Njk0NTAwNTE5NDIwZGExM2VlZDFmMzdiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5oCkBAIC0zMDYsNiArMzA2LDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKICAgICB2b2lkIHNldENT
U09NU2FmZSgpIHsgbV9pc0NTU09NU2FmZSA9IHRydWU7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToK
ICAgICAvLyBGSVhNRTogaW50IHZzLiB1bnNpZ25lZCBvdmVybG9hZGluZyBpcyB0b28gc3VidGxl
IHRvIGRpc3Rpbmd1aXNoIHRoZSBjb2xvciBhbmQgaWRlbnRpZmllciBjYXNlcy4KICAgICBDU1NQ
cmltaXRpdmVWYWx1ZShpbnQgaWRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKaW5k
ZXggYWI3NmMzMmJkYWFjMmNjZmM5MjAxMjA0N2FkYjVjMzhmN2QyNDI1Yi4uMDIxYWRkMjcxODUz
MzgzOGI3YWQwNDMxNGUyODg2OGM5YmVlZTNiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHku
Y3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiQ1NTUHJvcGVydHkuaCIKIAogI2luY2x1
ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGVDb25zdGFu
dHMuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCkBAIC02OTQsNCArNjk1
LDEwIEBAIGJvb2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlEKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBDU1NQcm9wZXJ0eTo6
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTUHJvcGVydHk+IGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fdmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCmluZGV4IDcxMjQxNDY2NmJmZGVhNTRiYzk2YzE5NTNmMWRi
OTYwNDBlMWQ2YmMuLjU3YTMwMTI0ZjgyOGIxNmJiZDY5MjJkODBkOGRiZmQwYzIyY2YyYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCkBAIC0zMCw2ICszMCw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAorY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKKwogY2xhc3MgQ1NTUHJvcGVydHkg
ewogcHVibGljOgogICAgIENTU1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElELCBQYXNzUmVm
UHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgQ1NTUHJvcGVydHlJ
RCBzaG9ydGhhbmRJRCA9IENTU1Byb3BlcnR5SW52YWxpZCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNl
KQpAQCAtNTksNiArNjEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENTU1Byb3BlcnR5SUQgcmVz
b2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgVGV4dERpcmVjdGlvbiwg
V3JpdGluZ01vZGUpOwogICAgIHN0YXRpYyBib29sIGlzSW5oZXJpdGVkUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCk7CiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICAvLyBNYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBmaXRz
IGluIDQgYnl0ZXMuIFJlYWxseS4KICAgICB1bnNpZ25lZCBtX2lkIDogMTQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCmluZGV4IGIzNmMzYWQ3YjJjMjEyZGFiNmM3OWNhODRi
Yzk1MDAxNjk4M2ZkOWMuLjA5ODQ3NTI3M2YzMjY3Y2M4ZTA2Y2NmNTc2NTY1ZTBmNGQ1MDAzMDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBA
CiAjaW5jbHVkZSAiQ1NTUmVmbGVjdFZhbHVlLmgiCiAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CkBAIC02NSw0ICs2NiwxMSBA
QCB2b2lkIENTU1JlZmxlY3RWYWx1ZTo6YWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hT
ZXQ8S1VSTD4mIHVybHMsIGNvbnN0IFN0eQogICAgICAgICBtX21hc2stPmFkZFN1YnJlc291cmNl
U3R5bGVVUkxzKHVybHMsIHN0eWxlU2hlZXQpOwogfQogCit2b2lkIENTU1JlZmxlY3RWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1JlZmxlY3RWYWx1ZT4gaW5m
byhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cisg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9vZmZzZXQpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fbWFzayk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaAppbmRleCA1Y2ZiMjBlMjdmNzU4ODQwNjE5NDEy
NTgwYmMwMzRmZWE1N2E2OWVmLi4xYmRmZDVmZTc2YzdlZjI4MWY3Zjc3ODliMjljZWFhNDQ4Yzcz
YmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5oCkBAIC01MSw2ICs1MSw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgYWRkU3VicmVzb3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8
S1VSTD4mLCBjb25zdCBTdHlsZVNoZWV0Q29udGVudHMqKSBjb25zdDsKIAorICAgIHZvaWQgcmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJp
dmF0ZToKICAgICBDU1NSZWZsZWN0VmFsdWUoQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rp
b24sIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG9mZnNldCwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gbWFzaykKICAgICAgICAgOiBDU1NWYWx1ZShSZWZsZWN0Q2xhc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXggZGNmN2JiMjliNTQ2
YzY4NGJkOTZjN2NmNmFhMTc2OGRlNGVhMTAxMC4uZmU4Mjc4YWJjMTcxZDg1MTgwMDIzMTczYTBj
NTgwZWYwNWVhYzViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1
bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5jdGlv
blZhbHVlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCIKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTM1LDYgKzM2LDExIEBAIFN0cmluZyBDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZh
bHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gImxpbmVhciI7CiB9CiAKK3Zv
aWQgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVt
b3J5Q2xhc3NJbmZvPENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworfQorCiBTdHJpbmcg
Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QK
IHsKICAgICBTdHJpbmcgdGV4dCgiY3ViaWMtYmV6aWVyKCIpOwpAQCAtNDksNiArNTUsMTEgQEAg
U3RyaW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIHRleHQ7CiB9CiAKK3ZvaWQgQ1NTQ3ViaWNCZXppZXJUaW1pbmdG
dW5jdGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMs
IE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30KKwogU3RyaW5nIENTU1N0ZXBzVGltaW5n
RnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRleHQo
InN0ZXBzKCIpOwpAQCAtNTksNCArNzAsOSBAQCBTdHJpbmcgQ1NTU3RlcHNUaW1pbmdGdW5jdGlv
blZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAordm9p
ZCBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9y
eUNsYXNzSW5mbzxDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0
SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVu
Y3Rpb25WYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUu
aAppbmRleCBlNTQ0YzVmZjAwYzBkNmZjMzE5N2Y0Njg1YThhMTUyMTNkYjQ1OGEwLi4zZWI0YjIy
OTVhYjk3NjM5MmZkZGYyZTUwYzI5ZmRjMjZiZTUwZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgKQEAgLTQwLDYgKzQwLDggQEAgcHVibGljOgogCiAg
ICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICBDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlKCkKICAgICAgICAgOiBDU1NWYWx1ZShMaW5l
YXJUaW1pbmdGdW5jdGlvbkNsYXNzKQpAQCAtNjEsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgZG91
YmxlIHgyKCkgY29uc3QgeyByZXR1cm4gbV94MjsgfQogICAgIGRvdWJsZSB5MigpIGNvbnN0IHsg
cmV0dXJuIG1feTI7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NDdWJpY0JlemllclRp
bWluZ0Z1bmN0aW9uVmFsdWUoZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91Ymxl
IHkyKQogICAgICAgICA6IENTU1ZhbHVlKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25DbGFzcykK
QEAgLTg5LDYgKzkzLDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBj
b25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFs
dWUoaW50IHN0ZXBzLCBib29sIHN0ZXBBdFN0YXJ0KQogICAgICAgICA6IENTU1ZhbHVlKFN0ZXBz
VGltaW5nRnVuY3Rpb25DbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NV
bmljb2RlUmFuZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdl
VmFsdWUuY3BwCmluZGV4IDJjMmM0NGQyN2FiNTY4YzZjNDZiZTMzZTU2Mjk2MTU1NTBhMGZhZDMu
LjliMGM5NWQ5MzM2YWY2MDE2YmMwZGY3YmI1YWNkOTcyMTgzOGYyMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNyw0ICszOCw5IEBAIFN0cmluZyBDU1NV
bmljb2RlUmFuZ2VWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAordm9pZCBDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPENTU1VuaWNvZGVSYW5nZVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30KKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaAppbmRleCA0ZmUxZGI3N2NiMzI2NjkxNTBj
ZGU1MDc5N2Y0MWMzNTNmOWI2NzZiLi5kNTBmNWI2ODE1YzdiNzZkZWJhMDUwMWY5Njg0NGMyZGNm
MTYwZjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuaApAQCAt
NDQsNiArNDQsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0
OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU1VuaWNvZGVSYW5nZVZhbHVlKFVDaGFyMzIg
ZnJvbSwgVUNoYXIzMiB0bykKICAgICAgICAgOiBDU1NWYWx1ZShVbmljb2RlUmFuZ2VDbGFzcykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWUuY3BwCmluZGV4IDVmZmIxNTY3ZTg4NTg4ZGE3NTU2NmNmODVmOTQ1
NjJkOTA5Y2U5NDcuLjk5MTJiYWY5YjAwNTg2NThmOWEyZTMyMjcyNjJhYzQwZTc5ZWI0MmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1ZhbHVlLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2VuZGlmCiAjaW5jbHVk
ZSAiRm9udFZhbHVlLmgiCiAjaW5jbHVkZSAiRm9udEZlYXR1cmVWYWx1ZS5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgiCiAjaW5j
bHVkZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdQYWludC5oIgpAQCAtNzcsNiArNzgsMTIg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGNzc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2Nzc1Rl
eHQ7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CisgICAgeworICAgICAgICBNZW1vcnlDbGFz
c0luZm88VGV4dENsb25lQ1NTVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgICAgICBpbmZvLmFkZE1lbWJlcihtX2Nzc1Rl
eHQpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBUZXh0Q2xvbmVDU1NWYWx1ZShDbGFzc1R5cGUg
Y2xhc3NUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQpIAogICAgICAgICA6IENTU1ZhbHVlKGNsYXNz
VHlwZSwgLyppc0NTU09NU2FmZSovIHRydWUpCkBAIC0xNDEsNiArMTQ4LDEyNiBAQCBib29sIENT
U1ZhbHVlOjpoYXNGYWlsZWRPckNhbmNlbGVkU3VicmVzb3VyY2VzKCkgY29uc3QKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK3ZvaWQgQ1NTVmFsdWU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgaWYgKG1faXNUZXh0Q2xv
bmUpIHsKKyAgICAgICAgQVNTRVJUKGlzQ1NTT01TYWZlKCkpOworICAgICAgICBzdGF0aWNfY2Fz
dDxjb25zdCBUZXh0Q2xvbmVDU1NWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBB
U1NFUlQoIWlzQ1NTT01TYWZlKCkgfHwgaXNTdWJ0eXBlRXhwb3NlZFRvQ1NTT00oKSk7CisgICAg
c3dpdGNoIChjbGFzc1R5cGUoKSkgeworICAgIGNhc2UgUHJpbWl0aXZlQ2xhc3M6CisgICAgICAg
IHN0YXRpY19jYXN0PGNvbnN0IENTU1ByaW1pdGl2ZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgSW1hZ2VDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW1hZ2VWYWx1
ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEN1cnNvckltYWdlQ2xhc3M6CisgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IENTU0N1cnNvckltYWdlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBDYW52YXNDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ2FudmFzVmFs
dWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8p
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8Y29uc3QgQ1NTQ3Jvc3NmYWRlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2Fz
ZSBMaW5lYXJHcmFkaWVudENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NMaW5l
YXJHcmFkaWVudFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1v
cnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgUmFkaWFsR3JhZGllbnRD
bGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSo+
KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25DbGFzczoK
KyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZh
bHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZv
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgTGluZWFyVGltaW5nRnVuY3Rpb25DbGFzczoK
KyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSo+
KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICBjYXNlIFN0ZXBzVGltaW5nRnVuY3Rpb25DbGFzczoKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlKj4odGhpcykt
PnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgQXNwZWN0UmF0aW9DbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgQ1NTQXNwZWN0UmF0aW9WYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEJvcmRl
ckltYWdlU2xpY2VDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTQm9yZGVySW1h
Z2VTbGljZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlP
YmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRm9udEZlYXR1cmVDbGFzczoK
KyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRm9udEZlYXR1cmVWYWx1ZSo+KHRoaXMpLT5yZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEZvbnRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRm9udFZh
bHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZv
KTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRm9udEZhY2VTcmNDbGFzczoKKyAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgQ1NTRm9udEZhY2VTcmNWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAg
ICBjYXNlIEZ1bmN0aW9uQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0Z1bmN0
aW9uVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBJbmhlcml0ZWRDbGFzczoKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTSW5oZXJpdGVkVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47Cisg
ICAgY2FzZSBJbml0aWFsQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0luaXRp
YWxWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFJlZmxlY3RDbGFzczoKKyAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgQ1NTUmVmbGVjdFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgU2hhZG93Q2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IFNoYWRvd1ZhbHVlKj4o
dGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIGNhc2UgVW5pY29kZVJhbmdlQ2xhc3M6CisgICAgICAgIHN0YXRp
Y19jYXN0PGNvbnN0IENTU1VuaWNvZGVSYW5nZVZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNh
c2UgTGluZUJveENvbnRhaW5DbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgQ1NTTGlu
ZUJveENvbnRhaW5WYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVt
b3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENhbGN1bGF0aW9uQ2xh
c3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0NhbGNWYWx1ZSo+KHRoaXMpLT5yZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVy
bjsKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpICYmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICBj
YXNlIFdlYktpdENTU1NoYWRlckNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBXZWJL
aXRDU1NTaGFkZXJWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVt
b3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorI2lmIEVOQUJMRShDU1Nf
VkFSSUFCTEVTKQorICAgIGNhc2UgVmFyaWFibGVDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgQ1NTVmFyaWFibGVWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorI2lmIEVOQUJM
RShTVkcpCisgICAgY2FzZSBTVkdDb2xvckNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBTVkdDb2xvcio+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2Jq
ZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFNWR1BhaW50Q2xhc3M6CisgICAg
ICAgIHN0YXRpY19jYXN0PGNvbnN0IFNWR1BhaW50Kj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
V2ViS2l0Q1NTU1ZHRG9jdW1lbnRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
S2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyNlbmRpZgorICAgIGNhc2Ug
VmFsdWVMaXN0Q2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU1ZhbHVlTGlzdCo+
KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cisg
ICAgICAgIHJldHVybjsKKyNpZiBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKKyAgICBjYXNlIEltYWdl
U2V0Q2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0ltYWdlU2V0VmFsdWUqPih0
aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAg
ICAgICByZXR1cm47CisjZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCisgICAgY2FzZSBX
ZWJLaXRDU1NGaWx0ZXJDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0Q1NT
RmlsdGVyVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9i
amVjdEluZm8pOworICAgICAgICByZXR1cm47CisjZW5kaWYKKyAgICBjYXNlIFdlYktpdENTU1Ry
YW5zZm9ybUNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBXZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Cit9CisKIFN0cmluZyBDU1NWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNU
ZXh0Q2xvbmUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKaW5kZXggODNjMmU4ZTU1NjYzNjZjMmNiMThj
NjA2YTU0MDc3NTRlYTAwZGIwYi4uMDU3MmUyYzEyYjAzZmIyYjJlODQ4ZDM0NWEzNTBmYzM5ZmZk
MGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBNZW1vcnlPYmplY3RJbmZvOwogY2xhc3MgU3R5bGVTaGVldENv
bnRlbnRzOwogICAgIAogLy8gRklYTUU6IFRoZSBjdXJyZW50IENTU1ZhbHVlIGFuZCBzdWJjbGFz
c2VzIHNob3VsZCBiZSB0dXJuZWQgaW50byBpbnRlcm5hbCB0eXBlcyAoU3R5bGVWYWx1ZSkuCkBA
IC0xMTksNiArMTIwLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVk
U3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJvdGVjdGVkOgogCiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBDbGFzc1R5cGVCaXRzID0gNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5k
ZXggYjhkMzZhNDE5YTU2YTc0MzlkNDNhNGE4M2QzZDA2MWIwZGRhZjI5OS4uMmVmM2Q1MTZkM2Uy
MDZjMzU3ZGY1ZWMyM2FjNTg3ODdiYTBkN2Q4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlz
dC5jcHAKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKIAogI2lu
Y2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlv
bi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xOTYsNCArMTk3
LDEwIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NWYWx1ZUxpc3Q6OmNsb25lRm9yQ1NT
T00oKSBjb25zdAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ1NTVmFsdWVMaXN0KCp0aGlzKSk7
CiB9CiAKK3ZvaWQgQ1NTVmFsdWVMaXN0OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFz
c0luZm88Q1NTVmFsdWVMaXN0PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZFZlY3RvcihtX3Zh
bHVlcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuaAppbmRleCA0MGJiNDM3OTVmYThkNDY1ZTAzMjZjZDBkYzAxYWU4ZTEyYjJmOTQyLi5lOTg4
ZDZjMmU0ZGQ3ZDJlYmU3YzM4ZDcxMWNmYzdmNjMyZDUxNDYxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Zh
bHVlTGlzdC5oCkBAIC02OSw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRy
PENTU1ZhbHVlTGlzdD4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0
ZWQ6CiAgICAgQ1NTVmFsdWVMaXN0KENsYXNzVHlwZSwgVmFsdWVMaXN0U2VwYXJhdG9yKTsKICAg
ICBDU1NWYWx1ZUxpc3QoY29uc3QgQ1NTVmFsdWVMaXN0JiBjbG9uZUZyb20pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmgKaW5kZXggMmM1YjY2YTZiOTQzYzg5OWQ3NjUzY2M5MzEz
NTk4N2IyZmVjNDlkZS4uOTNlMGFhNmI2ZjAwZTBjODVjZTZlOWY5ZDdjYzllMzM0ZDk4MDdiMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDgsMTMgQEAgcHVibGljOgog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQog
ICAgIGNvbnN0IFN0cmluZyYgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAKKyAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1v
cnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1Zh
cmlhYmxlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgICAgICBpbmZvLmFkZE1lbWJlcihtX25hbWUpOworICAgICAgICBp
bmZvLmFkZE1lbWJlcihtX3ZhbHVlKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgQ1NTVmFyaWFi
bGVWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAg
ICAgICAgIDogQ1NTVmFsdWUoVmFyaWFibGVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVh
dHVyZVZhbHVlLmNwcAppbmRleCA2MmMzOTYwNjg1OThhZjkxNTgwZjU1ZTVhOTRhODY4YWE1MWJm
MzJjLi42OWY1NDJmMTQ4ZTVkMTg1YzkxNWUzYWZhMDVmOTk1YTg2YzlmMmQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVk
ZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OSw0ICs1MCwxMCBAQCBTdHJpbmcg
Rm9udEZlYXR1cmVWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIGJ1aWxk
ZXIudG9TdHJpbmcoKTsKIH0KIAordm9pZCBGb250RmVhdHVyZVZhbHVlOjpyZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QK
K3sKKyAgICBNZW1vcnlDbGFzc0luZm88Rm9udEZlYXR1cmVWYWx1ZT4gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV90YWcpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9u
dEZlYXR1cmVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaApp
bmRleCA3ZDVlMDM2YzA4YTYxODM5NTg1NTY3Mjc1MGE2MWU1NDdhZDVjNWViLi4yOGQ4OWY0MjM2
OWIwOGJlYjE0MTY1YjlhYmVhNmFmZmMzOTgwZWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVh
dHVyZVZhbHVlLmgKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgIGludCB2YWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0
OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OworCiBwcml2YXRlOgogICAgIEZvbnRGZWF0dXJlVmFsdWUoY29uc3QgU3RyaW5n
JiwgaW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcAppbmRleCA4ODQxYTc5OTM1ZTJlNWEz
MzQxYTlmMzQ1YTA2NjQzNWEwMmQ1MTU1Li42NTZjN2Q4MjMwYzQ0ZjI1MzJiNmUzY2U3M2NhNmRj
MTk0MjBkZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmNwcApAQCAtMjIsNiArMjIsNyBAQAog
CiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUu
aCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNjUs
NCArNjYsMTUgQEAgU3RyaW5nIEZvbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAg
cmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCit2b2lkIEZvbnRWYWx1ZTo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPEZvbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRNZW1iZXIoc3R5bGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHZh
cmlhbnQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHdlaWdodCk7CisgICAgaW5m
by5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoc2l6ZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIobGluZUhlaWdodCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIoZmFtaWx5
KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCmluZGV4IDVmODMzNjkyMTA1NWMzOThiMTUy
YzdjYjAzNTdjYmM3ZTc3ZWQ5M2EuLjAzYTYxMjY4YTU4NzQ3MGZjYjhhMjExMmE5ZjBiYzlkMGFh
ZTg0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVlLmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gc3R5bGU7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiB2YXJpYW50OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gd2VpZ2h0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCmluZGV4IDAzOTA0MjA0YzIzMTE2NjRjYzNkNmI5OWNk
M2QyNjJmNTBjYzAwZWIuLmMyNjljM2IxNjRhMGIxOGRmMmU3M2M4MjdiODI4NzY1NGJiOTNiNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKQEAgLTExNCw2ICsxMTQsNyBAQCB2
b2lkIE1lZGlhUXVlcnlFeHA6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgTWVtb3J5Q2xhc3NJbmZvPE1lZGlhUXVlcnlFeHA+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1Mp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fbWVkaWFGZWF0dXJlKTsKICAgICBpbmZvLmFkZE1lbWJl
cihtX3NlcmlhbGl6YXRpb25DYWNoZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
bV92YWx1ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDhhMjQ4NTk0ZDYy
MzFjM2IwZDM1M2YyMzQxZWQxMDM3YWU0NDdiMDYuLjczYTQzMzJlOGE5ZDFmNDExMTM2MjFjNTZl
NWEyMjg1YmMwNmEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xMzUsNyArMTM1LDggQEAgdm9pZCBQcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU8KIHsKICAgICBNZW1vcnlDbGFzc0luZm88UHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1l
bnRhdGlvbjo6Q1NTKTsKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Byb3BlcnR5
U2V0KTsKLSAgICAvLyBGSVhNRTogYWRkIGluZm8uYWRkSW5zdHJ1bWVudGVkSGFzTWFwKG1fY3Nz
b21DU1NWYWx1ZUNsb25lcykgd2hlbiBDU1NWYWx1ZSBpcyBpbnN0cnVtZW50ZWQuCisgICAgaWYg
KG1fY3Nzb21DU1NWYWx1ZUNsb25lcykKKyAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNYXBF
bnRyaWVzKCptX2Nzc29tQ1NTVmFsdWVDbG9uZXMpOwogfQogCiB1bnNpZ25lZCBQcm9wZXJ0eVNl
dENTU1N0eWxlRGVjbGFyYXRpb246Omxlbmd0aCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1Zh
bHVlLmNwcAppbmRleCAxNGM3Y2RhOGM1NzBiY2JkN2ZiNzU2ZmI1ZWY5YjliYWY5MDEzYmI0Li5k
YjY0NjY5MmVhYWU2MjRlZGNlNGJmY2MxZWY4Mzg4MzkyZTk3ZDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
aGFkb3dWYWx1ZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5o
IgogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC03Nyw0ICs3OCwxNSBAQCBTdHJpbmcgU2hhZG93VmFsdWU6OmN1c3RvbUNz
c1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCit2b2lkIFNoYWRvd1ZhbHVlOjpy
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U2hhZG93VmFsdWU+IGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHgpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKHkpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGJsdXIpOworICAgIGluZm8u
YWRkSW5zdHJ1bWVudGVkTWVtYmVyKHNwcmVhZCk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIoc3R5bGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKGNvbG9yKTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAppbmRleCAyMTU0N2E1NzExZWUzZWU4ZjU0YjVj
ZDlmNWZhOGI2NTk2ZjQyOTNmLi5mMmQ4ZTZmNmY5OGJmNmZmZjYxNGJjMzUwNDU2MmRhMjMyZDAw
Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2hhZG93VmFsdWUuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAgICAgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4g
eTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGJsdXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggMWU3OGFhYjY2ZTUzYjJjZTgzYTA3MmI1MDQxZjVm
N2NjM2Y2MTRjYi4uMzdkMzk3MWI0MTMzODg1MGZiODQxY2ExZGJkYWU2YzAxOGI5OGVlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtMTA5Miw2ICsxMDkyLDkg
QEAgdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb24KICAgICAgICAgaW5mby5hZGRWZWN0b3JQdHIobV9t
dXRhYmxlUHJvcGVydHlWZWN0b3IpOwogICAgIGVsc2UKICAgICAgICAgaW5mby5hZGRSYXdCdWZm
ZXIobV9wcm9wZXJ0aWVzLCBtX2FycmF5U2l6ZSAqIHNpemVvZihDU1NQcm9wZXJ0eSkpOworICAg
IHVuc2lnbmVkIGNvdW50ID0gcHJvcGVydHlDb3VudCgpOworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihw
cm9wZXJ0eUF0KGkpKTsKIH0KIAogLy8gU2VlIHRoZSBmdW5jdGlvbiBhYm92ZSBpZiB5b3UgbmVl
ZCB0byB1cGRhdGUgdGhpcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBk
ZDJkNWY5Nzg2Zjg4YTJmMzQ0ZmEwZTEyNTk3MjNkOTM0NDMyMjgzLi42YmRkNmViODI0ODFiN2M2
YzM3MDQ3YTk1NTM3MDY4NDBhYTM5ZDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCkBAIC01NjM3LDYgKzU2MzcsMjQgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpsb2FkUGVuZGlu
Z1Jlc291cmNlcygpCiAjZW5kaWYKIH0KIAordm9pZCBTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJv
cGVydGllczo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U3R5bGVSZXNvbHZlcjo6TWF0Y2hl
ZFByb3BlcnRpZXM+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHByb3BlcnRpZXMp
OworfQorCit2b2lkIFN0eWxlUmVzb2x2ZXI6Ok1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVJdGVtOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVydGll
c0NhY2hlSXRlbT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRWZWN0b3IobWF0Y2hlZFByb3Bl
cnRpZXMpOworfQorCit2b2lkIE1lZGlhUXVlcnlSZXN1bHQ6OnJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvPE1lZGlhUXVlcnlSZXN1bHQ+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVt
b3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVy
KG1fZXhwcmVzc2lvbik7Cit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1v
cnlDbGFzc0luZm88U3R5bGVSZXNvbHZlcj4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CkBAIC01NjQ3LDE4ICs1NjY1LDIzIEBAIHZvaWQg
U3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3VuY29t
bW9uQXR0cmlidXRlUnVsZVNldCk7CiAgICAgaW5mby5hZGRIYXNoTWFwKG1fa2V5ZnJhbWVzUnVs
ZU1hcCk7CiAgICAgaW5mby5hZGRIYXNoTWFwKG1fbWF0Y2hlZFByb3BlcnRpZXNDYWNoZSk7Cisg
ICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMobV9tYXRjaGVkUHJvcGVydGllc0NhY2hl
KTsKICAgICBpbmZvLmFkZFZlY3RvcihtX21hdGNoZWRSdWxlcyk7CiAKLSAgICAvLyBGSVhNRTog
SW5zdHJ1bWVudCBTdGF0aWNDU1NSdWxlTGlzdCBhbmQgYWRkIG1fcnVsZUxpc3QgaGVyZS4KKyAg
ICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3J1bGVMaXN0KTsKICAgICBpbmZvLmFkZEhh
c2hNYXAobV9wZW5kaW5nSW1hZ2VQcm9wZXJ0aWVzKTsKLSAgICBpbmZvLmFkZFZlY3RvcihtX3Zp
ZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWFwVmFsdWVzKG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcyk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRNZW1iZXIobV9saW5lSGVpZ2h0VmFsdWUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkVmVjdG9yKG1fdmlld3BvcnREZXBlbmRlbnRNZWRpYVF1ZXJ5UmVzdWx0cyk7CiAgICAgaW5m
by5hZGRIYXNoTWFwKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXApOwotICAgIGluZm8uYWRk
SGFzaFNldChtX3N0eWxlU2hlZXRDU1NPTVdyYXBwZXJTZXQpOworICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWFwRW50cmllcyhtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwKTsKKyAgICBpbmZv
LmFkZEluc3RydW1lbnRlZEhhc2hTZXQobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0KTsKICNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpICYmIEVOQUJMRShTVkcpCiAgICAgaW5mby5hZGRIYXNoTWFw
KG1fcGVuZGluZ1NWR0RvY3VtZW50cyk7CiAjZW5kaWYKICNpZiBFTkFCTEUoU1RZTEVfU0NPUEVE
KQogICAgIGluZm8uYWRkSGFzaE1hcChtX3Njb3BlZEF1dGhvclN0eWxlcyk7CisgICAgaW5mby5h
ZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKG1fc2NvcGVkQXV0aG9yU3R5bGVzKTsKICAgICBpbmZv
LmFkZFZlY3RvcihtX3Njb3BlU3RhY2spOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5oCmluZGV4IGUyYWViMmMwMDFlNzcyNWRlM2Y5Y2RhOTVmYzhhMjEwNWYxOWZiZjMuLmM5
ZjhkY2MyZDgwYTcwOGI5YTJmMTIzZmRmMTRjNWQzMGU2ZTJhMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUmVzb2x2ZXIuaApAQCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Jl
c3VsdChyZXN1bHQpCiAgICAgewogICAgIH0KKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogICAgIE1lZGlhUXVlcnlFeHAgbV9leHByZXNzaW9u
OwogICAgIGJvb2wgbV9yZXN1bHQ7CkBAIC0zMjAsNiArMzIxLDcgQEAgcHJpdmF0ZToKIAogICAg
IHN0cnVjdCBNYXRjaGVkUHJvcGVydGllcyB7CiAgICAgICAgIE1hdGNoZWRQcm9wZXJ0aWVzKCkg
OiBwb3NzaWJseVBhZGRlZE1lbWJlcigwKSB7IH0KKyAgICAgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAgICAgICAgIAogICAgICAgICBSZWZQdHI8
U3R5bGVQcm9wZXJ0eVNldD4gcHJvcGVydGllczsKICAgICAgICAgdW5pb24gewpAQCAtNDQ3LDYg
KzQ0OSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdW5zaWduZWQgY29tcHV0ZU1hdGNoZWRQ
cm9wZXJ0aWVzSGFzaChjb25zdCBNYXRjaGVkUHJvcGVydGllcyosIHVuc2lnbmVkIHNpemUpOwog
ICAgIHN0cnVjdCBNYXRjaGVkUHJvcGVydGllc0NhY2hlSXRlbSB7CisgICAgICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogICAgICAgICBWZWN0b3I8
TWF0Y2hlZFByb3BlcnRpZXM+IG1hdGNoZWRQcm9wZXJ0aWVzOwogICAgICAgICBNYXRjaFJhbmdl
cyByYW5nZXM7CiAgICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gcmVuZGVyU3R5bGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAppbmRleCAyOTE2ZGMyZDE1
M2JmM2UyNDRiY2Y2NDA5MTI1OWZlNDMyZTAyMGVlLi43MWQ3YjlmOWZiYzM4MTEyODQ0YWNlNTUz
Njg2YmI4NWM1Yzg5ODhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
RmlsdGVyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJW
YWx1ZS5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAKICNp
bmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24u
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCkBAIC0xMTAsNiArMTExLDEyIEBAIFBhc3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVy
VmFsdWU+IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdENTU0ZpbHRlclZhbHVlKCp0aGlzKSk7CiB9CiAKK3Zv
aWQgV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1v
cnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNz
SW5mbzxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NTVmFsdWVMaXN0OjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7Cit9CisKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShDU1NfRklMVEVSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NGaWx0ZXJWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZh
bHVlLmgKaW5kZXggYTM0ZDU3NDVjNjVjOTY3NzNlMTZjZTA3M2IyMThiOWRjOGQxNGI4Zi4uMDhi
M2U5ZjlhNTAyOWE4MWQ1Nzg1ODNkOTY0ZDU4MzE3YjJkZmYyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1dlYktpdENTU0ZpbHRlclZhbHVlLmgKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogCiAg
ICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NGaWx0ZXJWYWx1ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0
OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU0ZpbHRlclZhbHVlKEZpbHRlck9w
ZXJhdGlvblR5cGUpOwogICAgIFdlYktpdENTU0ZpbHRlclZhbHVlKGNvbnN0IFdlYktpdENTU0Zp
bHRlclZhbHVlJiBjbG9uZUZyb20pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1NWR0RvY3VtZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NWR0RvY3VtZW50VmFsdWUuY3BwCmluZGV4IDQ5MDI1MDQ5NjZhYzMyY2JjYzcyZjAxMGU3ZDUy
OTg5ZDE3YWQ3MDQuLmRmNDFiOGQ0MGI1NDZhOTkzOWMwNThlNzQ4YTgxNzAyOTQzOGI3YjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDYWNo
ZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjMsNiAr
NjQsMTMgQEAgU3RyaW5nIFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdXJsKTsKIH0KIAor
dm9pZCBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm88V2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRNZW1i
ZXIobV91cmwpOworICAgIC8vIEZJWE1FOiBhZGQgbV9kb2N1bWVudCB3aGVuIGNhY2hlZCByZXNv
dXJjZXMgYXJlIGluc3RydW1lbnRlZC4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NTVkdEb2N1bWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZH
RG9jdW1lbnRWYWx1ZS5oCmluZGV4IGNiMDNmNTZlZTVjM2VjNGEwNzhiNTMxODllNzc1NTc1MDVm
OGQ3MzguLjk2YmNjOGMzMGM0OTYwMWI2NzJjMTg3NWM2ZDIwMjI0MjMwZTU3Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50VmFsdWUuaApAQCAtNDUsNiAr
NDUsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiB1cmwoKSBjb25zdCB7IHJldHVybiBt
X3VybDsgfQogICAgIGJvb2wgbG9hZFJlcXVlc3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFJl
cXVlc3RlZDsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU1NWR0RvY3VtZW50
VmFsdWUoY29uc3QgU3RyaW5nJiB1cmwpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENT
U1NoYWRlclZhbHVlLmNwcAppbmRleCA4NjUxNzU4ZWQ2Yzk5MTdmMDIyNDkxNzE1ZTZiZDU1NmI2
OWM1MjY3Li41Y2E3NzMzYjZhNmQ4YmUyNjVlNGE4YTQyNzRjZWRmZTgyMGEwOWM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKQEAgLTM1LDYgKzM1LDcg
QEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNTU1BhcnNl
ci5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRTaGFkZXIuaCIKICNpbmNsdWRlICJTdHlsZVBl
bmRpbmdTaGFkZXIuaCIKIApAQCAtNzksNiArODAsMTIgQEAgU3RyaW5nIFdlYktpdENTU1NoYWRl
clZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gInVybCgiICsgcXVvdGVD
U1NVUkxJZk5lZWRlZChtX3VybCkgKyAiKSI7CiB9CiAKK3ZvaWQgV2ViS2l0Q1NTU2hhZGVyVmFs
dWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlP
YmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxXZWJLaXRDU1NTaGFkZXJW
YWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OkNTUyk7CisgICAgaW5mby5hZGRNZW1iZXIobV91cmwpOworfQorICAgIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaAppbmRleCBmZDk1YmM2M2NmN2FjNTA5Y2UzNTlk
MDliOGZiYzkwZTMxOWIxNGI0Li5jNDMyMDFjYTJhNGExNjRhYjkzNjNkNzk0NjJlNDI3NTRjMmZj
MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuaApAQCAtNTAs
NiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0Owog
CisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyop
IGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktpdENTU1NoYWRlclZhbHVlKGNvbnN0IFN0cmlu
ZyYgdXJsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5jcHAKaW5kZXggODdkZWQ3ZGE2YjU2NjI3ZDUwN2UxY2IwNWNiMzA2MGRhODAwMmE5Yi4uMWNi
NzNmYzA5ZDQwOWJmNzcyY2Q3YjQ2ZjQwNmQ5NzVkZjYzOTIxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1ZhbHVl
TGlzdC5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xMDQsNCArMTA1LDEwIEBAIFBhc3NSZWZQdHI8
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpjbG9uZUZv
ckNTU09NKCkgY29uCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZSgqdGhpcykpOwogfQogCit2b2lkIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpyZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykg
Y29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwor
ICAgIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZS5oCmluZGV4IDVmYzRmN2Q2YmZkNWQ0ZDY3NmJhZDFkMDgyZDZiNDVkOTQ5Yjk3OTIuLmZk
MTE3ZjIzMjk0YmRhNTIxODJiMjNhZTYwNTZiM2I3M2Q5MThkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oCkBAIC03NCw2ICs3NCw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICBQYXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBjbG9uZUZv
ckNTU09NKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSk7CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUoY29uc3QgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUmIGNsb25lRnJvbSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDdkY2E1YmVkOWRk
OTg1ODE1NTUwMzI1ZTExMWE3OGMxMTQwZWRmMDguLjI5OWU2MTRmYWVkNjE0ODRhMGIxMjVhMmY3
N2EyMmZmMzJlNDdjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0
cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50
YXRpb24uY3BwCkBAIC0zOCw5ICszOCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQg
TWVtb3J5SW5zdHJ1bWVudGF0aW9uOjphZGRPYmplY3QoY29uc3QgU3RyaW5nJiBzdHJpbmcsIE9i
amVjdFR5cGUgb2JqZWN0VHlwZSkKIHsKLSAgICBpZiAoc3RyaW5nLmlzTnVsbCgpIHx8IHZpc2l0
ZWQoc3RyaW5nLmltcGwoKSkpCisgICAgYWRkT2JqZWN0KHN0cmluZy5pbXBsKCksIG9iamVjdFR5
cGUpOworfQorCit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0KGNvbnN0IFN0
cmluZ0ltcGwqIHN0cmluZ0ltcGwsIE9iamVjdFR5cGUgb2JqZWN0VHlwZSkKK3sKKyAgICBpZiAo
IXN0cmluZ0ltcGwgfHwgdmlzaXRlZChzdHJpbmdJbXBsKSkKICAgICAgICAgcmV0dXJuOwotICAg
IGNvdW50T2JqZWN0U2l6ZShvYmplY3RUeXBlLCBzdHJpbmcuaW1wbCgpLT5zaXplSW5CeXRlcygp
KTsKKyAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlwZSwgc3RyaW5nSW1wbC0+c2l6ZUluQnl0
ZXMoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZW1vcnlJbnN0cnVtZW50YXRpb24uaAppbmRleCA4ODM0ZDM3Njg5MjI5YzlhZDBiZWZhMzY0Mjdl
ZTA4NTk1ZjE5ZmUzLi42YThlYzQ1YTgwZDQ3MDk3ZTBkODkyZTc4NDRhYmJmZmI1NWU1MDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5oCkBAIC0xMDIsMTEg
KzEwMiwxMyBAQCBwcml2YXRlOgogICAgICAgICBPd25pbmdUcmFpdHM8VD46OmFkZE9iamVjdCh0
aGlzLCB0LCBvd25lck9iamVjdFR5cGUpOwogICAgIH0KICAgICB2b2lkIGFkZE9iamVjdChjb25z
dCBTdHJpbmcmLCBPYmplY3RUeXBlKTsKKyAgICB2b2lkIGFkZE9iamVjdChjb25zdCBTdHJpbmdJ
bXBsKiwgT2JqZWN0VHlwZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgYWRkSW5z
dHJ1bWVudGVkT2JqZWN0KGNvbnN0IFQmIHQsIE9iamVjdFR5cGUgb3duZXJPYmplY3RUeXBlKSB7
IE93bmluZ1RyYWl0czxUPjo6YWRkSW5zdHJ1bWVudGVkT2JqZWN0KHRoaXMsIHQsIG93bmVyT2Jq
ZWN0VHlwZSk7IH0KLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoTWFwVHlwZT4gdm9pZCBh
ZGRIYXNoTWFwKGNvbnN0IEhhc2hNYXBUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25s
eSA9IGZhbHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRk
SGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkg
PSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbGxlY3Rpb25UeXBlPiB2b2lkIGFk
ZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5cGUmLCBPYmplY3RUeXBl
LCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBU
eXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYsIE9iamVj
dFR5cGUpOworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1l
bnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiwgT2JqZWN0VHlwZSk7CiAgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIExpc3RIYXNoU2V0VHlwZT4gdm9pZCBhZGRMaXN0SGFzaFNldChjb25zdCBMaXN0
SGFzaFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNvbnRlbnRPbmx5ID0gZmFsc2UpOwogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZFZlY3Rvcihjb25zdCBWZWN0
b3JUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKICAgICB2b2lk
IGFkZFJhd0J1ZmZlcihjb25zdCB2b2lkKiBjb25zdCYgYnVmZmVyLCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgc2l6ZV90IHNpemUpCkBAIC0xOTAsMTAgKzE5MiwxMyBAQCBwdWJsaWM6CiAK
ICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5cGU+IHZvaWQgYWRkSGFzaE1hcChjb25z
dCBIYXNoTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoTWFw
KG1hcCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNo
U2V0VHlwZT4gdm9pZCBhZGRIYXNoU2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1v
cnlJbnN0cnVtZW50YXRpb24tPmFkZEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9
CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEhhc2hDb3VudGVk
U2V0KGNvbnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFk
ZEhhc2hTZXQoc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEhhc2hTZXRUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZEhhc2hTZXQoY29uc3QgSGFzaFNl
dFR5cGUmIHNldCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29s
bGVjdGlvbihzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRWZWN0b3IoY29uc3QgVmVjdG9yVHlw
ZSYgdmVjdG9yKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xs
ZWN0aW9uKHZlY3RvciwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZFZlY3RvclB0cihjb25zdCBPd25Q
dHI8VmVjdG9yVHlwZT4mIHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5z
dHJ1bWVudGVkQ29sbGVjdGlvbigqdmVjdG9yLCBtX29iamVjdFR5cGUsIGZhbHNlKTsgfQogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0b3JUeXBlPiB2b2lkIGFkZEluc3RydW1lbnRlZFZlY3Rv
clB0cihjb25zdCBWZWN0b3JUeXBlKiBjb25zdCYgdmVjdG9yKSB7IG1fbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKCp2ZWN0b3IsIG1fb2JqZWN0VHlwZSwg
ZmFsc2UpOyB9CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1
bWVudGVkTWFwRW50cmllcyhjb25zdCBNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50
YXRpb24tPmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMobWFwLCBtX29iamVjdFR5cGUpOyB9Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkTWFwVmFs
dWVzKGNvbnN0IE1hcFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5z
dHJ1bWVudGVkTWFwVmFsdWVzKG1hcCwgbV9vYmplY3RUeXBlKTsgfQogICAgIHRlbXBsYXRlIDx0
eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlzdEhhc2hTZXQoY29uc3QgTGlzdEhh
c2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZExpc3RIYXNoU2V0
KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWN0
b3JUeXBlPiB2b2lkIGFkZFZlY3Rvcihjb25zdCBWZWN0b3JUeXBlJiB2ZWN0b3IpIHsgbV9tZW1v
cnlJbnN0cnVtZW50YXRpb24tPmFkZFZlY3Rvcih2ZWN0b3IsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7
IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRWZWN0b3JQdHIo
Y29uc3QgVmVjdG9yVHlwZSogY29uc3QgdmVjdG9yKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9u
LT5hZGRWZWN0b3IoKnZlY3RvciwgbV9vYmplY3RUeXBlLCBmYWxzZSk7IH0KQEAgLTIwMSw2ICsy
MDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZE1lbWJlcihjb25zdCBTdHJpbmcmIHN0cmlu
ZykgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0KHN0cmluZywgbV9vYmplY3RU
eXBlKTsgfQogICAgIHZvaWQgYWRkTWVtYmVyKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKSB7
IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3QoKGNvbnN0IFN0cmluZyYpc3RyaW5n
LCBtX29iamVjdFR5cGUpOyB9CisgICAgdm9pZCBhZGRNZW1iZXIoY29uc3QgU3RyaW5nSW1wbCog
c3RyaW5nKSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRPYmplY3Qoc3RyaW5nLCBtX29i
amVjdFR5cGUpOyB9CiAKIHByaXZhdGU6CiAgICAgTWVtb3J5T2JqZWN0SW5mbyogbV9tZW1vcnlP
YmplY3RJbmZvOwpAQCAtMzA2LDYgKzMxMiwyNCBAQCB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbihjb25zdCBDb2xsZWN0aW9uVHlwZSYgY29sbAog
ICAgICAgICBhZGRJbnN0cnVtZW50ZWRPYmplY3QoKmksIG93bmVyT2JqZWN0VHlwZSk7CiB9CiAK
K3RlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPgordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246
OmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYgbWFwLCBPYmplY3RUeXBl
IG93bmVyT2JqZWN0VHlwZSkKK3sKKyAgICB0eXBlbmFtZSBNYXBUeXBlOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtYXAuZW5kKCk7CisgICAgZm9yICh0eXBlbmFtZSBNYXBUeXBlOjpjb25zdF9pdGVy
YXRvciBpID0gbWFwLmJlZ2luKCk7IGkgIT0gZW5kOyArK2kpIHsKKyAgICAgICAgYWRkSW5zdHJ1
bWVudGVkT2JqZWN0KGktPmZpcnN0LCBvd25lck9iamVjdFR5cGUpOworICAgICAgICBhZGRJbnN0
cnVtZW50ZWRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOworICAgIH0KK30KKwor
dGVtcGxhdGUgPHR5cGVuYW1lIE1hcFR5cGU+Cit2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
YWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwgT2JqZWN0VHlwZSBv
d25lck9iamVjdFR5cGUpCit7CisgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6Y29uc3RfaXRlcmF0
b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKQorICAgICAgICBhZGRJbnN0cnVtZW50
ZWRPYmplY3QoaS0+c2Vjb25kLCBvd25lck9iamVjdFR5cGUpOworfQorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBMaXN0SGFzaFNldFR5cGU+CiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkTGlz
dEhhc2hTZXQoY29uc3QgTGlzdEhhc2hTZXRUeXBlJiBoYXNoU2V0LCBPYmplY3RUeXBlIG93bmVy
T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDb2xvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCmlu
ZGV4IDI1NzJiN2JiZmUyOWZjMjE2YjhhZThhNjljM2NiNGQyZTg3YTMxYWQuLjBlZGVkNjExYzhm
OGFhYmVhNDQyZjAxNDYzYmQwMjQyMGVhNDcyZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb2xvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmNwcApA
QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAKICNpbmNsdWRlICJDU1NQ
YXJzZXIuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJS
R0JDb2xvci5oIgogI2luY2x1ZGUgIlNWR0V4Y2VwdGlvbi5oIgogCkBAIC0xMDQsNiArMTA1LDEx
IEBAIFBhc3NSZWZQdHI8U1ZHQ29sb3I+IFNWR0NvbG9yOjpjbG9uZUZvckNTU09NKCkgY29uc3QK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNWR0NvbG9yKFNWR0NvbG9yQ2xhc3MsICp0aGlzKSk7
CiB9CiAKK3ZvaWQgU1ZHQ29sb3I6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5m
bzxTVkdDb2xvcj4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50
YXRpb246OkNTUyk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
b2xvci5oCmluZGV4IGNmZmFjNTM4NWUyMTUxOWM2Mjg4MTVhYzkzMjE2YTYzMzM1MDg5NzQuLjdk
ZGRjZDdhOTQ0NGIxMWNkODU2NTQ5YTMyNDk1YmZmMWU5MGRjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDb2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb2xv
ci5oCkBAIC03NSw2ICs3NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBQYXNzUmVmUHRyPFNWR0Nv
bG9yPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKICAgICBm
cmllbmQgY2xhc3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
aW50LmNwcAppbmRleCA4Y2YzZDdlNTY4MjJlYWNlMWFjMTNiMmZlYzI4NGVkOGVmNzNhOGUwLi45
YzY1NWIzY2VmNmYwNTQ4MDUzMjM0MGYzY2MwMDJjYWRjZmNlMThlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YWludC5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNW
R1BhaW50LmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRl
ICJTVkdFeGNlcHRpb24uaCIKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTExMSw2ICsxMTIsMTIgQEAgUGFzc1JlZlB0cjxT
VkdQYWludD4gU1ZHUGFpbnQ6OmNsb25lRm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgU1ZHUGFpbnQoKnRoaXMpKTsKIH0KIAordm9pZCBTVkdQYWludDo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPFNWR1BhaW50PiBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZE1lbWJl
cihtX3VyaSk7Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWlu
dC5oCmluZGV4IGIwNTNjYmQ3Nzc4YzdhMTkwMmFlZmE1ZDZlZTA5ZGU4N2Y4YjNiOTMuLmFjNTY3
NWI1OWVkZTBjOWI5MGY3MWRhM2M4ZTYyYzdlZTk3ZWRlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYWludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYWludC5o
CkBAIC05NSw2ICs5NSw4IEBAIHB1YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGNs
b25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xh
c3MgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156661</attachid>
            <date>2012-08-06 04:51:17 -0700</date>
            <delta_ts>2012-08-06 06:21:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93130-20120806155052.patch</filename>
            <type>text/plain</type>
            <size>79331</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2I5MjhmNTBmOTJhNTA4
Mjk0YjBjZDJiNWQzMjRjNjJmYzRiNWRiNC4uYzNhZWVhZTI3YTJmMjQyZDFjMGE4ZDFhNWZkYzhi
YjRhZGI0YWQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwNSBAQAorMjAxMi0wOC0wMyAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVj
dG9yOiBhZGQgbWVtb3J5IGluc3RydW1lbnRhdGlvbiBmb3IgQ1NTVmFsdWUgYW5kIGl0cyBkZXNj
ZW5kYW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTMxMzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBtZW1vcnkgZm9vdHByaW50IHJlcG9ydGluZyByb3V0aW5lIHRvIENTU1ZhbHVlIGFuZCBp
dHMgZGVzY2VuZGFudHMuCisKKyAgICAgICAgTWVtb3J5IHJlcG9yaW5nIGZvciBDU1NWYWx1ZSBp
cyBvcmdhbml6ZWQgaW4gYSBmb2xsb3dpbmcgd2F5OgorICAgICAgICAtIENTU1ZhbHVlIGltcGxl
bWVudHMgcmVwb3J0TWVtb3J5VXNhZ2UgbWV0aG9kIHRoYXQgc3dpdGNoZXMgYnkgdGhlIHZhbHVl
CisgICAgICAgICAgdHlwZSBhbmQgY2FsbHMgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlIG9u
IHRoZSBjb25jcmV0ZSB0eXBlCisgICAgICAgIC0gVGhlcmUgbWF5IGJlIHNvbWUgaW50ZXJtZWRp
YXRlIGNsYXNzZXMgaW4gdGhlIGluaGVyaXRhbmNlIGNoYWluIGJldHdlZW4KKyAgICAgICAgICBD
U1NWYWx1ZSBhbmQgdGhlIGxlYWYgY2xhc3MgaW1wbGVtZW50aW5nIHJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZS4gVGhvc2UKKyAgICAgICAgICBpbnRlcm1lZGlhdGUgY2xhc3NlcyBpbXBsZW1l
bnQgcmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UgbWV0aG9kIHRoYXQgY2FuCisgICAgICAgICAg
YmUgY2FsbGVkIGZyb20gYSBkZXNjZW5kYW50IHRvIGNvbGxlY3QgbWVtb3J5IGluZm9ybWF0aW9u
IGZvciB0aGUgYmFzZSBjbGFzcworICAgICAgICAgIG1lbWJlcnMuIEhhdmluZyByZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2Ugb25seSBvbiB0aGUgbGVhZiBjbGFzc2VzIHByZXZlbnRzCisgICAg
ICAgICAgdXMgZnJvbSBhY2NpZGVudGFsbHkgYWRkaW5nIHRoZSBpbnRlcm1lZGlhdGUgY2xhc3Nl
cyB0byB0aGUgc3dpdGNoIGJsb2NrCisgICAgICAgICAgaW4gdGhlIENTU1ZhbHVlOjpyZXBvcnRN
ZW1vcnlVc2FnZS4KKworICAgICAgICAqIGNzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0FzcGVjdFJhdGlvVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTQXNwZWN0UmF0
aW9WYWx1ZS5oOgorICAgICAgICAoQ1NTQXNwZWN0UmF0aW9WYWx1ZSk6CisgICAgICAgICogY3Nz
L0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmg6Cisg
ICAgICAgIChDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NDYWxj
dWxhdGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ2FsY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoQ1NT
Q2FsY1ByaW1pdGl2ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5o
OgorICAgICAgICAoQ1NTQ2FsY0V4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKENTU0NhbGNWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU0NhbnZhc1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmg6CisgICAgICAgIChDU1ND
YW52YXNWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0Nyb3NzZmFkZVZhbHVl
Lmg6CisgICAgICAgIChDU1NDcm9zc2ZhZGVWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0N1cnNv
ckltYWdlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGNzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmg6CisgICAgICAgIChDU1NDdXJzb3JJbWFnZVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250RmFjZVNyY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2Up
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUu
aDoKKyAgICAgICAgKENTU0ZvbnRGYWNlU3JjVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NGdW5j
dGlvblZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Z1bmN0aW9uVmFsdWU6OnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBj
c3MvQ1NTRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICAoQ1NTRnVuY3Rpb25WYWx1ZSk6CisgICAg
ICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3Jh
ZGllbnRDb2xvclN0b3A6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5
VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6cmVwb3J0
RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1JhZGlhbEdyYWRp
ZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL0NT
U0dyYWRpZW50VmFsdWUuaDoKKyAgICAgICAgKENTU0dyYWRpZW50Q29sb3JTdG9wKToKKyAgICAg
ICAgKENTU0dyYWRpZW50VmFsdWUpOgorICAgICAgICAoQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSk6
CisgICAgICAgIChDU1NSYWRpYWxHcmFkaWVudFZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oOgorICAgICAgICAoQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VTZXRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VT
ZXRWYWx1ZTo6SW1hZ2VXaXRoU2NhbGU6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBj
c3MvQ1NTSW1hZ2VTZXRWYWx1ZS5oOgorICAgICAgICAoSW1hZ2VXaXRoU2NhbGUpOgorICAgICAg
ICAoQ1NTSW1hZ2VTZXRWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU0ltYWdlVmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6
CisgICAgICAgIChDU1NJbWFnZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTSW5oZXJpdGVkVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTSW5oZXJpdGVkVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NT
SW5oZXJpdGVkVmFsdWUuaDoKKyAgICAgICAgKENTU0luaGVyaXRlZFZhbHVlKToKKyAgICAgICAg
KiBjc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0luaXRpYWxW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NJbml0aWFsVmFsdWUuaDoKKyAgICAgICAgKENTU0luaXRpYWxWYWx1
ZSk6CisgICAgICAgICogY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTTGluZUJveENvbnRhaW5WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NMaW5lQm94Q29udGFp
blZhbHVlLmg6CisgICAgICAgIChDU1NMaW5lQm94Q29udGFpblZhbHVlKToKKyAgICAgICAgKiBj
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZl
VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKENTU1ByaW1pdGl2
ZVZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1JlZmxlY3RWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGNzcy9DU1NSZWZsZWN0VmFsdWUuaDoKKyAgICAg
ICAgKENTU1JlZmxlY3RWYWx1ZSk6CisgICAgICAgICogY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3RlcHNUaW1pbmdGdW5j
dGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmg6CisgICAgICAgIChDU1NMaW5lYXJUaW1pbmdGdW5jdGlv
blZhbHVlKToKKyAgICAgICAgKENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZSk6Cisg
ICAgICAgIChDU1NTdGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NV
bmljb2RlUmFuZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NVbmljb2RlUmFuZ2VW
YWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGNzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oOgorICAgICAgICAoQ1NTVW5pY29k
ZVJhbmdlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q2xvbmVDU1NWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAg
ICAgICAgKFRleHRDbG9uZUNTU1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ZhbHVlOjpy
ZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvQ1NT
VmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ1NTVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NWYWx1ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0
OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogY3NzL0NTU1ZhbHVlTGlzdC5oOgorICAgICAgICAoQ1NTVmFsdWVMaXN0KToKKyAgICAg
ICAgKiBjc3MvQ1NTVmFyaWFibGVWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFyaWFi
bGVWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKENTU1Zhcmlh
YmxlVmFsdWUpOgorICAgICAgICAqIGNzcy9Gb250RmVhdHVyZVZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGZWF0dXJlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvRm9udEZlYXR1cmVWYWx1ZS5oOgor
ICAgICAgICAoRm9udEZlYXR1cmVWYWx1ZSk6CisgICAgICAgICogY3NzL0ZvbnRWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvRm9udFZhbHVlLmg6CisgICAg
ICAgIChGb250VmFsdWUpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXhwLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHA6OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAg
KiBjc3MvU2hhZG93VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93VmFsdWU6OnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBjc3MvU2hhZG93VmFsdWUuaDoKKyAgICAgICAgKFNoYWRvd1ZhbHVlKToKKyAgICAgICAgKiBj
c3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpj
b2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NGaWx0
ZXJWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IGNzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTRmlsdGVyVmFs
dWUpOgorICAgICAgICAqIGNzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdENTU1NWR0RvY3VtZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRN
ZW1vcnlVc2FnZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBjc3MvV2ViS2l0Q1NT
U1ZHRG9jdW1lbnRWYWx1ZS5oOgorICAgICAgICAoV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZSk6
CisgICAgICAgICogY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYktpdENTU1NoYWRlclZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmg6
CisgICAgICAgIChXZWJLaXRDU1NTaGFkZXJWYWx1ZSk6CisgICAgICAgICogY3NzL1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmg6CisgICAgICAgIChXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZSk6CisgICAgICAgICogZG9tL01lbW9yeUluc3RydW1lbnRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZFN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmg6CisgICAgICAgIChNZW1vcnlJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TWVtb3J5Q2xhc3NJbmZvOjphZGRIYXNoQ291bnRlZFNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlDbGFzc0luZm86OmFkZE1lbWJlcik6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NvbG9yOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL1NWR0NvbG9yLmg6CisgICAg
ICAgIChTVkdDb2xvcik6CisgICAgICAgICogc3ZnL1NWR1BhaW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1BhaW50OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogc3ZnL1NWR1BhaW50Lmg6CisgICAgICAgIChTVkdQYWludCk6
CisKIDIwMTItMDgtMDYgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG5hdGl2ZSBtZW1vcnkgaW5zdHJ1bWVudGF0aW9uOiBj
b3ZlciBNZW1vcnlDYWNoZSB3aXRoIE1lbW9yeUluc3RydW1lbnRhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuY3BwCmluZGV4IDE4YjBkZWQ2NzM2ZWUxNDQ5Zjg3
MDFlZTk5YTk3MTAyZWIzY2I1MzcuLmIwN2Y3YmE2NjljYWZhMmZkODNjYzdmNGY1YmNmZmMyNWUx
MWM3ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9WYWx1ZS5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NBc3BlY3RS
YXRpb1ZhbHVlLmgiCiAKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTQyLDQgKzQzLDkgQEAgU3RyaW5nIENTU0FzcGVjdFJhdGlvVmFsdWU6OmN1c3RvbUNzc1RleHQo
KSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAordm9pZCBDU1NBc3Bl
Y3RSYXRpb1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQXNw
ZWN0UmF0aW9WYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNTUyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBc3BlY3RSYXRpb1ZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQXNwZWN0UmF0aW9W
YWx1ZS5oCmluZGV4IDJmNmI0MjZkOGMwYTgzYTk2Zjk1ZWM5MGJiMmJjZjZhYWNhM2ZjMjUuLjVj
YzMzOTI0OWJiNTEzMWFiNjY2NWQxZTI4MjBiNGQ4ZDc4MmQ0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBc3BlY3RSYXRpb1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0FzcGVjdFJhdGlvVmFsdWUuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAg
ZmxvYXQgbnVtZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX251bWVyYXRvclZhbHVlOyB9
CiAgICAgZmxvYXQgZGVub21pbmF0b3JWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVub21pbmF0
b3JWYWx1ZTsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU0FzcGVjdFJhdGlvVmFsdWUo
ZmxvYXQgbnVtZXJhdG9yVmFsdWUsIGZsb2F0IGRlbm9taW5hdG9yVmFsdWUpCiAgICAgICAgIDog
Q1NTVmFsdWUoQXNwZWN0UmF0aW9DbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Jv
cmRlckltYWdlU2xpY2VWYWx1ZS5jcHAKaW5kZXggMDRlZjJkMzY2YzgwYzMyZTc2N2M3Njk1MGM2
NTYxMGQ2Y2I2NTJkMC4uZmY3M2FjYWY4NDkxNmUyZDczMTkxYjZlYWY5YzhhZDVmOTdmMmRjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NCb3Jk
ZXJJbWFnZVNsaWNlVmFsdWUuaCIKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgogCkBAIC00
OSw0ICs1MCwxMCBAQCBTdHJpbmcgQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlOjpjdXN0b21Dc3NU
ZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAordm9pZCBDU1NCb3JkZXJJbWFnZVNs
aWNlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NCb3JkZXJJ
bWFnZVNsaWNlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2xpY2Vz
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZS5oCmluZGV4IGQ4MjMwZjQ3NGViZjlmNGFkNDg5ZTc3Y2Vh
MjE2NGVkNDg3Y2U2NmYuLjQ4OGI0YTQxZDIwZGZhZjJjNDIyYzYxNDM4MDUzZTE0NWVmNDQ2ZjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlLmgKQEAg
LTQ1LDYgKzQ1LDggQEAgcHVibGljOgogCiAgICAgUXVhZCogc2xpY2VzKCkgeyByZXR1cm4gbV9z
bGljZXMgPyBtX3NsaWNlcy0+Z2V0UXVhZFZhbHVlKCkgOiAwOyB9CiAKKyAgICB2b2lkIHJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKICAgICAv
LyBUaGVzZSBmb3VyIHZhbHVlcyBhcmUgdXNlZCB0byBtYWtlICJjdXRzIiBpbiB0aGUgYm9yZGVy
IGltYWdlLiBUaGV5IGNhbiBiZSBudW1iZXJzCiAgICAgLy8gb3IgcGVyY2VudGFnZXMuCiAgICAg
UmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3NsaWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlvblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDYWxjdWxhdGlvblZhbHVlLmNwcAppbmRleCA1NDI0N2UwMzU5ZmI0NzQ4MWNjYWIyNzg0ZmUw
NDQyOGNjZDdjNGY0Li5iYzhlZGQ5M2YxYTMyMDMxNjQwODYxMGE5NmY2M2QyYmU1MWIxZDUwIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1bGF0aW9uVmFsdWUuY3BwCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJMZW5ndGguaCIK
KyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTdHlsZVJlc29s
dmVyLmgiCiAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC04Niw2ICs4NywxMSBAQCBTdHJp
bmcgQ1NTQ2FsY1ZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICAgICAgcmVzdWx0LmFw
cGVuZCgnKScpOwogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsgCiB9CisKK3ZvaWQgQ1NT
Q2FsY1ZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ2FsY1Zh
bHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6
Q1NTKTsKK30KICAgICAKIGRvdWJsZSBDU1NDYWxjVmFsdWU6OmNsYW1wVG9QZXJtaXR0ZWRSYW5n
ZShkb3VibGUgdmFsdWUpIGNvbnN0CiB7CkBAIC0xNzUsNiArMTgxLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gMDsgICAgICAgIAogICAgIH0KKworICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0NhbGNQ
cmltaXRpdmVWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OkNTUyk7CisgICAgICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fdmFs
dWUpOworICAgIH0KICAgICAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTQ2FsY1ByaW1pdGl2
ZVZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlKiB2YWx1ZSwgYm9vbCBpc0ludGVnZXIpCkBAIC0yNjAs
NiArMjcyLDEzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGV2YWx1YXRlKGxlZnRWYWx1ZSwg
cmlnaHRWYWx1ZSk7CiAgICAgfQogCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0IE9WRVJSSURFCisgICAg
eworICAgICAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ2FsY0JpbmFyeU9wZXJhdGlvbj4gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAg
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fbGVmdFNpZGUpOworICAgICAgICBpbmZv
LmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3JpZ2h0U2lkZSk7CisgICAgfQorCiAgICAgdmlydHVh
bCBTdHJpbmcgY3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgewogICAgICAgICBTdHJpbmdCdWls
ZGVyIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYWxjdWxhdGlv
blZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FsY3VsYXRpb25WYWx1ZS5oCmluZGV4
IDU3YTI0OWY4OTY4YzUxNjQ4Mjg2ZWU3NDEwNDU3MTdlZGVlNjY3NmYuLmIyNWY3YjMxYTUwMjJj
MDhiOGZmNmQ1YTYyNmQwYzQzNzQ0ZjQ5MTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDYWxjdWxhdGlvblZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbGN1
bGF0aW9uVmFsdWUuaApAQCAtNjQsNiArNjQsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBkb3Vi
bGUgZG91YmxlVmFsdWUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgY29tcHV0ZUxl
bmd0aFB4KFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUs
IGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2Up
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdCA9IDA7CiAgICAgCiAgICAgQ2FsY3VsYXRpb25DYXRlZ29yeSBjYXRlZ29yeSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2F0ZWdvcnk7IH0gICAgCiAgICAgYm9vbCBpc0ludGVnZXIoKSBjb25z
dCB7IHJldHVybiBtX2lzSW50ZWdlcjsgfQpAQCAtOTUsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAg
ZG91YmxlIGNvbXB1dGVMZW5ndGhQeChSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJT
dHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllciA9IDEuMCwgYm9vbCBjb21wdXRpbmdG
b250U2l6ZSA9IGZhbHNlKSBjb25zdDsKICAgICAgICAgCiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKKworICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKICAgICAKIHByaXZhdGU6ICAgIAogICAgIENTU0NhbGNWYWx1
ZShQYXNzUmVmUHRyPENTU0NhbGNFeHByZXNzaW9uTm9kZT4gZXhwcmVzc2lvbiwgQ2FsY3VsYXRp
b25QZXJtaXR0ZWRWYWx1ZVJhbmdlIHJhbmdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1
ZS5jcHAKaW5kZXggNzgzY2VlZjgyYjUwZjg4NWUzNzA1OWU3NWRlMTU2ZGVkZjI3ZDE2MS4uYzBh
ZGU0MmUwMzQwZDk3Y2JjNWEyMmU2YTcwYTdhZDI4ZThlZjdhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ2FudmFzVmFsdWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTQ2FudmFz
VmFsdWUuaCIKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTkyLDQgKzkzLDEyIEBAIFBhc3NSZWZQdHI8SW1hZ2U+IENTU0NhbnZhc1Zh
bHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiAvCiAgICAg
cmV0dXJuIGVsdC0+Y29waWVkSW1hZ2UoKTsKIH0KIAordm9pZCBDU1NDYW52YXNWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0NhbnZhc1ZhbHVlPiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZXBvcnRCYXNlQ2xhc3NNZW1vcnlVc2FnZShtZW1vcnlP
YmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX25hbWUpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKG1fZWxlbWVudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggMTU5ZTYxOTU2OGJhNTAzOGM1NzFk
YzE0NWQ4OWVmZDk2NWZlNGQ5NC4uMTNmYjU4NzQxZTU3MGQ1YjRhNTNkZjMyNTJlNGUzYzg2NjYx
NDRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTQ3LDYgKzQ3LDggQEAg
cHVibGljOgogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KIAorICAgIHZv
aWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
KwogcHJpdmF0ZToKICAgICBDU1NDYW52YXNWYWx1ZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShDYW52YXNDbGFzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCmluZGV4IGE5NWQxZTczYjc2YzdmNjg1NzhlODRiNGM1
ZWFkMTViOWE4OTVhNDguLjY2YjNkM2VkZjdlZGFlYzIxMWU1NDQ1MzQxYWE0YTNhYjBkMDQ0OTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiQ3Jvc3Nm
YWRlR2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgorI2luY2x1ZGUg
Ik1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2lu
Y2x1ZGUgIlN0eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZUdlbmVyYXRlZEltYWdl
LmgiCkBAIC0xMzQsNiArMTM1LDE5IEBAIHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJp
bWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgbV9j
cm9zc2ZhZGVTdWJpbWFnZU9ic2VydmVyLnNldFJlYWR5KHRydWUpOwogfQogCit2b2lkIENTU0Ny
b3NzZmFkZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTQ3Jv
c3NmYWRlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnJlcG9ydEJhc2VDbGFz
c01lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
TWVtYmVyKG1fZnJvbVZhbHVlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3Rv
VmFsdWUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fcGVyY2VudGFnZVZhbHVl
KTsKKyAgICAvLyBGSVhNRTogYWRkIGluc3RydW1lbnRhdGlvbiBmb3IKKyAgICAvLyBtX2NhY2hl
ZEZyb21JbWFnZQorICAgIC8vIG1fY2FjaGVkVG9JbWFnZQorICAgIC8vIG1fZ2VuZXJhdGVkSW1h
Z2UKK30KKwogUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUu
aXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuaAppbmRleCA4OWE3
MmM0ZTkyNzJkZDBkNzA0ZTFiN2U0YTE1Y2Q5NWFlOWNlZTdmLi5mNTI2N2ViY2RlMzU3OWE2MGY3
YmNlNmY0MGVhNTg4ZGI5YjViNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFs
dWUuaApAQCAtNjMsNiArNjMsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc0ZhaWxlZE9yQ2Fu
Y2VsZWRTdWJyZXNvdXJjZXMoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1ND
cm9zc2ZhZGVWYWx1ZShQYXNzUmVmUHRyPENTU1ZhbHVlPiBmcm9tVmFsdWUsIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHRvVmFsdWUpCiAgICAgICAgIDogQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZShDcm9z
c2ZhZGVDbGFzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFn
ZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmNwcApp
bmRleCBmODUwNjg0OGZmNzQ1NGM0MDI3YzBmMmMxMWQxNGE4NGJiZTYyOGViLi43N2MzYzkzOTZm
MDgzNjE1YTdmZWY0MWZiMGQxNTM3NDAyMTE1Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Vyc29ySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0N1cnNvckltYWdlVmFsdWUuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiQ1NTQ3Vy
c29ySW1hZ2VWYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNp
bmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+
CkBAIC0xMzIsNCArMTMzLDEzIEBAIHZvaWQgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTo6cmVtb3ZlUmVm
ZXJlbmNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIH0KICNlbmRpZgogCit2b2lkIENT
U0N1cnNvckltYWdlVmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxD
U1NDdXJzb3JJbWFnZVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBDU1NJbWFnZVZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisjaWYgRU5BQkxFKFNWRykKKyAgICBpbmZv
LmFkZEluc3RydW1lbnRlZEhhc2hTZXQobV9yZWZlcmVuY2VkRWxlbWVudHMpOworI2VuZGlmCit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDdXJzb3JJbWFnZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Vyc29ySW1h
Z2VWYWx1ZS5oCmluZGV4IGNiMjY5MTllNDY4M2Q2MjU1NjdlNzg3NDlhN2M4MGZmYzljZTBlZTcu
LmRjOGQxZmY0Y2E1ZjU4NjUyOGU5NzA2MmNkNWU5OGQ2NmY2YjEyZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDdXJzb3JJbWFnZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0N1cnNvckltYWdlVmFsdWUuaApAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW1vdmVSZWZlcmVuY2VkRWxlbWVudChTVkdFbGVtZW50Kik7CiAjZW5kaWYKIAor
ICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBJbnRQb2ludCYgaG90U3BvdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250RmFjZVNyY1ZhbHVlLmNwcAppbmRleCA2MDViMmZjZTcxYTk4OGEwZTA0NmUzNWI2YzZiYjZm
MTgxNDdkMDNmLi45NzE2MTQwZDg3NjlkMTc4NjU2YzIxYzk2OTMwMjIyNzUxZTI1MDZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuY3BwCkBAIC0yOSw3ICsyOSw5
IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkZvbnRDdXN0b21QbGF0Zm9ybURhdGEuaCIKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiU1ZHRm9u
dEZhY2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTk1LDUgKzk3LDE2IEBAIENhY2hlZEZvbnQqIENTU0ZvbnRGYWNl
U3JjVmFsdWU6OmNhY2hlZEZvbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIHJldHVybiBtX2Nh
Y2hlZEZvbnQuZ2V0KCk7CiB9CiAKK3ZvaWQgQ1NTRm9udEZhY2VTcmNWYWx1ZTo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0ZvbnRGYWNlU3JjVmFsdWU+IGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGlu
Zm8uYWRkTWVtYmVyKG1fcmVzb3VyY2UpOworICAgIGluZm8uYWRkTWVtYmVyKG1fZm9ybWF0KTsK
KyAgICAvLyBGSVhNRTogYWRkIG1fY2FjaGVkRm9udCB3aGVuIE1lbW9yeUNhY2hlIGlzIGluc3Ry
dW1lbnRlZC4KKyNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQorICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
TWVtYmVyKG1fc3ZnRm9udEZhY2VFbGVtZW50KTsKKyNlbmRpZgorfQorCiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udEZhY2VTcmNWYWx1ZS5oCmluZGV4IDA2ZWY0YjMzMDc5MDAxNWI1ZjE0
MDJkYzk0NTA0OGZkYmUwYzlkNDMuLjQ0NDRjODYwNjkyYWI2OGUyNTdmZjhmNjU1NmNlMDEyZjk4
YWFmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVNyY1ZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlU3JjVmFsdWUuaApAQCAtNzEs
NiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICBDYWNoZWRGb250KiBjYWNoZWRGb250KERvY3VtZW50
Kik7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTRm9udEZhY2VTcmNWYWx1ZShjb25zdCBT
dHJpbmcmIHJlc291cmNlLCBib29sIGxvY2FsKQogICAgICAgICA6IENTU1ZhbHVlKEZvbnRGYWNl
U3JjQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5jcHAKaW5kZXggNTIy
YWQ5ZmQxNjRhN2Q1ZDRhZGNjZmFlYWJmNzZjN2M4YjM2NjE1YS4uNTNkYzQzZmIzODJkM2I2YWIz
Y2JjZDE1MmQyNDczZWQ2NjRjZWM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZh
bHVlLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyVmFsdWVzLmgi
CiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtNDksNCArNTAsMTEgQEAgU3RyaW5nIENTU0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1Rl
eHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQ1NTRnVuY3Rpb25WYWx1
ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0Z1bmN0aW9uVmFsdWU+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1Mp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fbmFtZSk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRN
ZW1iZXIobV9hcmdzKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgK
aW5kZXggYTM1YTFiMTdiMzEwMjg5OWJlYmZkZDFlMThjYzEzYjRjN2Y2YjdiZi4uNmI3ZmJjNjVl
NGU0ZjFjMDdjYTUyZTEyM2ZjZmRhZWQ1NzE5MzZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVu
Y3Rpb25WYWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0
b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NT
RnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJGdW5jdGlvbiopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggM2YxOTc5ZmVlNTAwNGQzZWJiZDhmZDdhNTFkYjcxNzNm
YWQxZmUwMy4uMzA3NmQyYWY2MmE5YWYwOTU2OTdjOTJhNWI1MjBhYjdiYzBjZTg5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkludFNpemVI
YXNoLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9k
ZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKQEAgLTQyLDYgKzQzLDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCBDU1NHcmFkaWVudENvbG9yU3RvcDo6cmVwb3J0
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sK
KyAgICBNZW1vcnlDbGFzc0luZm88Q1NTR3JhZGllbnRDb2xvclN0b3A+IGluZm8obWVtb3J5T2Jq
ZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRk
SW5zdHJ1bWVudGVkTWVtYmVyKG1fcG9zaXRpb24pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVk
TWVtYmVyKG1fY29sb3IpOworfQorCiBQYXNzUmVmUHRyPEltYWdlPiBDU1NHcmFkaWVudFZhbHVl
OjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQogewog
ICAgIGlmIChzaXplLmlzRW1wdHkoKSkKQEAgLTQ1Miw2ICs0NjAsMTcgQEAgYm9vbCBDU1NHcmFk
aWVudFZhbHVlOjppc0NhY2hlYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3Zv
aWQgQ1NTR3JhZGllbnRWYWx1ZTo6cmVwb3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88
Q1NTR3JhZGllbnRWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OkNTUyk7CisgICAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVwb3J0QmFz
ZUNsYXNzTWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgaW5mby5hZGRJbnN0cnVt
ZW50ZWRNZW1iZXIobV9maXJzdFgpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1f
Zmlyc3RZKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3NlY29uZFgpOworICAg
IGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fc2Vjb25kWSk7CisgICAgaW5mby5hZGRJbnN0
cnVtZW50ZWRWZWN0b3IobV9zdG9wcyk7Cit9CisKIFN0cmluZyBDU1NMaW5lYXJHcmFkaWVudFZh
bHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwpAQCAtNTk0
LDYgKzYxMywxMyBAQCBQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVl
OjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcgogICAgIHJldHVybiBncmFkaWVu
dC5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6cmVwb3J0RGVz
Y2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAg
IENTU0dyYWRpZW50VmFsdWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fYW5nbGUpOworfQorCiBT
dHJpbmcgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nIHJlc3VsdDsKQEAgLTg5MSw0ICs5MTcsMTYgQEAgUGFzc1JlZlB0cjxHcmFkaWVu
dD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiBy
ZW5kZXIKICAgICByZXR1cm4gZ3JhZGllbnQucmVsZWFzZSgpOwogfQogCit2b2lkIENTU1JhZGlh
bEdyYWRpZW50VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NS
YWRpYWxHcmFkaWVudFZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUlu
c3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBDU1NHcmFkaWVudFZhbHVlOjpyZXBvcnRCYXNlQ2xh
c3NNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcihtX2ZpcnN0UmFkaXVzKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlciht
X3NlY29uZFJhZGl1cyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9zaGFwZSk7
CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9zaXppbmdCZWhhdmlvcik7CisgICAg
aW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9lbmRIb3Jpem9udGFsU2l6ZSk7CisgICAgaW5m
by5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9lbmRWZXJ0aWNhbFNpemUpOworfQorCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCAw
YzdlZjc3NjRiMjEwYjMzNjZmYjBjMzkwZGE0NGIzNDYzNDllODk0Li44ODJjYzYyOGZmZDY1NmZl
YWExYTZkNDcxZmVjYjY3ZjNjZmJkYTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZh
bHVlLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RydWN0IENTU0dyYWRpZW50Q29sb3JTdG9wIHsKICAg
ICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fY29sb3I7CiAgICAgQ29sb3IgbV9yZXNvbHZl
ZENvbG9yOwogICAgIGJvb2wgbV9jb2xvcklzRGVyaXZlZEZyb21FbGVtZW50OworICAgIHZvaWQg
cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogfTsKIAogY2xhc3Mg
Q1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKQEAgLTEw
NSw2ICsxMDYsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICBib29sIGlzQ2FjaGVhYmxlKCkgY29uc3Q7
CiAKKyAgICB2b2lkIHJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
KSBjb25zdDsKKwogICAgIC8vIFBvaW50cy4gU29tZSBvZiB0aGVzZSBtYXkgYmUgbnVsbCBmb3Ig
bGluZWFyIGdyYWRpZW50cy4KICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fZmlyc3RY
OwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gbV9maXJzdFk7CkBAIC0xMzksNiArMTQy
LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU0xpbmVhckdyYWRp
ZW50VmFsdWUoKnRoaXMpKTsKICAgICB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZShDU1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIGJvb2wgZGVwcmVjYXRl
ZFR5cGUgPSBmYWxzZSkKICAgICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKExpbmVhckdyYWRpZW50
Q2xhc3MsIHJlcGVhdCwgZGVwcmVjYXRlZFR5cGUpCkBAIC0xODAsNiArMTg1LDggQEAgcHVibGlj
OgogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6ZS4KICAgICBQYXNz
UmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRT
aXplJik7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZShD
U1NHcmFkaWVudFJlcGVhdCByZXBlYXQsIGJvb2wgZGVwcmVjYXRlZFR5cGUgPSBmYWxzZSkKICAg
ICAgICAgOiBDU1NHcmFkaWVudFZhbHVlKFJhZGlhbEdyYWRpZW50Q2xhc3MsIHJlcGVhdCwgZGVw
cmVjYXRlZFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5jcHAKaW5kZXggOWJlNDQ2YmQwZmI4NWIwNjRkNjlmMTg2MzI2OTlhMDM5YTBhYzFkNi4uYzJh
ZDUwMWYzY2YwZDU1YWIxNTRiNjMwMWM5NDExZDFjMDhkZGYyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkNTU0Nyb3NzZmFkZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5o
IgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTEwOCw2ICsxMDksMTQgQEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpw
dXRJbWFnZShjb25zdCBJbnRTaXplJiBzaXplLCBQYXNzUmVmUHRyPEltYWdlPiBpbWEKICAgICBt
X2ltYWdlcy5hZGQoc2l6ZSwgaW1hZ2UpOwogfQogCit2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OnJlcG9ydEJhc2VDbGFzc01lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpDU1MpOworICAgIGluZm8uYWRkSGFzaENvdW50ZWRTZXQobV9zaXplcyk7CisgICAgaW5mby5h
ZGRIYXNoTWFwKG1fY2xpZW50cyk7CisgICAgaW5mby5hZGRIYXNoTWFwKG1faW1hZ2VzKTsgLy8g
RklYTUU6IGluc3RydW1lbnQgSW1hZ2UKK30KKwogUGFzc1JlZlB0cjxJbWFnZT4gQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKICAgICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAppbmRleCBiM2Q4NGVhYjI4M2YxMjRhNDIzMTQw
Y2I0NTJkNTQ2ODBhODEzOWJiLi5jZGY0MDVhMWNjMGIzOTA4MjY5NmM1N2Y4ZjdhMjIwNjAwNzkx
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgKQEAg
LTczLDYgKzczLDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgcHV0SW1hZ2UoY29uc3QgSW50U2l6
ZSYsIFBhc3NSZWZQdHI8SW1hZ2U+KTsKICAgICBjb25zdCBSZW5kZXJPYmplY3RTaXplQ291bnRN
YXAmIGNsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHM7IH0KIAorICAgIHZvaWQgcmVw
b3J0QmFzZUNsYXNzTWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiAgICAg
SGFzaENvdW50ZWRTZXQ8SW50U2l6ZT4gbV9zaXplczsgLy8gQSBjb3VudCBvZiBob3cgbWFueSB0
aW1lcyBhIGdpdmVuIGltYWdlIHNpemUgaXMgaW4gdXNlLgogICAgIFJlbmRlck9iamVjdFNpemVD
b3VudE1hcCBtX2NsaWVudHM7IC8vIEEgbWFwIGZyb20gUmVuZGVyT2JqZWN0cyAod2l0aCBlbnRy
eSBjb3VudCkgdG8gaW1hZ2Ugc2l6ZXMuCiAgICAgSGFzaE1hcDxJbnRTaXplLCBSZWZQdHI8SW1h
Z2U+ID4gbV9pbWFnZXM7IC8vIEEgY2FjaGUgb2YgSW1hZ2Ugb2JqZWN0cyBieSBpbWFnZSBzaXpl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlU2V0VmFsdWUuY3BwCmluZGV4IDg5YTY0NjIzMTc3
ZWU0ZWI4OGYwZmUyZDgwM2JiYzdhYjk2ZWNjNTUuLjM0M2Q5ZDcxOTE3OWU2MjQzNWQ2Y2VkN2Fk
YmY4MzUyODY0ZWRmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNl
dFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRWYWx1ZS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNs
dWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiU3R5bGVDYWNoZWRJbWFnZVNldC5oIgogI2luY2x1ZGUgIlN0eWxlUGVuZGluZ0ltYWdlLmgi
CkBAIC0xNjIsNiArMTYzLDE5IEBAIFBhc3NSZWZQdHI8Q1NTSW1hZ2VTZXRWYWx1ZT4gQ1NTSW1h
Z2VTZXRWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDU1NJbWFnZVNldFZhbHVlKCp0aGlzKSk7CiB9CiAKK3ZvaWQgQ1NTSW1hZ2VTZXRWYWx1ZTo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU0ltYWdlU2V0VmFsdWU+IGlu
Zm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwor
ICAgIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkVmVjdG9yKG1faW1hZ2VzSW5TZXQpOwor
fQorCit2b2lkIENTU0ltYWdlU2V0VmFsdWU6OkltYWdlV2l0aFNjYWxlOjpyZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1l
bW9yeUNsYXNzSW5mbzxDU1NJbWFnZVNldFZhbHVlOjpJbWFnZVdpdGhTY2FsZT4gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5m
by5hZGRNZW1iZXIoaW1hZ2VVUkwpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoQ1NTX0lNQUdFX1NFVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbWFnZVNldFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VTZXRW
YWx1ZS5oCmluZGV4IDk1MjcwYTY3ZGZiZDQ2YmJkMThhNTRiY2JhMzEyZDc0NDAwOGI5YjcuLmE3
OTFkMWVhMTc3ZmJmMWMzOGI2ZWViMTczNDk1OTViOGYxYzAzZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVNldFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ltYWdlU2V0VmFsdWUuaApAQCAtNTgsMTIgKzU4LDE1IEBAIHB1YmxpYzoKICAgICBzdHJ1
Y3QgSW1hZ2VXaXRoU2NhbGUgewogICAgICAgICBTdHJpbmcgaW1hZ2VVUkw7CiAgICAgICAgIGZs
b2F0IHNjYWxlRmFjdG9yOworICAgICAgICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKICAgICB9OwogCiAgICAgYm9vbCBoYXNGYWlsZWRPckNhbmNlbGVk
U3VicmVzb3VyY2VzKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPENTU0ltYWdlU2V0VmFsdWU+
IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIEltYWdl
V2l0aFNjYWxlIGJlc3RJbWFnZUZvclNjYWxlRmFjdG9yKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZVZhbHVlLmNwcAppbmRleCAwN2JkNGIzZTMyOGMwZmIyMmIyOTQ1ZWQ3OGU1ZDk1M2M1ZjZi
OWMzLi5mNmY1NDg1MzZlYzI3MDhhNDkzOWNjMTkzNWZiNTM0OGI2MzI1Y2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0yNCwxMCArMjQsMTEgQEAKICNpbmNsdWRlICJD
U1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAi
Q1NTVmFsdWVLZXl3b3Jkcy5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJl
c291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJNZW1vcnlD
YWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlN0
eWxlQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVBlbmRpbmdJbWFnZS5oIgogCkBAIC0x
MjUsNCArMTI2LDExIEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0ltYWdlVmFsdWU6OmNsb25l
Rm9yQ1NTT00oKSBjb25zdAogICAgIHJldHVybiB1cmlWYWx1ZS5yZWxlYXNlKCk7CiB9CiAKK3Zv
aWQgQ1NTSW1hZ2VWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVj
dEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENT
U0ltYWdlVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdXJsKTsKKyAgICAvLyBObyBuZWVk
IHRvIHJlcG9ydCBtX2ltYWdlIGFzIGl0IGlzIGNvdW50ZWQgYXMgcGFydCBvZiBSZW5kZXJBcmVu
YS4KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVl
LmgKaW5kZXggNzUwNjNkMmZhOTViODQzNjRhY2RlNzg4NThhNjM5OGJhNWE5ODEwZC4uOGM4MmYy
YzY3ZGI0MzNhNzUxNzMzYzk2NzFkZTliOTE1MWU3YTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1h
Z2VWYWx1ZS5oCkBAIC00OCw2ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRmFpbGVk
T3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5k
YW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAg
ICAgQ1NTSW1hZ2VWYWx1ZShDbGFzc1R5cGUsIGNvbnN0IFN0cmluZyYgdXJsKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5jcHAKaW5kZXggOGM0YmU2ZDRiYzcwMGMyYjA2
YjEwMzVmNzI1ODNjNzVhZDg5MTczMi4uMjY4MGYyZmQ2NDM3ZmQ2ZTQ3NzMxOTVlMzQwZDRiNzc0
MTYwMWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaGVyaXRlZFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5oZXJpdGVkVmFsdWUuY3BwCkBAIC0y
MSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTSW5oZXJpdGVk
VmFsdWUuaCIKIAorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUg
IlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTMwLDQgKzMxLDkg
QEAgU3RyaW5nIENTU0luaGVyaXRlZFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICBy
ZXR1cm4gImluaGVyaXQiOwogfQogCit2b2lkIENTU0luaGVyaXRlZFZhbHVlOjpyZXBvcnREZXNj
ZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29u
c3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTSW5oZXJpdGVkVmFsdWU+IGluZm8obWVtb3J5
T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5o
ZXJpdGVkVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCmlu
ZGV4IDVhYTkwNjM2NzcxNzMwNDY2OGIxMzQyYmI2ZDE3YmFkYjE2N2QwZTkuLjY4YzAwMWY1MzQy
NjZhNGY3ZGFlYmIwZGVlNjI5ZDM1N2FlOWZkNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NJbmhlcml0ZWRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbmhl
cml0ZWRWYWx1ZS5oCkBAIC0zNSw2ICszNSw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0
b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTSW5oZXJpdGVk
VmFsdWUoKQogICAgICAgICA6IENTU1ZhbHVlKEluaGVyaXRlZENsYXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTSW5pdGlhbFZhbHVlLmNwcAppbmRleCA4ZGUzZjMxODJjNWMxZWVkZTNhY2Q5MjAxMGQw
N2U5YmU4MTliMjMyLi4zNmJkOTUwODBlYjVkNWI5ZDVjOWIwYjRkYjk2YmMxZjZmOWU0YmE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmNwcApAQCAtMjEsNiArMjEsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgogCisjaW5j
bHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzAsNCArMzEsOSBAQCBTdHJpbmcgQ1NTSW5p
dGlhbFZhbHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gImluaXRpYWwiOwog
fQogCit2b2lkIENTU0luaXRpYWxWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1l
bW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xh
c3NJbmZvPENTU0luaXRpYWxWYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbml0aWFsVmFsdWUuaAppbmRleCBkZDg2ZDg0MjQxYTY2ZmYyZjczN2Fl
OWEwMjFhNGJiYWM4MDhiNjAwLi5kNTIzMzQzZDNkMzQxNzM0MTMxM2E2YWU5NWM2YTY2OTc0MzA4
MWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW5pdGlhbFZhbHVlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0luaXRpYWxWYWx1ZS5oCkBAIC00MSw2ICs0MSw4IEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgaXNJbXBsaWNpdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbXBs
aWNpdDsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2Jq
ZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIENTU0luaXRpYWxWYWx1ZShib29sIGlt
cGxpY2l0KQogICAgICAgICA6IENTU1ZhbHVlKEluaXRpYWxDbGFzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmNwcAppbmRleCA1MzEzMmViMTkwZjVlYTI5
Y2M3MzRkMGRkNWMyNzk0NWNiZmUxYmRjLi4yY2ZmZTUzNGM5NjkzZTQ3Y2JhMWQ4YmM1Y2Y3ZWIz
ZjExZmU1OWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTTGluZUJveENvbnRh
aW5WYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFs
dWUuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTTGluZUJveENvbnRhaW5WYWx1
ZS5oIgogCiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC03Miw0ICs3Myw5IEBAIFN0cmluZyBDU1NMaW5lQm94Q29udGFpblZh
bHVlOjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAordm9pZCBD
U1NMaW5lQm94Q29udGFpblZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5
T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0lu
Zm88Q1NTTGluZUJveENvbnRhaW5WYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBN
ZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTTGluZUJveENvbnRhaW5WYWx1ZS5oCmluZGV4IGRkYzBjNjBmM2MyNDY1YWZlMjM3MmRjM2Y0
NDBkYzcxNDBlYzUyN2IuLmVlYjY0NzBjODM4NzdlYzZlZjJjOGRjMDQxODgwMGY0ZDRjNWRkMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NMaW5lQm94Q29udGFpblZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0xpbmVCb3hDb250YWluVmFsdWUuaApAQCAtNTAs
NiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBMaW5lQm94Q29udGFpbiB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBMaW5lQm94Q29udGFp
biBtX3ZhbHVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAppbmRl
eCBkNWJkZTgyYTFiNGRkOWI0MjU4OWMxYzVkMGY0YTY0ZDA5ZWZiYzkwLi4yNTlhNTA1MzI4ODc4
Y2RhNjBmODY2MjY1MTc1ZTg1NTVhOGM1NWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2lu
Y2x1ZGUgIkNvdW50ZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAi
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBh
aXIuaCIKICNpbmNsdWRlICJSR0JDb2xvci5oIgpAQCAtMTI1OCw0ICsxMjU5LDQ4IEBAIFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IENTU1ByaW1pdGl2ZVZhbHVlOjpjbG9uZUZvckNTU09N
KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIENTU1ByaW1pdGl2ZVZhbHVl
OjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2Jq
ZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88Q1NTUHJpbWl0aXZlVmFsdWU+
IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1Mp
OworICAgIHN3aXRjaCAobV9wcmltaXRpdmVVbml0VHlwZSkgeworICAgIGNhc2UgQ1NTX0FUVFI6
CisgICAgY2FzZSBDU1NfQ09VTlRFUl9OQU1FOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9JREVOVElG
SUVSOgorICAgIGNhc2UgQ1NTX1BBUlNFUl9IRVhDT0xPUjoKKyAgICBjYXNlIENTU19TVFJJTkc6
CisgICAgY2FzZSBDU1NfVVJJOgorI2lmIEVOQUJMRShDU1NfVkFSSUFCTEVTKQorICAgIGNhc2Ug
Q1NTX1ZBUklBQkxFX05BTUU6CisjZW5kaWYKKyAgICAgICAgLy8gRklYTUU6IGRldGVjdCBvdGhl
ciBjYXNlcyB3aGVuIG1fdmFsdWUgaXMgU3RyaW5nSW1wbCoKKyAgICAgICAgaW5mby5hZGRNZW1i
ZXIobV92YWx1ZS5zdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19DT1VOVEVS
OgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLmNvdW50ZXIpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENTU19SRUNUOgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnJl
Y3QpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19RVUFEOgorICAgICAgICBpbmZvLmFk
ZE1lbWJlcihtX3ZhbHVlLnF1YWQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENTU19QQUlS
OgorICAgICAgICBpbmZvLmFkZE1lbWJlcihtX3ZhbHVlLnBhaXIpOworICAgICAgICBicmVhazsK
KyNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpIHx8IEVOQUJMRShXSURHRVRfUkVHSU9OKQor
ICAgIGNhc2UgQ1NTX0RBU0hCT0FSRF9SRUdJT046CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1f
dmFsdWUucmVnaW9uKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIENTU19TSEFQ
RToKKyAgICAgICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZS5zaGFwZSk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ1NTX0NBTEM6CisgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fdmFsdWUuY2Fs
Yyk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuaAppbmRleCA4NzA2OWMwNDMzMzk1NjMwNzc2ODZmODY3Mzk0MGVlMWZjOWQ3MTM0Li5m
ZDA4MzJkMzQ3ODBiOTY5NDUwMDUxOTQyMGRhMTNlZWQxZjM3Yjc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApAQCAtMzA2LDYgKzMwNiw4IEBAIHB1YmxpYzoKICAgICBQ
YXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAgICAg
dm9pZCBzZXRDU1NPTVNhZmUoKSB7IG1faXNDU1NPTVNhZmUgPSB0cnVlOyB9CiAKKyAgICB2b2lk
IHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisK
IHByaXZhdGU6CiAgICAgLy8gRklYTUU6IGludCB2cy4gdW5zaWduZWQgb3ZlcmxvYWRpbmcgaXMg
dG9vIHN1YnRsZSB0byBkaXN0aW5ndWlzaCB0aGUgY29sb3IgYW5kIGlkZW50aWZpZXIgY2FzZXMu
CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUoaW50IGlkZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVy
dHkuY3BwCmluZGV4IGFiNzZjMzJiZGFhYzJjY2ZjOTIwMTIwNDdhZGI1YzM4ZjdkMjQyNWIuLjAy
MWFkZDI3MTg1MzM4MzhiN2FkMDQzMTRlMjg4NjhjOWJlZWUzYmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmNwcApAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5Lmgi
CiAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlbmRlclN0
eWxlQ29uc3RhbnRzLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oIgpAQCAt
Njk0LDQgKzY5NSwxMCBAQCBib29sIENTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQgQ1NT
UHJvcGVydHk6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVj
dEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPENTU1Byb3BlcnR5PiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX3ZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAppbmRleCA3MTI0MTQ2NjZiZmRlYTU0YmM5
NmMxOTUzZjFkYjk2MDQwZTFkNmJjLi41N2EzMDEyNGY4MjhiMTZiYmQ2OTIyZDgwZDhkYmZkMGMy
MmNmMmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzAsNiArMzAsOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIE1lbW9yeU9iamVjdEluZm87CisKIGNsYXNzIENT
U1Byb3BlcnR5IHsKIHB1YmxpYzoKICAgICBDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJ
RCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIENT
U1Byb3BlcnR5SUQgc2hvcnRoYW5kSUQgPSBDU1NQcm9wZXJ0eUludmFsaWQsIGJvb2wgaW1wbGlj
aXQgPSBmYWxzZSkKQEAgLTU5LDYgKzYxLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBDU1NQcm9w
ZXJ0eUlEIHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFRleHRE
aXJlY3Rpb24sIFdyaXRpbmdNb2RlKTsKICAgICBzdGF0aWMgYm9vbCBpc0luaGVyaXRlZFByb3Bl
cnR5KENTU1Byb3BlcnR5SUQpOwogCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlP
YmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBmb2xs
b3dpbmcgZml0cyBpbiA0IGJ5dGVzLiBSZWFsbHkuCiAgICAgdW5zaWduZWQgbV9pZCA6IDE0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcAppbmRleCBiMzZjM2FkN2IyYzIxMmRh
YjZjNzljYTg0YmM5NTAwMTY5ODNmZDljLi4wOTg0NzUyNzNmMzI2N2NjOGUwNmNjZjU3NjU2NWUw
ZjRkNTAwMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmNwcApAQCAtMjcs
NiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU1JlZmxlY3RWYWx1ZS5oIgogCiAjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNjUs
NCArNjYsMTEgQEAgdm9pZCBDU1NSZWZsZWN0VmFsdWU6OmFkZFN1YnJlc291cmNlU3R5bGVVUkxz
KExpc3RIYXNoU2V0PEtVUkw+JiB1cmxzLCBjb25zdCBTdHkKICAgICAgICAgbV9tYXNrLT5hZGRT
dWJyZXNvdXJjZVN0eWxlVVJMcyh1cmxzLCBzdHlsZVNoZWV0KTsKIH0KIAordm9pZCBDU1NSZWZs
ZWN0VmFsdWU6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBt
ZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NSZWZsZWN0
VmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9u
OjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fb2Zmc2V0KTsKKyAgICBp
bmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihtX21hc2spOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUmVmbGVjdFZhbHVlLmgKaW5kZXggNWNmYjIwZTI3Zjc1
ODg0MDYxOTQxMjU4MGJjMDM0ZmVhNTdhNjllZi4uMWJkZmQ1ZmU3NmM3ZWYyODFmN2Y3Nzg5YjI5
Y2VhYTQ0OGM3M2JkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1JlZmxlY3RW
YWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NSZWZsZWN0VmFsdWUuaApAQCAtNTEs
NiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlU3R5bGVVUkxzKExp
c3RIYXNoU2V0PEtVUkw+JiwgY29uc3QgU3R5bGVTaGVldENvbnRlbnRzKikgY29uc3Q7CiAKKyAg
ICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTUmVmbGVjdFZhbHVlKENTU1JlZmxlY3Rpb25EaXJlY3Rp
b24gZGlyZWN0aW9uLCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBvZmZzZXQsIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IG1hc2spCiAgICAgICAgIDogQ1NTVmFsdWUoUmVmbGVjdENsYXNzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCmluZGV4IGRj
ZjdiYjI5YjU0NmM2ODRiZDk2YzdjZjZhYTE3NjhkZTRlYTEwMTAuLmZlODI3OGFiYzE3MWQ4NTE4
MDAyMzE3M2EwYzU4MGVmMDVlYWM1YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVGlt
aW5nRnVuY3Rpb25WYWx1ZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmgiCiAKKyNpbmNsdWRlICJNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw2ICszNiwxMSBAQCBTdHJpbmcgQ1NTTGluZWFyVGltaW5n
RnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJsaW5lYXIi
OwogfQogCit2b2lkIENTU0xpbmVhclRpbWluZ0Z1bmN0aW9uVmFsdWU6OnJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAor
eworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NMaW5lYXJUaW1pbmdGdW5jdGlvblZhbHVlPiBpbmZv
KG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30K
KwogU3RyaW5nIENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4
dCgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIHRleHQoImN1YmljLWJlemllcigiKTsKQEAgLTQ5LDYg
KzU1LDExIEBAIFN0cmluZyBDU1NDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3Rv
bUNzc1RleHQoKSBjb25zdAogICAgIHJldHVybiB0ZXh0OwogfQogCit2b2lkIENTU0N1YmljQmV6
aWVyVGltaW5nRnVuY3Rpb25WYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJ
bmZvPENTU0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZT4gaW5mbyhtZW1vcnlPYmplY3RJ
bmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIFN0cmluZyBDU1NT
dGVwc1RpbWluZ0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogewogICAgIFN0
cmluZyB0ZXh0KCJzdGVwcygiKTsKQEAgLTU5LDQgKzcwLDkgQEAgU3RyaW5nIENTU1N0ZXBzVGlt
aW5nRnVuY3Rpb25WYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHRleHQ7
CiB9CiAKK3ZvaWQgQ1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlOjpyZXBvcnREZXNjZW5kYW50
TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sK
KyAgICBNZW1vcnlDbGFzc0luZm88Q1NTU3RlcHNUaW1pbmdGdW5jdGlvblZhbHVlPiBpbmZvKG1l
bW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NUaW1pbmdGdW5j
dGlvblZhbHVlLmgKaW5kZXggZTU0NGM1ZmYwMGMwZDZmYzMxOTdmNDY4NWE4YTE1MjEzZGI0NThh
MC4uM2ViNGIyMjk1YWI5NzYzOTJmZGRmMmU1MGMyOWZkYzI2YmU1MGQ0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5oCkBAIC00MCw2ICs0MCw4IEBAIHB1
YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgQ1NTTGluZWFyVGltaW5nRnVuY3Rpb25WYWx1ZSgpCiAgICAgICAgIDogQ1NT
VmFsdWUoTGluZWFyVGltaW5nRnVuY3Rpb25DbGFzcykKQEAgLTYxLDYgKzYzLDggQEAgcHVibGlj
OgogICAgIGRvdWJsZSB4MigpIGNvbnN0IHsgcmV0dXJuIG1feDI7IH0KICAgICBkb3VibGUgeTIo
KSBjb25zdCB7IHJldHVybiBtX3kyOyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTQ3Vi
aWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKGRvdWJsZSB4MSwgZG91YmxlIHkxLCBkb3VibGUg
eDIsIGRvdWJsZSB5MikKICAgICAgICAgOiBDU1NWYWx1ZShDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uQ2xhc3MpCkBAIC04OSw2ICs5Myw4IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21D
c3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgQ1NTU3RlcHNUaW1pbmdG
dW5jdGlvblZhbHVlKGludCBzdGVwcywgYm9vbCBzdGVwQXRTdGFydCkKICAgICAgICAgOiBDU1NW
YWx1ZShTdGVwc1RpbWluZ0Z1bmN0aW9uQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vu
aWNvZGVSYW5nZVZhbHVlLmNwcAppbmRleCAyYzJjNDRkMjdhYjU2OGM2YzQ2YmUzM2U1NjI5NjE1
NTUwYTBmYWQzLi45YjBjOTVkOTMzNmFmNjAxNmJjMGRmN2JiNWFjZDk3MjE4MzhmMjM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKQEAgLTI2LDYgKzI2
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NVbmljb2RlUmFuZ2VWYWx1
ZS5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsNCArMzgsOSBAQCBT
dHJpbmcgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgQ1NTVW5pY29kZVJhbmdlVmFsdWU6OnJlcG9ydERlc2Nl
bmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxDU1NVbmljb2RlUmFuZ2VWYWx1ZT4gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7Cit9CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5oIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmgKaW5kZXggNGZlMWRiNzdj
YjMyNjY5MTUwY2RlNTA3OTdmNDFjMzUzZjliNjc2Yi4uZDUwZjViNjgxNWM3Yjc2ZGViYTA1MDFm
OTY4NDRjMmRjZjE2MGY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNv
ZGVSYW5nZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaWNvZGVSYW5nZVZh
bHVlLmgKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBDU1NVbmljb2RlUmFuZ2VWYWx1
ZShVQ2hhcjMyIGZyb20sIFVDaGFyMzIgdG8pCiAgICAgICAgIDogQ1NTVmFsdWUoVW5pY29kZVJh
bmdlQ2xhc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlLmNwcAppbmRleCA1ZmZiMTU2N2U4ODU4OGRhNzU1
NjZjZjg1Zjk0NTYyZDkwOWNlOTQ3Li45OTEyYmFmOWIwMDU4NjU4ZjlhMmUzMjI3MjYyYWM0MGU3
OWViNDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5jcHAKQEAgLTUyLDYgKzUyLDcgQEAKICNlbmRp
ZgogI2luY2x1ZGUgIkZvbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkZvbnRGZWF0dXJlVmFsdWUuaCIK
KyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJTaGFkb3dWYWx1
ZS5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHUGFpbnQuaCIKQEAgLTc3
LDYgKzc4LDEyIEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBjc3NUZXh0KCkgY29uc3QgeyByZXR1
cm4gbV9jc3NUZXh0OyB9CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAorICAgIHsKKyAgICAgICAg
TWVtb3J5Q2xhc3NJbmZvPFRleHRDbG9uZUNTU1ZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaW5mby5hZGRNZW1i
ZXIobV9jc3NUZXh0KTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgVGV4dENsb25lQ1NTVmFsdWUo
Q2xhc3NUeXBlIGNsYXNzVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0KSAKICAgICAgICAgOiBDU1NW
YWx1ZShjbGFzc1R5cGUsIC8qaXNDU1NPTVNhZmUqLyB0cnVlKQpAQCAtMTQxLDYgKzE0OCwxMjYg
QEAgYm9vbCBDU1NWYWx1ZTo6aGFzRmFpbGVkT3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIENTU1ZhbHVlOjpyZXBvcnRNZW1vcnlVc2Fn
ZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAgIGlmICht
X2lzVGV4dENsb25lKSB7CisgICAgICAgIEFTU0VSVChpc0NTU09NU2FmZSgpKTsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8Y29uc3QgVGV4dENsb25lQ1NTVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgQVNTRVJUKCFpc0NTU09NU2FmZSgpIHx8IGlzU3VidHlwZUV4cG9zZWRUb0NTU09N
KCkpOworICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKKyAgICBjYXNlIFByaW1pdGl2ZUNsYXNz
OgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NQcmltaXRpdmVWYWx1ZSo+KHRoaXMpLT5y
ZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIEltYWdlQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENT
U0ltYWdlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9i
amVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDdXJzb3JJbWFnZUNsYXNzOgor
ICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NDdXJzb3JJbWFnZVZhbHVlKj4odGhpcyktPnJl
cG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0
dXJuOworICAgIGNhc2UgQ2FudmFzQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENT
U0NhbnZhc1ZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlP
YmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgQ3Jvc3NmYWRlQ2xhc3M6Cisg
ICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0Nyb3NzZmFkZVZhbHVlKj4odGhpcyktPnJlcG9y
dERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgTGluZWFyR3JhZGllbnRDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29u
c3QgQ1NTTGluZWFyR3JhZGllbnRWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFJhZGlh
bEdyYWRpZW50Q2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU1JhZGlhbEdyYWRp
ZW50VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDdWJpY0JlemllclRpbWluZ0Z1bmN0
aW9uQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb25WYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5
T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIExpbmVhclRpbWluZ0Z1bmN0
aW9uQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0xpbmVhclRpbWluZ0Z1bmN0
aW9uVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTdGVwc1RpbWluZ0Z1bmN0aW9uQ2xh
c3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU1N0ZXBzVGltaW5nRnVuY3Rpb25WYWx1
ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7
CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFzcGVjdFJhdGlvQ2xhc3M6CisgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IENTU0FzcGVjdFJhdGlvVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2Vu
ZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAg
Y2FzZSBCb3JkZXJJbWFnZVNsaWNlQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZvbnRGZWF0
dXJlQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEZvbnRGZWF0dXJlVmFsdWUqPih0
aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBGb250Q2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNv
bnN0IEZvbnRWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5
T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEZvbnRGYWNlU3JjQ2xhc3M6
CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0ZvbnRGYWNlU3JjVmFsdWUqPih0aGlzKS0+
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBGdW5jdGlvbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBDU1NGdW5jdGlvblZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSW5oZXJpdGVkQ2xh
c3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU0luaGVyaXRlZFZhbHVlKj4odGhpcykt
PnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAg
cmV0dXJuOworICAgIGNhc2UgSW5pdGlhbENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25z
dCBDU1NJbml0aWFsVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBSZWZsZWN0Q2xhc3M6
CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IENTU1JlZmxlY3RWYWx1ZSo+KHRoaXMpLT5yZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFNoYWRvd0NsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBTaGFk
b3dWYWx1ZSo+KHRoaXMpLT5yZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0
SW5mbyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFVuaWNvZGVSYW5nZUNsYXNzOgorICAg
ICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NVbmljb2RlUmFuZ2VWYWx1ZSo+KHRoaXMpLT5yZXBv
cnREZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIExpbmVCb3hDb250YWluQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNv
bnN0IENTU0xpbmVCb3hDb250YWluVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBDYWxj
dWxhdGlvbkNsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NDYWxjVmFsdWUqPih0
aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAg
ICAgICByZXR1cm47CisjaWYgRU5BQkxFKENTU19GSUxURVJTKSAmJiBFTkFCTEUoQ1NTX1NIQURF
UlMpCisgICAgY2FzZSBXZWJLaXRDU1NTaGFkZXJDbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8
Y29uc3QgV2ViS2l0Q1NTU2hhZGVyVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisjZW5kaWYKKyNpZiBF
TkFCTEUoQ1NTX1ZBUklBQkxFUykKKyAgICBjYXNlIFZhcmlhYmxlQ2xhc3M6CisgICAgICAgIHN0
YXRpY19jYXN0PGNvbnN0IENTU1ZhcmlhYmxlVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisjZW5kaWYK
KyNpZiBFTkFCTEUoU1ZHKQorICAgIGNhc2UgU1ZHQ29sb3JDbGFzczoKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8Y29uc3QgU1ZHQ29sb3IqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdl
KG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBTVkdQYWludENs
YXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBTVkdQYWludCo+KHRoaXMpLT5yZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UobWVtb3J5T2JqZWN0SW5mbyk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFdlYktpdENTU1NWR0RvY3VtZW50Q2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0
PGNvbnN0IFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisjZW5kaWYK
KyAgICBjYXNlIFZhbHVlTGlzdENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NW
YWx1ZUxpc3QqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVj
dEluZm8pOworICAgICAgICByZXR1cm47CisjaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCisgICAg
Y2FzZSBJbWFnZVNldENsYXNzOgorICAgICAgICBzdGF0aWNfY2FzdDxjb25zdCBDU1NJbWFnZVNl
dFZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShtZW1vcnlPYmplY3RJ
bmZvKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQor
ICAgIGNhc2UgV2ViS2l0Q1NTRmlsdGVyQ2xhc3M6CisgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0
IFdlYktpdENTU0ZpbHRlclZhbHVlKj4odGhpcyktPnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2Fn
ZShtZW1vcnlPYmplY3RJbmZvKTsKKyAgICAgICAgcmV0dXJuOworI2VuZGlmCisgICAgY2FzZSBX
ZWJLaXRDU1NUcmFuc2Zvcm1DbGFzczoKKyAgICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUqPih0aGlzKS0+cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1l
bW9yeU9iamVjdEluZm8pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworfQorCiBTdHJpbmcgQ1NTVmFsdWU6OmNzc1RleHQoKSBjb25zdAogewogICAg
IGlmIChtX2lzVGV4dENsb25lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCmluZGV4IDgzYzJlOGU1NTY2
MzY2YzJjYjE4YzYwNmE1NDA3NzU0ZWEwMGRiMGIuLjA1NzJlMmMxMmIwM2ZiMmIyZTg0OGQzNDVh
MzUwZmMzOWZmZDBmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgTWVtb3J5T2JqZWN0SW5mbzsKIGNsYXNzIFN0
eWxlU2hlZXRDb250ZW50czsKICAgICAKIC8vIEZJWE1FOiBUaGUgY3VycmVudCBDU1NWYWx1ZSBh
bmQgc3ViY2xhc3NlcyBzaG91bGQgYmUgdHVybmVkIGludG8gaW50ZXJuYWwgdHlwZXMgKFN0eWxl
VmFsdWUpLgpAQCAtMTE5LDYgKzEyMCw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzRmFpbGVk
T3JDYW5jZWxlZFN1YnJlc291cmNlcygpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByb3RlY3RlZDoKIAogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgQ2xhc3NUeXBlQml0cyA9IDU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxp
c3QuY3BwCmluZGV4IGI4ZDM2YTQxOWE1NmE3NDM5ZDQzYTRhODNkM2QwNjFiMGRkYWYyOTkuLjJl
ZjNkNTE2ZDNlMjA2YzM1N2RmNWVjMjNhYzU4Nzg3YmEwZDdkODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NWYWx1ZUxpc3QuY3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0
LmgiCiAKICNpbmNsdWRlICJDU1NQYXJzZXJWYWx1ZXMuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAt
MTk2LDQgKzE5NywxMCBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTVmFsdWVMaXN0Ojpj
bG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1ZhbHVlTGlz
dCgqdGhpcykpOwogfQogCit2b2lkIENTU1ZhbHVlTGlzdDo6cmVwb3J0RGVzY2VuZGFudE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAg
TWVtb3J5Q2xhc3NJbmZvPENTU1ZhbHVlTGlzdD4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlz
LCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRW
ZWN0b3IobV92YWx1ZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTVmFsdWVMaXN0LmgKaW5kZXggNDBiYjQzNzk1ZmE4ZDQ2NWUwMzI2Y2QwZGMwMWFlOGUxMmIy
Zjk0Mi4uZTk4OGQ2YzJlNGRkN2QyZWJlN2MzOGQ3MTFjZmM3ZjYzMmQ1MTQ2MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUxpc3QuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IGNsb25lRm9yQ1NTT00oKSBjb25zdDsKIAorICAgIHZv
aWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
KwogcHJvdGVjdGVkOgogICAgIENTU1ZhbHVlTGlzdChDbGFzc1R5cGUsIFZhbHVlTGlzdFNlcGFy
YXRvcik7CiAgICAgQ1NTVmFsdWVMaXN0KGNvbnN0IENTU1ZhbHVlTGlzdCYgY2xvbmVGcm9tKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTVmFyaWFibGVWYWx1ZS5oCmluZGV4IDJjNWI2NmE2Yjk0M2M4OTlk
NzY1M2NjOTMxMzU5ODdiMmZlYzQ5ZGUuLjkzZTBhYTZiNmYwMGUwYzg1Y2U2ZTlmOWQ3Y2M5ZTMz
NGQ5ODA3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYXJpYWJsZVZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhcmlhYmxlVmFsdWUuaApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkNTU1BhcnNlclZhbHVlcy5oIgogI2luY2x1ZGUgIkNTU1Byb3Bl
cnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgorI2luY2x1ZGUgIk1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ4LDEzIEBA
IHB1YmxpYzoKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBt
X25hbWU7IH0KICAgICBjb25zdCBTdHJpbmcmIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZTsgfQogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKKyAgICB7CisgICAgICAgIE1lbW9yeUNsYXNz
SW5mbzxDU1NWYXJpYWJsZVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICAgICAgaW5mby5hZGRNZW1iZXIobV9uYW1lKTsK
KyAgICAgICAgaW5mby5hZGRNZW1iZXIobV92YWx1ZSk7CisgICAgfQorCiBwcml2YXRlOgogICAg
IENTU1ZhcmlhYmxlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogICAgICAgICA6IENTU1ZhbHVlKFZhcmlhYmxlQ2xhc3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5jcHAKaW5kZXggNjJjMzk2MDY4NTk4YWY5MTU4MGY1NWU1YTk0
YTg2OGFhNTFiZjMyYy4uNjlmNTQyZjE0OGU1ZDE4NWM5MTVlM2FmYTA1Zjk5NWE4NmM5ZjJkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVyZVZhbHVlLmNwcApAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgorI2luY2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDksNCArNTAsMTAg
QEAgU3RyaW5nIEZvbnRGZWF0dXJlVmFsdWU6OmN1c3RvbUNzc1RleHQoKSBjb25zdAogICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgRm9udEZlYXR1cmVWYWx1ZTo6cmVw
b3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdElu
Zm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPEZvbnRGZWF0dXJlVmFsdWU+IGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAg
IGluZm8uYWRkTWVtYmVyKG1fdGFnKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmVhdHVy
ZVZhbHVlLmgKaW5kZXggN2Q1ZTAzNmMwOGE2MTgzOTU4NTU2NzI3NTBhNjFlNTQ3YWQ1YzVlYi4u
MjhkODlmNDIzNjliMDhiZWIxNDE2NWI5YWJlYTZhZmZjMzk4MGVkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0ZvbnRGZWF0dXJlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRm9udEZlYXR1cmVWYWx1ZS5oCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBpbnQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgU3RyaW5nIGN1c3RvbUNzc1Rl
eHQoKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBGb250RmVhdHVyZVZhbHVlKGNv
bnN0IFN0cmluZyYsIGludCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKaW5kZXggODg0MWE3
OTkzNWUyZTVhMzM0MWE5ZjM0NWEwNjY0MzVhMDJkNTE1NS4uNjU2YzdkODIzMGM0NGYyNTMyYjZl
M2NlNzNjYTZkYzE5NDIwZGVjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5jcHAKQEAgLTIyLDYg
KzIyLDcgQEAKIAogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkNTU1ByaW1p
dGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CiAKQEAgLTY1LDQgKzY2LDE1IEBAIFN0cmluZyBGb250VmFsdWU6OmN1c3RvbUNzc1RleHQoKSBj
b25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0KIAordm9pZCBGb250VmFsdWU6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxGb250VmFsdWU+IGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHN0eWxlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRl
ZE1lbWJlcih2YXJpYW50KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcih3ZWlnaHQp
OworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKHNpemUpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKGxpbmVIZWlnaHQpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWVt
YmVyKGZhbWlseSk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250VmFsdWUuaAppbmRleCA1ZjgzMzY5MjEw
NTVjMzk4YjE1MmM3Y2IwMzU3Y2JjN2U3N2VkOTNhLi4wM2E2MTI2OGE1ODc0NzBmY2I4YTIxMTJh
OWYwYmM5ZDBhYWU4NDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRWYWx1ZS5oCkBAIC0zOSw2ICszOSw4IEBA
IHB1YmxpYzoKIAogICAgIFN0cmluZyBjdXN0b21Dc3NUZXh0KCkgY29uc3Q7CiAKKyAgICB2b2lk
IHJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisK
ICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHN0eWxlOwogICAgIFJlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFyaWFudDsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHdlaWdo
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcAppbmRleCAwMzkwNDIwNGMyMzExNjY0
Y2MzZDZiOTljZDNkMjYyZjUwY2MwMGViLi5jMjY5YzNiMTY0YTBiMThkZjJlNzNjODI3YjgyODc2
NTRiYjkzYjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCkBAIC0xMTQsNiAr
MTE0LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5RXhwOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIE1lbW9yeUNsYXNzSW5mbzxNZWRp
YVF1ZXJ5RXhwPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRh
dGlvbjo6Q1NTKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX21lZGlhRmVhdHVyZSk7CiAgICAgaW5m
by5hZGRNZW1iZXIobV9zZXJpYWxpemF0aW9uQ2FjaGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVu
dGVkTWVtYmVyKG1fdmFsdWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA4
YTI0ODU5NGQ2MjMxYzNiMGQzNTNmMjM0MWVkMTAzN2FlNDQ3YjA2Li43M2E0MzMyZThhOWQxZjQx
MTEzNjIxYzU2ZTVhMjI4NWJjMDZhMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTM1LDcgKzEzNSw4IEBA
IHZvaWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZShN
ZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPCiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvPFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbj4gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1v
cnlJbnN0cnVtZW50YXRpb246OkNTUyk7CiAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIo
bV9wcm9wZXJ0eVNldCk7Ci0gICAgLy8gRklYTUU6IGFkZCBpbmZvLmFkZEluc3RydW1lbnRlZEhh
c01hcChtX2Nzc29tQ1NTVmFsdWVDbG9uZXMpIHdoZW4gQ1NTVmFsdWUgaXMgaW5zdHJ1bWVudGVk
LgorICAgIGlmIChtX2Nzc29tQ1NTVmFsdWVDbG9uZXMpCisgICAgICAgIGluZm8uYWRkSW5zdHJ1
bWVudGVkTWFwRW50cmllcygqbV9jc3NvbUNTU1ZhbHVlQ2xvbmVzKTsKIH0KIAogdW5zaWduZWQg
UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpsZW5ndGgoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TaGFkb3dWYWx1ZS5jcHAKaW5kZXggMTRjN2NkYThjNTcwYmNiZDdmYjc1NmZiNWVmOWI5YmFm
OTAxM2JiNC4uZGI2NDY2OTJlYWFlNjI0ZWRjZTRiZmNjMWVmODM4ODM5MmU5N2QxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2hhZG93VmFsdWUuY3BwCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiU2hh
ZG93VmFsdWUuaCIKIAogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCisjaW5jbHVkZSAi
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzcsNCArNzgsMTUgQEAgU3RyaW5nIFNoYWRvd1ZhbHVl
OjpjdXN0b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gdGV4dDsKIH0KIAordm9pZCBTaGFk
b3dWYWx1ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPFNoYWRvd1ZhbHVl
PiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NT
KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcih4KTsKKyAgICBpbmZvLmFkZEluc3Ry
dW1lbnRlZE1lbWJlcih5KTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihibHVyKTsK
KyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihzcHJlYWQpOworICAgIGluZm8uYWRkSW5z
dHJ1bWVudGVkTWVtYmVyKHN0eWxlKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihj
b2xvcik7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TaGFkb3dWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKaW5kZXggMjE1NDdhNTcxMWVl
M2VlOGY1NGI1Y2Q5ZjVmYThiNjU5NmY0MjkzZi4uZjJkOGU2ZjZmOThiZjZmZmY2MTRiYzM1MDQ1
NjJkYTIzMmQwMGNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NoYWRvd1ZhbHVlLmgKQEAgLTQ0LDYgKzQ0LDgg
QEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQoKSBjb25zdDsKIAorICAgIHZv
aWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsK
KwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geDsKICAgICBSZWZQdHI8Q1NTUHJpbWl0
aXZlVmFsdWU+IHk7CiAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBibHVyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCmluZGV4IDFlNzhhYWI2NmU1M2IyY2U4M2Ew
NzJiNTA0MWY1ZjdjYzNmNjE0Y2IuLjM3ZDM5NzFiNDEzMzg4NTBmYjg0MWNhMWRiZGFlNmMwMThi
OThlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTEwOTIs
NiArMTA5Miw5IEBAIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVt
b3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uCiAgICAgICAgIGluZm8uYWRkVmVj
dG9yUHRyKG1fbXV0YWJsZVByb3BlcnR5VmVjdG9yKTsKICAgICBlbHNlCiAgICAgICAgIGluZm8u
YWRkUmF3QnVmZmVyKG1fcHJvcGVydGllcywgbV9hcnJheVNpemUgKiBzaXplb2YoQ1NTUHJvcGVy
dHkpKTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IHByb3BlcnR5Q291bnQoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgaW5mby5hZGRJbnN0cnVtZW50
ZWRNZW1iZXIocHJvcGVydHlBdChpKSk7CiB9CiAKIC8vIFNlZSB0aGUgZnVuY3Rpb24gYWJvdmUg
aWYgeW91IG5lZWQgdG8gdXBkYXRlIHRoaXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5j
cHAKaW5kZXggZGQyZDVmOTc4NmY4OGEyZjM0NGZhMGUxMjU5NzIzZDkzNDQzMjI4My4uNmJkZDZl
YjgyNDgxYjdjNmMzNzA0N2E5NTUzNzA2ODQwYWEzOWQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcApAQCAtNTYzNyw2ICs1NjM3LDI0IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6
bG9hZFBlbmRpbmdSZXNvdXJjZXMoKQogI2VuZGlmCiB9CiAKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6
TWF0Y2hlZFByb3BlcnRpZXM6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1l
bW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPFN0eWxlUmVzb2x2
ZXI6Ok1hdGNoZWRQcm9wZXJ0aWVzPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9y
eUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1lbnRlZE1lbWJlcihw
cm9wZXJ0aWVzKTsKK30KKwordm9pZCBTdHlsZVJlc29sdmVyOjpNYXRjaGVkUHJvcGVydGllc0Nh
Y2hlSXRlbTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88U3R5bGVSZXNvbHZlcjo6TWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZUl0ZW0+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkVmVjdG9yKG1h
dGNoZWRQcm9wZXJ0aWVzKTsKK30KKwordm9pZCBNZWRpYVF1ZXJ5UmVzdWx0OjpyZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAoreworICAg
IE1lbW9yeUNsYXNzSW5mbzxNZWRpYVF1ZXJ5UmVzdWx0PiBpbmZvKG1lbW9yeU9iamVjdEluZm8s
IHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6Q1NTKTsKKyAgICBpbmZvLmFkZEluc3RydW1l
bnRlZE1lbWJlcihtX2V4cHJlc3Npb24pOworfQorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlcG9y
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7
CiAgICAgTWVtb3J5Q2xhc3NJbmZvPFN0eWxlUmVzb2x2ZXI+IGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOwpAQCAtNTY0NywxOCArNTY2NSwy
MyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1i
ZXIobV91bmNvbW1vbkF0dHJpYnV0ZVJ1bGVTZXQpOwogICAgIGluZm8uYWRkSGFzaE1hcChtX2tl
eWZyYW1lc1J1bGVNYXApOwogICAgIGluZm8uYWRkSGFzaE1hcChtX21hdGNoZWRQcm9wZXJ0aWVz
Q2FjaGUpOworICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWFwVmFsdWVzKG1fbWF0Y2hlZFByb3Bl
cnRpZXNDYWNoZSk7CiAgICAgaW5mby5hZGRWZWN0b3IobV9tYXRjaGVkUnVsZXMpOwogCi0gICAg
Ly8gRklYTUU6IEluc3RydW1lbnQgU3RhdGljQ1NTUnVsZUxpc3QgYW5kIGFkZCBtX3J1bGVMaXN0
IGhlcmUuCisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRNZW1iZXIobV9ydWxlTGlzdCk7CiAgICAg
aW5mby5hZGRIYXNoTWFwKG1fcGVuZGluZ0ltYWdlUHJvcGVydGllcyk7Ci0gICAgaW5mby5hZGRW
ZWN0b3IobV92aWV3cG9ydERlcGVuZGVudE1lZGlhUXVlcnlSZXN1bHRzKTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZE1hcFZhbHVlcyhtX3BlbmRpbmdJbWFnZVByb3BlcnRpZXMpOworICAgIGlu
Zm8uYWRkSW5zdHJ1bWVudGVkTWVtYmVyKG1fbGluZUhlaWdodFZhbHVlKTsKKyAgICBpbmZvLmFk
ZEluc3RydW1lbnRlZFZlY3RvcihtX3ZpZXdwb3J0RGVwZW5kZW50TWVkaWFRdWVyeVJlc3VsdHMp
OwogICAgIGluZm8uYWRkSGFzaE1hcChtX3N0eWxlUnVsZVRvQ1NTT01XcmFwcGVyTWFwKTsKLSAg
ICBpbmZvLmFkZEhhc2hTZXQobV9zdHlsZVNoZWV0Q1NTT01XcmFwcGVyU2V0KTsKKyAgICBpbmZv
LmFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCk7
CisgICAgaW5mby5hZGRJbnN0cnVtZW50ZWRIYXNoU2V0KG1fc3R5bGVTaGVldENTU09NV3JhcHBl
clNldCk7CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKSAmJiBFTkFCTEUoU1ZHKQogICAgIGluZm8u
YWRkSGFzaE1hcChtX3BlbmRpbmdTVkdEb2N1bWVudHMpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFNU
WUxFX1NDT1BFRCkKICAgICBpbmZvLmFkZEhhc2hNYXAobV9zY29wZWRBdXRob3JTdHlsZXMpOwor
ICAgIGluZm8uYWRkSW5zdHJ1bWVudGVkTWFwRW50cmllcyhtX3Njb3BlZEF1dGhvclN0eWxlcyk7
CiAgICAgaW5mby5hZGRWZWN0b3IobV9zY29wZVN0YWNrKTsKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuaAppbmRleCBlMmFlYjJjMDAxZTc3MjVkZTNmOWNkYTk1ZmM4YTIxMDVm
MTlmYmYzLi5jOWY4ZGNjMmQ4MGE3MDhiOWEyZjEyM2ZkZjE0YzVkMzBlNmUyYTFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICwgbV9yZXN1bHQocmVzdWx0KQogICAgIHsKICAgICB9CisgICAgdm9pZCByZXBvcnRNZW1v
cnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKICAgICBNZWRpYVF1ZXJ5RXhwIG1f
ZXhwcmVzc2lvbjsKICAgICBib29sIG1fcmVzdWx0OwpAQCAtMzIwLDYgKzMyMSw3IEBAIHByaXZh
dGU6CiAKICAgICBzdHJ1Y3QgTWF0Y2hlZFByb3BlcnRpZXMgewogICAgICAgICBNYXRjaGVkUHJv
cGVydGllcygpIDogcG9zc2libHlQYWRkZWRNZW1iZXIoMCkgeyB9CisgICAgICAgIHZvaWQgcmVw
b3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogICAgICAgICAKICAgICAg
ICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHByb3BlcnRpZXM7CiAgICAgICAgIHVuaW9uIHsK
QEAgLTQ0Nyw2ICs0NDksNyBAQCBwcml2YXRlOgogCiAgICAgc3RhdGljIHVuc2lnbmVkIGNvbXB1
dGVNYXRjaGVkUHJvcGVydGllc0hhc2goY29uc3QgTWF0Y2hlZFByb3BlcnRpZXMqLCB1bnNpZ25l
ZCBzaXplKTsKICAgICBzdHJ1Y3QgTWF0Y2hlZFByb3BlcnRpZXNDYWNoZUl0ZW0geworICAgICAg
ICB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKICAgICAg
ICAgVmVjdG9yPE1hdGNoZWRQcm9wZXJ0aWVzPiBtYXRjaGVkUHJvcGVydGllczsKICAgICAgICAg
TWF0Y2hSYW5nZXMgcmFuZ2VzOwogICAgICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJlbmRlclN0
eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU0ZpbHRlclZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5jcHAKaW5kZXgg
MjkxNmRjMmQxNTNiZjNlMjQ0YmNmNjQwOTEyNTlmZTQzMmUwMjBlZS4uNzFkN2I5ZjlmYmMzODEx
Mjg0NGFjZTU1MzY4NmJiODVjNWM4OTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU0ZpbHRlclZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTRmlsdGVyVmFsdWUuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQogCiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTEwLDYgKzExMSwxMiBAQCBQYXNzUmVmUHRyPFdlYktp
dENTU0ZpbHRlclZhbHVlPiBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNv
bnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRDU1NGaWx0ZXJWYWx1ZSgqdGhpcykp
OwogfQogCit2b2lkIFdlYktpdENTU0ZpbHRlclZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5
VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBN
ZW1vcnlDbGFzc0luZm88V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIENTU1ZhbHVlTGlzdDo6
cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKG1lbW9yeU9iamVjdEluZm8pOworfQorCiB9CiAK
ICNlbmRpZiAvLyBFTkFCTEUoQ1NTX0ZJTFRFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTRmlsdGVyVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRD
U1NGaWx0ZXJWYWx1ZS5oCmluZGV4IGEzNGQ1NzQ1YzY1Yzk2NzczZTE2Y2UwNzNiMjE4YjlkYzhk
MTRiOGYuLjA4YjNlOWY5YTUwMjlhODFkNTc4NTgzZDk2NGQ1ODMxN2IyZGZmMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NGaWx0ZXJWYWx1ZS5oCkBAIC02OCw2ICs2OCw4IEBAIHB1
YmxpYzoKIAogICAgIFBhc3NSZWZQdHI8V2ViS2l0Q1NTRmlsdGVyVmFsdWU+IGNsb25lRm9yQ1NT
T00oKSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJLaXRDU1NGaWx0ZXJWYWx1
ZShGaWx0ZXJPcGVyYXRpb25UeXBlKTsKICAgICBXZWJLaXRDU1NGaWx0ZXJWYWx1ZShjb25zdCBX
ZWJLaXRDU1NGaWx0ZXJWYWx1ZSYgY2xvbmVGcm9tKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmNwcAppbmRleCA0OTAyNTA0OTY2YWMzMmNiY2M3
MmYwMTBlN2Q1Mjk4OWQxN2FkNzA0Li5kZjQxYjhkNDBiNTQ2YTk5MzljMDU4ZTc0OGE4MTcwMjk0
MzhiN2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1l
bnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NWR0RvY3VtZW50
VmFsdWUuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2lu
Y2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTYzLDYgKzY0LDEzIEBAIFN0cmluZyBXZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlOjpjdXN0
b21Dc3NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3Vy
bCk7CiB9CiAKK3ZvaWQgV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZTo6cmVwb3J0RGVzY2VuZGFu
dE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7
CisgICAgTWVtb3J5Q2xhc3NJbmZvPFdlYktpdENTU1NWR0RvY3VtZW50VmFsdWU+IGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworICAgIGlu
Zm8uYWRkTWVtYmVyKG1fdXJsKTsKKyAgICAvLyBGSVhNRTogYWRkIG1fZG9jdW1lbnQgd2hlbiBj
YWNoZWQgcmVzb3VyY2VzIGFyZSBpbnN0cnVtZW50ZWQuCit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1dl
YktpdENTU1NWR0RvY3VtZW50VmFsdWUuaAppbmRleCBjYjAzZjU2ZWU1YzNlYzRhMDc4YjUzMTg5
ZTc3NTU3NTA1ZjhkNzM4Li45NmJjYzhjMzBjNDk2MDFiNjcyYzE4NzVjNmQyMDIyNDIzMGU1N2Nk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU1ZHRG9jdW1lbnRWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTVkdEb2N1bWVudFZhbHVlLmgK
QEAgLTQ1LDYgKzQ1LDggQEAgcHVibGljOgogICAgIGNvbnN0IFN0cmluZyYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICBib29sIGxvYWRSZXF1ZXN0ZWQoKSBjb25zdCB7IHJldHVy
biBtX2xvYWRSZXF1ZXN0ZWQ7IH0KIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJLaXRDU1NT
VkdEb2N1bWVudFZhbHVlKGNvbnN0IFN0cmluZyYgdXJsKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5jcHAKaW5kZXggODY1MTc1OGVkNmM5OTE3ZjAyMjQ5MTcx
NWU2YmQ1NTZiNjljNTI2Ny4uNWNhNzczM2I2YTZkOGJlMjY1ZTRhOGE0Mjc0Y2VkZmU4MjBhMDlj
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTU2hhZGVyVmFsdWUuY3BwCkBAIC0z
NSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlN0eWxlQ2FjaGVkU2hhZGVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVQZW5kaW5nU2hhZGVyLmgiCiAKQEAgLTc5LDYgKzgwLDEyIEBAIFN0cmluZyBXZWJL
aXRDU1NTaGFkZXJWYWx1ZTo6Y3VzdG9tQ3NzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuICJ1cmwo
IiArIHF1b3RlQ1NTVVJMSWZOZWVkZWQobV91cmwpICsgIikiOwogfQogCit2b2lkIFdlYktpdENT
U1NoYWRlclZhbHVlOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm88V2ViS2l0
Q1NTU2hhZGVyVmFsdWU+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjpDU1MpOworICAgIGluZm8uYWRkTWVtYmVyKG1fdXJsKTsKK30KKyAgICAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShDU1NfU0hBREVSUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NTaGFkZXJWYWx1ZS5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVlLmgKaW5kZXggZmQ5NWJjNjNjZjdh
YzUwOWNlMzU5ZDA5YjhmYmM5MGUzMTliMTRiNC4uYzQzMjAxY2EyYTRhMTY0YWI5MzYzZDc5NDYy
ZTQyNzU0YzJmYzJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1No
YWRlclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1NoYWRlclZhbHVl
LmgKQEAgLTUwLDYgKzUwLDggQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNzc1RleHQo
KSBjb25zdDsKIAorICAgIHZvaWQgcmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICBXZWJLaXRDU1NTaGFkZXJWYWx1ZShj
b25zdCBTdHJpbmcmIHVybCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWUuY3BwCmluZGV4IDg3ZGVkN2RhNmI1NjYyN2Q1MDdlMWNiMDVjYjMwNjBkYTgw
MDJhOWIuLjFjYjczZmMwOWQ0MDliZjc3MmNkN2I0NmY0MDZkOTc1ZGY2MzkyMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAKICNpbmNsdWRl
ICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTA0LDQgKzEwNSwxMCBAQCBQ
YXNzUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUoKnRoaXMpKTsKIH0KIAordm9pZCBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZTo6cmVwb3J0RGVzY2VuZGFudE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9i
amVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvPFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlPiBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIE1lbW9yeUluc3RydW1lbnRhdGlv
bjo6Q1NTKTsKKyAgICBDU1NWYWx1ZUxpc3Q6OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZSht
ZW1vcnlPYmplY3RJbmZvKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaAppbmRleCA1ZmM0ZjdkNmJmZDVkNGQ2NzZiYWQxZDA4MmQ2YjQ1ZDk0
OWI5NzkyLi5mZDExN2YyMzI5NGJkYTUyMTgyYjIzYWU2MDU2YjNiNzNkOTE4ZDEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaApAQCAtNzQsNiArNzQs
OCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGFzc1JlZlB0cjxXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZT4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnREZXNjZW5kYW50TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcml2YXRlOgogICAgIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlKFRyYW5zZm9ybU9wZXJhdGlvblR5cGUpOwogICAgIFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlKGNvbnN0IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlJiBjbG9uZUZyb20p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA3
ZGNhNWJlZDlkZDk4NTgxNTU1MDMyNWUxMTFhNzhjMTE0MGVkZjA4Li4yOTllNjE0ZmFlZDYxNDg0
YTBiMTI1YTJmNzdhMjJmZjMyZTQ3Y2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMzgsOSArMzgsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB2b2lkIE1lbW9yeUluc3RydW1lbnRhdGlvbjo6YWRkT2JqZWN0KGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCiB7Ci0gICAgaWYgKHN0cmluZy5pc051bGwo
KSB8fCB2aXNpdGVkKHN0cmluZy5pbXBsKCkpKQorICAgIGFkZE9iamVjdChzdHJpbmcuaW1wbCgp
LCBvYmplY3RUeXBlKTsKK30KKwordm9pZCBNZW1vcnlJbnN0cnVtZW50YXRpb246OmFkZE9iamVj
dChjb25zdCBTdHJpbmdJbXBsKiBzdHJpbmdJbXBsLCBPYmplY3RUeXBlIG9iamVjdFR5cGUpCit7
CisgICAgaWYgKCFzdHJpbmdJbXBsIHx8IHZpc2l0ZWQoc3RyaW5nSW1wbCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBjb3VudE9iamVjdFNpemUob2JqZWN0VHlwZSwgc3RyaW5nLmltcGwoKS0+c2l6
ZUluQnl0ZXMoKSk7CisgICAgY291bnRPYmplY3RTaXplKG9iamVjdFR5cGUsIHN0cmluZ0ltcGwt
PnNpemVJbkJ5dGVzKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggODgzNGQzNzY4OTIyOWM5YWQw
YmVmYTM2NDI3ZWUwODU5NWYxOWZlMy4uNmE4ZWM0NWE4MGQ0NzA5N2UwZDg5MmU3ODQ0YWJiZmZi
NTVlNTAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lbW9yeUluc3RydW1lbnRh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZW1vcnlJbnN0cnVtZW50YXRpb24uaApA
QCAtMTAyLDExICsxMDIsMTMgQEAgcHJpdmF0ZToKICAgICAgICAgT3duaW5nVHJhaXRzPFQ+Ojph
ZGRPYmplY3QodGhpcywgdCwgb3duZXJPYmplY3RUeXBlKTsKICAgICB9CiAgICAgdm9pZCBhZGRP
YmplY3QoY29uc3QgU3RyaW5nJiwgT2JqZWN0VHlwZSk7CisgICAgdm9pZCBhZGRPYmplY3QoY29u
c3QgU3RyaW5nSW1wbCosIE9iamVjdFR5cGUpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiB2
b2lkIGFkZEluc3RydW1lbnRlZE9iamVjdChjb25zdCBUJiB0LCBPYmplY3RUeXBlIG93bmVyT2Jq
ZWN0VHlwZSkgeyBPd25pbmdUcmFpdHM8VD46OmFkZEluc3RydW1lbnRlZE9iamVjdCh0aGlzLCB0
LCBvd25lck9iamVjdFR5cGUpOyB9Ci0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgSGFzaE1hcFR5
cGU+IHZvaWQgYWRkSGFzaE1hcChjb25zdCBIYXNoTWFwVHlwZSYsIE9iamVjdFR5cGUsIGJvb2wg
Y29udGVudE9ubHkgPSBmYWxzZSk7CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hTZXRUeXBl
PiB2b2lkIGFkZEhhc2hTZXQoY29uc3QgSGFzaFNldFR5cGUmLCBPYmplY3RUeXBlLCBib29sIGNv
bnRlbnRPbmx5ID0gZmFsc2UpOwogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDb2xsZWN0aW9uVHlw
ZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRDb2xsZWN0aW9uKGNvbnN0IENvbGxlY3Rpb25UeXBlJiwg
T2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZhbHNlKTsKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTWFwVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5
cGUmLCBPYmplY3RUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4gdm9pZCBh
ZGRJbnN0cnVtZW50ZWRNYXBWYWx1ZXMoY29uc3QgTWFwVHlwZSYsIE9iamVjdFR5cGUpOwogICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBMaXN0SGFzaFNldFR5cGU+IHZvaWQgYWRkTGlzdEhhc2hTZXQo
Y29uc3QgTGlzdEhhc2hTZXRUeXBlJiwgT2JqZWN0VHlwZSwgYm9vbCBjb250ZW50T25seSA9IGZh
bHNlKTsKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRWZWN0b3Io
Y29uc3QgVmVjdG9yVHlwZSYsIE9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkgPSBmYWxzZSk7
CiAgICAgdm9pZCBhZGRSYXdCdWZmZXIoY29uc3Qgdm9pZCogY29uc3QmIGJ1ZmZlciwgT2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUsIHNpemVfdCBzaXplKQpAQCAtMTkwLDEwICsxOTIsMTMgQEAg
cHVibGljOgogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEhhc2hNYXBUeXBlPiB2b2lkIGFkZEhh
c2hNYXAoY29uc3QgSGFzaE1hcFR5cGUmIG1hcCkgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+
YWRkSGFzaE1hcChtYXAsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgSGFzaFNldFR5cGU+IHZvaWQgYWRkSGFzaFNldChjb25zdCBIYXNoU2V0VHlwZSYgc2V0
KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBl
LCB0cnVlKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRI
YXNoQ291bnRlZFNldChjb25zdCBIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLT5hZGRIYXNoU2V0KHNldCwgbV9vYmplY3RUeXBlLCB0cnVlKTsgfQogICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBIYXNoU2V0VHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRIYXNoU2V0KGNv
bnN0IEhhc2hTZXRUeXBlJiBzZXQpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZEluc3Ry
dW1lbnRlZENvbGxlY3Rpb24oc2V0LCBtX29iamVjdFR5cGUsIHRydWUpOyB9CiAgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRkSW5zdHJ1bWVudGVkVmVjdG9yKGNvbnN0
IFZlY3RvclR5cGUmIHZlY3RvcikgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1
bWVudGVkQ29sbGVjdGlvbih2ZWN0b3IsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0cnVtZW50ZWRWZWN0b3JQdHIo
Y29uc3QgT3duUHRyPFZlY3RvclR5cGU+JiB2ZWN0b3IpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oKnZlY3RvciwgbV9vYmplY3RUeXBlLCBmYWxz
ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRJbnN0cnVt
ZW50ZWRWZWN0b3JQdHIoY29uc3QgVmVjdG9yVHlwZSogY29uc3QmIHZlY3RvcikgeyBtX21lbW9y
eUluc3RydW1lbnRhdGlvbi0+YWRkSW5zdHJ1bWVudGVkQ29sbGVjdGlvbigqdmVjdG9yLCBtX29i
amVjdFR5cGUsIGZhbHNlKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPiB2b2lk
IGFkZEluc3RydW1lbnRlZE1hcEVudHJpZXMoY29uc3QgTWFwVHlwZSYgbWFwKSB7IG1fbWVtb3J5
SW5zdHJ1bWVudGF0aW9uLT5hZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKG1hcCwgbV9vYmplY3RU
eXBlKTsgfQorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPiB2b2lkIGFkZEluc3RydW1l
bnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBtYXApIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRp
b24tPmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhtYXAsIG1fb2JqZWN0VHlwZSk7IH0KICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPiB2b2lkIGFkZExpc3RIYXNoU2V0KGNv
bnN0IExpc3RIYXNoU2V0VHlwZSYgc2V0KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRM
aXN0SGFzaFNldChzZXQsIG1fb2JqZWN0VHlwZSwgdHJ1ZSk7IH0KICAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVmVjdG9yVHlwZT4gdm9pZCBhZGRWZWN0b3IoY29uc3QgVmVjdG9yVHlwZSYgdmVjdG9y
KSB7IG1fbWVtb3J5SW5zdHJ1bWVudGF0aW9uLT5hZGRWZWN0b3IodmVjdG9yLCBtX29iamVjdFR5
cGUsIHRydWUpOyB9CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFZlY3RvclR5cGU+IHZvaWQgYWRk
VmVjdG9yUHRyKGNvbnN0IFZlY3RvclR5cGUqIGNvbnN0IHZlY3RvcikgeyBtX21lbW9yeUluc3Ry
dW1lbnRhdGlvbi0+YWRkVmVjdG9yKCp2ZWN0b3IsIG1fb2JqZWN0VHlwZSwgZmFsc2UpOyB9CkBA
IC0yMDEsNiArMjA2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRNZW1iZXIoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpIHsgbV9tZW1vcnlJbnN0cnVtZW50YXRpb24tPmFkZE9iamVjdChzdHJpbmcs
IG1fb2JqZWN0VHlwZSk7IH0KICAgICB2b2lkIGFkZE1lbWJlcihjb25zdCBBdG9taWNTdHJpbmcm
IHN0cmluZykgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0KChjb25zdCBTdHJp
bmcmKXN0cmluZywgbV9vYmplY3RUeXBlKTsgfQorICAgIHZvaWQgYWRkTWVtYmVyKGNvbnN0IFN0
cmluZ0ltcGwqIHN0cmluZykgeyBtX21lbW9yeUluc3RydW1lbnRhdGlvbi0+YWRkT2JqZWN0KHN0
cmluZywgbV9vYmplY3RUeXBlKTsgfQogCiBwcml2YXRlOgogICAgIE1lbW9yeU9iamVjdEluZm8q
IG1fbWVtb3J5T2JqZWN0SW5mbzsKQEAgLTMwNiw2ICszMTIsMjQgQEAgdm9pZCBNZW1vcnlJbnN0
cnVtZW50YXRpb246OmFkZEluc3RydW1lbnRlZENvbGxlY3Rpb24oY29uc3QgQ29sbGVjdGlvblR5
cGUmIGNvbGwKICAgICAgICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KCppLCBvd25lck9iamVjdFR5
cGUpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwVHlwZT4KK3ZvaWQgTWVtb3J5SW5zdHJ1
bWVudGF0aW9uOjphZGRJbnN0cnVtZW50ZWRNYXBFbnRyaWVzKGNvbnN0IE1hcFR5cGUmIG1hcCwg
T2JqZWN0VHlwZSBvd25lck9iamVjdFR5cGUpCit7CisgICAgdHlwZW5hbWUgTWFwVHlwZTo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOworICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6
Y29uc3RfaXRlcmF0b3IgaSA9IG1hcC5iZWdpbigpOyBpICE9IGVuZDsgKytpKSB7CisgICAgICAg
IGFkZEluc3RydW1lbnRlZE9iamVjdChpLT5maXJzdCwgb3duZXJPYmplY3RUeXBlKTsKKyAgICAg
ICAgYWRkSW5zdHJ1bWVudGVkT2JqZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBNYXBUeXBlPgordm9pZCBNZW1vcnlJbnN0cnVt
ZW50YXRpb246OmFkZEluc3RydW1lbnRlZE1hcFZhbHVlcyhjb25zdCBNYXBUeXBlJiBtYXAsIE9i
amVjdFR5cGUgb3duZXJPYmplY3RUeXBlKQoreworICAgIHR5cGVuYW1lIE1hcFR5cGU6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1hcC5lbmQoKTsKKyAgICBmb3IgKHR5cGVuYW1lIE1hcFR5cGU6OmNv
bnN0X2l0ZXJhdG9yIGkgPSBtYXAuYmVnaW4oKTsgaSAhPSBlbmQ7ICsraSkKKyAgICAgICAgYWRk
SW5zdHJ1bWVudGVkT2JqZWN0KGktPnNlY29uZCwgb3duZXJPYmplY3RUeXBlKTsKK30KKwogdGVt
cGxhdGU8dHlwZW5hbWUgTGlzdEhhc2hTZXRUeXBlPgogdm9pZCBNZW1vcnlJbnN0cnVtZW50YXRp
b246OmFkZExpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0VHlwZSYgaGFzaFNldCwgT2JqZWN0
VHlwZSBvd25lck9iamVjdFR5cGUsIGJvb2wgY29udGVudE9ubHkpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bG9yLmNwcAppbmRleCAyNTcyYjdiYmZlMjlmYzIxNmI4YWU4YTY5YzNjYjRkMmU4N2EzMWFkLi4w
ZWRlZDYxMWM4ZjhhYWJlYTQ0MmYwMTQ2M2JkMDI0MjBlYTQ3MmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
b2xvci5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdDb2xvci5oIgogCiAjaW5j
bHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiUkdCQ29sb3IuaCIKICNpbmNsdWRlICJTVkdFeGNlcHRpb24uaCIKIApAQCAtMTA0
LDYgKzEwNSwxMSBAQCBQYXNzUmVmUHRyPFNWR0NvbG9yPiBTVkdDb2xvcjo6Y2xvbmVGb3JDU1NP
TSgpIGNvbnN0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdDb2xvcihTVkdDb2xvckNsYXNz
LCAqdGhpcykpOwogfQogCit2b2lkIFNWR0NvbG9yOjpyZXBvcnREZXNjZW5kYW50TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm88U1ZHQ29sb3I+IGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5
SW5zdHJ1bWVudGF0aW9uOjpDU1MpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ29sb3IuaAppbmRleCBjZmZhYzUzODVlMjE1MTljNjI4ODE1YWM5MzIxNmE2MzMz
NTA4OTc0Li43ZGRkY2Q3YTk0NDRiMTFjZDg1NjU0OWEzMjQ5NWJmZjFlOTBkYzVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29sb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29sb3IuaApAQCAtNzUsNiArNzUsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgUGFzc1Jl
ZlB0cjxTVkdDb2xvcj4gY2xvbmVGb3JDU1NPTSgpIGNvbnN0OwogCisgICAgdm9pZCByZXBvcnRE
ZXNjZW5kYW50TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OworCiBwcm90ZWN0
ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYWludC5jcHAKaW5kZXggOGNmM2Q3ZTU2ODIyZWFjZTFhYzEzYjJmZWMyODRlZDhl
ZjczYThlMC4uOWM2NTViM2NlZjZmMDU0ODA1MzIzNDBmM2NjMDAyY2FkY2ZjZTE4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGFpbnQuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAjaWYgRU5BQkxFKFNWRykKICNp
bmNsdWRlICJTVkdQYWludC5oIgogCisjaW5jbHVkZSAiTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiU1ZHRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiU1ZHVVJJUmVmZXJlbmNlLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTEsNiArMTEyLDEyIEBAIFBh
c3NSZWZQdHI8U1ZHUGFpbnQ+IFNWR1BhaW50OjpjbG9uZUZvckNTU09NKCkgY29uc3QKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFNWR1BhaW50KCp0aGlzKSk7CiB9CiAKK3ZvaWQgU1ZHUGFpbnQ6
OnJlcG9ydERlc2NlbmRhbnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAoreworICAgIE1lbW9yeUNsYXNzSW5mbzxTVkdQYWludD4gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkNTUyk7CisgICAgaW5m
by5hZGRNZW1iZXIobV91cmkpOworfQorCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGFpbnQuaAppbmRleCBiMDUzY2JkNzc3OGM3YTE5MDJhZWZhNWQ2ZWUwOWRlODdmOGIz
YjkzLi5hYzU2NzViNTllZGUwYzliOTBmNzFkYTNjOGU2MmM3ZWU5N2VkZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGFpbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGFpbnQuaApAQCAtOTUsNiArOTUsOCBAQCBwdWJsaWM6CiAKICAgICBQYXNzUmVmUHRyPFNW
R1BhaW50PiBjbG9uZUZvckNTU09NKCkgY29uc3Q7CiAKKyAgICB2b2lkIHJlcG9ydERlc2NlbmRh
bnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAg
ZnJpZW5kIGNsYXNzIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjsKIAo=
</data>
<flag name="review"
          id="166399"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>